ORA-08103: 对象不再存在 - 物化视图

Posted

技术标签:

【中文标题】ORA-08103: 对象不再存在 - 物化视图【英文标题】:ORA-08103: object no longer exists - Materialized view 【发布时间】:2018-11-26 11:32:58 【问题描述】:

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

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

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

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

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

干杯

【问题讨论】:

如何刷新MV? 正如我在问题描述中所说的“我不知道物化视图何时刷新(谁或什么需要刷新)”。许多进程都在后面运行。我没有数据库管理员权限,所以我无法检查。我想知道改变物化视图的刷新模式是否可以解决问题。 这个问题无论如何都与 Oracle 进行截断有关,基本上是从查询的脚下踢掉所有数据。 OraFaq.com 有一种可能的解决方案。提出问题的人通过向刷新组添加一个额外的虚拟视图来解决它以防止这种情况。也可能有其他方法。 【参考方案1】:

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

需要将DBMS_MVIEW.REFRESHatomic_refresh参数设置为true

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

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

【讨论】:

以上是关于ORA-08103: 对象不再存在 - 物化视图的主要内容,如果未能解决你的问题,请参考以下文章

具有函数 ORA-08103 的 Oracle 存储过程

Oracle ORA-06512&ORA-08103对象已不存在

Oracle ORA-06512&ORA-08103对象已不存在

物化视图

物化视图基础概念mview跨库迁移表

数据泵导出导入物