Oracle 11g Broken Materialized视图:停止刷新而不删除视图或刷新视图?

时间:2016-11-08 10:27:52

标签: database oracle oracle11g

所以我有一个整体观点(我知道......):

CREATE MATERIALIZED VIEW vw_my_view_here
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE + 1/24 AS 
/*huge-ass select statement here*/
UNION ALL
/*huge-ass select statement here*/
UNION ALL
/*huge-ass select statement here*/
UNION ALL
/*huge-ass select statement here*/

这已经在我们的系统中存在了一段时间而没有引起问题。其中一个选择查询被破坏(以某种方式 - 基础表中的模式更改)并且已经连续24小时运行并消耗所有盒子资源。这是盒子上其他东西的问题。

我无法删除或修改视图 - 因为它完全没有记录(我知道......)而且我需要弄清楚谁先消耗它,它是如何填充的等等。

我试图杀死正在处理查询的进程,但似乎另一个查询会立即被解雇。

如何在没有1)放弃视图的情况下停止物化视图,以及(2)不刷新视图(因为这需要24小时以上和我们所有的盒子资源)。

我试过了

 alter materialized view view_name refresh on demand;

但它似乎只是无休止地运行,对原始的大规模查询没有影响。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

altering the refresh settings的文档说:

  

此子句仅设置默认刷新选项。有关实际实现刷新的说明,请参阅Oracle Database Advanced Replication和Oracle Database Data Warehousing Guide。

所以你的alter materialized view语句本身没有刷新。它只是等待当前排除的刷新完成才能更新该视图的数据字典。当前刷新完成(或终止)后,alter将完成,并阻止进一步自动刷新。