关于逻辑DG表不同步同步异常可以利用 dbms_logstdby 包跳过表

1> 检查逻辑DG事件,确认是否存在异常
select * from dba_logstdby_events order by event_time desc;
说明:如果status报错,event列有详细的触发操作语句,常见的多数是主库有新的DDL语句
2> 同步进程是否存在,一般异常终止,同步进程是不存在的
SELECT * FROM v$logstdby_process;
3> 查看日志是否都已经同步完成
select sequence#,applied from dba_logstdby_log order by sequence# desc ;

1> 同步进程不存在,主库数据没有同步到备库
select * from dba_logstdby_events order by event_time desc;
说明:查看报错信息和导致报错的事件,进行跳过处理
--停止数据库日志应用
alter database stop logical standby apply;
--跳过DML操作
begin
DBMS_LOGSTDBY.SKIP('DML','CXF','TMP_SAME_FILE'); --注意,表名要大写哦,否则还会报错的
end;
--跳过DDL
begin
DBMS_LOGSTDBY.SKIP('SCHEMA_DDL','CUECM','TMP_1024');--注意,表名要大写哦,否则还会报错的
end;
--在主库端对索引做ANALYZE,如果索引在备库不存在,也会导致DG同步异常中断,这个时候就不能用DDL和
DML两种跳过了,必须用下面这种方法跳过
--跳过ANALYZE TABLE操作
begin
DBMS_LOGSTDBY.SKIP('ANALYZE TABLE','%','%',NULL);
end;
--跳过ANALYZE INDEX操作
begin

DBMS_LOGSTDBY.SKIP('ANALYZE INDEX','%','%', NULL);
end;
--启动应用日志
alter database start logical standby apply immediate;
2> 同步进程存在,其它表都能同步,个别表无法同步
这种情况,很可能是设置了表级别的对像跳过,可以通过以查查询确认是否手动设置跳过同步
select * from DBA_LOGSTDBY_SKIP;
然后通过DBMS_LOGSTDBY.UNSKIP()重新同步

三、无法在逻辑DG端进行DDL和DML操作

 --进行DML操作前
alter session disable guard;
--操作过后
alter session enable guard;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值