首页 > 解决方案 > ORA-08103: 对象不再存在 - 物化视图

问题描述

我从引用物化视图 (mview1) 的标准视图 (view1) 中进行选择。标准视图使用“FORCE”选项创建,物化视图创建“REFRESH COMPLETE ON DEMAND”。由于我不知道何时刷新物化视图(谁或什么需要刷新),我无法避免在普通视图查询中使用它的同时刷新物化视图。

当这种情况同时发生时,针对 view1 的查询会出错:

消息:ORA-08103:对象不再存在

我认为在物化视图中将“COMPLETE”选项更改为“FORCE”选项可以防止发生此错误。

如果您能对此有所了解和/或提供解决方案,将不胜感激。

干杯

标签: sqldatabaseoracleviewmaterialized-views

解决方案


首先不要删除并创建物化视图,使用DBMS_MVIEW.REFRESH过程刷新它 - DROP 是导致ORA-08103: object no longer exists

您需要将 的atomic_refresh参数设置DBMS_MVIEW.REFRESHtrue

这将在单个事务中刷新物化视图,因此物化视图永远不会为空。

从技术上讲DELETE, aINSERTcommit是在物化视图表上执行的,所以在提交之前,您会看到旧状态,在提交新状态之后。


推荐阅读