我将物化视图设置为按需刷新:
CREATE MATERIALIZED VIEW XYZ
REFRESH COMPLETE ON DEMAND
AS
SELECT * FROM ABC WHERE LAST_UPD > SYSDATE-30;
当我运行刷新程序时,它每两天就会失败。
刷新命令:
dbms_mview.refresh(list => 'XYZ',
method => 'C',
parallelism => 0,
atomic_refresh => false);
错误:
1 - 合并错误:ORA-12008:物化视图刷新路径中的错误 ORA-01555:快照太旧:回滚段号406,名称为“_SYSSMU406_3487494604 $”太小 ORA-02063:来自IJSFASIEBEL的前一行
我已经读过使用select *创建Materialized视图会导致此错误, 但是我已经放弃了视图并重新创建了很多次,刷新一天运行良好,第二天就错了。 没有对基表进行任何更改。
有人能告诉我错误信息的含义或可能导致问题的原因吗?
答案 0 :(得分:0)
问题是,如果同时在数据库上发生其他更新,则回滚段对于正在运行的查询来说不够大。
这里有一个完整的讨论:
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:275215756923
可能的解决方案: -
答案 1 :(得分:0)
Pratheek Ponnuru,
请检查表格中是否有任何LOB,检查是否有腐败。 如果LOB被破坏,那么这个错误过去...... 我最近遇到过同样的问题,我检查了表中所有lobs的损坏情况 在进一步调查后发现了一些损坏的吊球段,后来我将其设置为blob_null()。
- Milind Kale