故障背景
数据迁移搭建DG,备库FAILOVER后,删除备库物化视图,主库物化视图增量刷新时发生报错ORA-12034。
故障现象
dg数据库failover后,主库物化视图增量刷新时,报错ORA-12034
SQL> exec dbms_mview.refresh('"XXX"."MV_XXXXX"','f');
BEGIN dbms_mview.refresh('"XXX"."MV_XXXXX"','f'); END;
*
ERROR at line 1:
ORA-12034: materialized view log on "XXX"."XXXXX" younger than last refresh
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 2952
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 2370
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 85
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 245
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 2352
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 2908
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 3191
ORA-06512: at "SYS.DBMS_SNAPSHOT_KKXRCA", line 3221
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 15
ORA-06512: at line 1
复制
故障后解决方案
全量刷新,建议采用非原子性全量刷新方式,减少undo占用:
truncate table XXX.MV_XXXXX;
exec dbms_mview.refresh('"XXX"."MV_XXXXX"','c');
复制
事后分析
如果在与主表数据库相同的网络上克隆并重命名物化视图数据库,并且在克隆库上删除了物化视图,那么在原始物化视图数据库上刷新物化视图可能会报错ORA-12034而失败。这是因为在克隆站点上删除物化视图会导致物化视图在主站点上变为未注册状态,因此需要完全刷新。克隆物化视图站点后,应该先删除到主站点的数据库链接,然后再删除任何物化视图。
在克隆数据库中删除和重新创建的物化视图之前执行快速刷新,可能会导致原始数据库中的ORA-12034,因为原始数据库和克隆数据库具有相同的snapshot_id。
在克隆数据库中重新创建物化视图后,它就有了自己的snapshot_id,并且不会影响原始数据库。
预防方法
FAILOVER后删除dblink
FAILOVER后删除物化视图用到的dblink
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
col owner for a30
col mview_name for a40
col master_link for a40
set lines 200
select owner,mview_name,MASTER_LINK,REWRITE_ENABLED,ON_QUERY_COMPUTATION,COMPILE_STATE from dba_mviews where mview_name in ('MV_XXXXX');
drop database link xxx;
复制
重建物化视图
重新创建物化视图,让其新生成snapshot_id
物化视图源端使用如下方法可以查询到存在的snapshot_id
set lines 200
col log_owner for a20
col master for a30
col log_table for a30
col log_trigger for a30
select log_owner,master,log_table,primary_key,SNAPSHOT_ID,CURRENT_SNAPSHOTS from dba_snapshot_logs order by CURRENT_SNAPSHOTS;
复制
扩展
如需清理历史的snapshot_id,可以使用如下方法。也可以重建物化视图日志。
BEGIN
DBMS_SNAPSHOT.PURGE_MVIEW_FROM_LOG(&his_s_id);
END;
/
复制
参考文档
Diagnosing ORA-12034 Materialized View Log Younger Than Last Refresh (Doc ID 204127.1)
Materialized View Refresh : Log Population and Purge (Doc ID 236233.1)
订阅号:DongDB手记
墨天轮:https://www.modb.pro/u/231198
最后修改时间:2023-08-30 09:54:11
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。