ORA-12097: changes in the master tables during refresh, try refresh again
Cause: There are some changes (i.e., conventional DML, direct load, partition maintenance operation) in the master tables during materialized view refresh.
Action: Refresh the affected materialized views again.
ORA-12097 是Oracle数据库在使用MV刷新过程中遇到的一个常见错误,该问题在Oracle10g和Oracle11g中均存在,这是Oracle在执行REFRESH函数时发出的通用的错误消息。按照Oracle官方的说明,ORA-12097(“在刷新中对主表进行了更改”)消息表明在使用MV刷新过程中,当基本表被更新或者数据库进行了变换时,该问题就发生了,其中可能的现象及措施为
1. 如果没有明显的错误,可能是由于系统更改或者外部更改带来的基本表变更,此时可以考虑对MV进行手动刷新,如果刷新失败,可以考虑使用特定的参数来修正数据库,例如:
SQL> alter materialized view mv_x refresh force;
2. 如果错误信息显示在特定表上发生了变更等,例如发生删除操作,可能影响MV的刷新进程,此时可以先尝试手动刷新MV,如果还是发生错误,可以尝试更新数据库,以让其能够恢复原状。
(1)首先利用命令“desc errorstack”来得到ORA-12097的完整报错信息,该命令可以显示根本原因是什么。
(2)查看失败的查询,并检查发生更改的原因,是否是由于系统更改或外部更改导致了基本表被更新了。
(3)根据失败原因对MV进行手动刷新,但如果仍然刷新失败,您可以考虑使用特定参数来进行刷新,但需要小心该操作的副作用龗。
(4)如果失败的原因发生了删除操作,最好是更新数据库,以让其再次回到原始状态,然后重新进行刷新。