在dmhs做异构数据库之间的同步时,往往会发生一些故障,需要在研发的指导下重演归档进行问题定位分析;为了提高效率,最好是从发生故障的哪个位置开始重演归档,这样可以尽快的复现问题;
以云南某项目现场为例,源端是部署在AIX小机上的2节点RAC集群,数据库为ORACLE11G,目的端为3节点DMDSC集群,部署在海光和麒麟V10环境中;
一、可以根据时间判断,从指定时间段开始重演归档日志。在源端通过语句查询指定时间点的归档SCN号,查询语句如下:
select first_change# from v$archived_log where first_time <‘2023-xxxxx’ and next_time>‘2023XXXX’;
例如:查询2023-01-03 11:30:00时刻的归档日志
select first_change# from v$archived_log where first_time<to_date(‘2023-01-03 11:30:00’,‘yyyy-mm-dd hh24:mi:ss’) and next_time >to_date(‘2023-01-03 11:30:00’,‘yyyy-mm-dd hh24:mi:ss’)
通过该语句可以查询出指定时间点对应的SCN号,如果查询出来的值有多个,选择最大值即可。可以让dmhs从指定的SCN号继续往后重演归档日志;
二、dmhs从指定scn号重演归档日志
1、到目的端dmhs账号下,查询select * from dmhs_checkpoint_table
语句。根据站点号,把scn号修改为指定scn号;
2、到源端实例目录的bin目录下,找到dmhs.conf、dmhs_bak.conf、dmhs_10_0.ini(10为站点号)文件,把这三个文件移走或者删除。重启后会重新生成这三个配置文件。当然也可以直接修改,把源端dmhs.conf里面的ckpt_0_lsn改成查出来的那个值。
3、在修改时,需要把源端和目标端都先停掉。修改完成后,重启目标端和源端dmhs就从指定的scn好重演归档日志。
三、通过dmhs的日志信息,或者通过调试信息获取对应故障点的开始执行lsn执行号,通过执行号查找源端对应的归档日志文件。
1、在源端通过lsn查询对应的归档日志文件
select name from v$archived_log where first_change#<477125772549 and next_change#>477125772549
2、dump出对应归档日志文件的信息
alter system dump logfile ‘查询出来的name值’ scn min 477125772500 scn max 477125772588;
3、到$ORACLE_BASE/diag/rdbms/xxx/xx/trace目录下,找到中间一部分是ora的,结尾是trc的文件。根据研发要求找到对应的值,并提供给研发即可。如下图:
四、目标端通过在dmhs控制台trace跟踪同步过程,定位分析问题;
1、跟踪指定表
目的端执行trace命令:trace siteid 表名.模式名
2、跟踪大字段同步情况
目的端执行trace命令:trace siteid lob
3、目标执行以上两个命令然后执行同步操作,在目的端看新生成的trace文件记录。
4、deltrace命令,停止trace跟踪操作。
五、dmhs通过执行码升级时,在调试的过程中一般先通过debug里面的bin包升级替换原来bin目录下的文件;在确认没有问题后,在使用relase里面bin包升级替换原来bin目录下的文件;
注意:升级替换执行码是,需要替换/opt/dmhs/bin和dmhs实例里面的执行码,两个地方都进行替换即可。
文章
阅读量
获赞