暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

故障案例--物化视图增量刷新报错ORA-12034

故障背景

数据迁移搭建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
image.png

最后修改时间:2023-08-30 09:54:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论