sql - ORA-08103: 对象不再存在 - 物化视图
问题描述
我从引用物化视图 (mview1) 的标准视图 (view1) 中进行选择。标准视图使用“FORCE”选项创建,物化视图创建“REFRESH COMPLETE ON DEMAND”。由于我不知道何时刷新物化视图(谁或什么需要刷新),我无法避免在普通视图查询中使用它的同时刷新物化视图。
当这种情况同时发生时,针对 view1 的查询会出错:
消息:ORA-08103:对象不再存在
我认为在物化视图中将“COMPLETE”选项更改为“FORCE”选项可以防止发生此错误。
如果您能对此有所了解和/或提供解决方案,将不胜感激。
干杯
解决方案
首先不要删除并创建物化视图,使用DBMS_MVIEW.REFRESH
过程刷新它 - DROP 是导致ORA-08103: object no longer exists
您需要将 的atomic_refresh
参数设置DBMS_MVIEW.REFRESH
为true
。
这将在单个事务中刷新物化视图,因此物化视图永远不会为空。
从技术上讲DELETE
, aINSERT
和commit
是在物化视图表上执行的,所以在提交之前,您会看到旧状态,在提交新状态之后。