Database Oracle 11g损坏的物化视图:停止刷新而不删除视图或刷新视图?

Database Oracle 11g损坏的物化视图:停止刷新而不删除视图或刷新视图?,database,oracle,oracle11g,Database,Oracle,Oracle11g,所以我有一个物质化的观点(我知道…): 这在我们的系统中已经存在了一段时间,但没有引起问题。其中一个select查询被破坏(可能是基础表中的模式更改),并且已经连续运行了24小时并消耗了所有的Box资源。这是盒子上其他东西的问题 我不能删除或修改视图-因为它完全没有文档记录(我知道…),我需要先弄清楚谁使用它,它是如何填充的,等等 我试图终止处理该查询的进程,但之后似乎会立即触发另一个查询 我如何停止物化视图而不1)删除视图和(2)不刷新视图(因为这需要24小时以上的时间和我们所有的框资源) 我

所以我有一个物质化的观点(我知道…):

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

我不能删除或修改视图-因为它完全没有文档记录(我知道…),我需要先弄清楚谁使用它,它是如何填充的,等等

我试图终止处理该查询的进程,但之后似乎会立即触发另一个查询

我如何停止物化视图而不1)删除视图和(2)不刷新视图(因为这需要24小时以上的时间和我们所有的框资源)

我试过跑步

 alter materialized view view_name refresh on demand;
但它似乎只是无休止地运行,对原始的大规模查询没有任何影响

有什么想法吗

的文档说明:

此子句仅设置默认刷新选项。有关实际实施刷新的说明,请参阅《Oracle数据库高级复制和Oracle数据库数据仓库指南》


因此,您的
alterMaterializedView
语句本身并没有进行刷新。它只是等待当前执行的刷新完成,然后才能更新该视图的数据字典。当前刷新完成(或终止)后,
alter
将完成并阻止进一步的自动刷新启动。

您是否在运行
alter
时终止了当前的刷新过程(不确定这听起来是个好主意,但是…)?我怀疑它正在等待当前刷新完成,然后才能真正更改刷新周期,而不是尝试刷新本身。由于您没有在提交时指定
按需
(尤其是因为您有一个
开始
),因此您的mview已按需刷新。是否设置了执行刷新的计划作业?如果是这样的话,试着禁用它。@AlexPoole你把它钉在了一个。在“按需刷新”时终止刷新进程正在运行的命令解决了该问题。我甚至没有想到排队的过程,所以这种行为看起来很混乱。谢谢你的帮助@Boneist将物化视图设置为“按需刷新”似乎解决了这个问题。“刷新完成从SYSDATE开始,下一个SYSDATE+1/24为”是否像我所想的那样将视图设置为每隔一段时间刷新?@Paul每小时一次。日期间隔以天为单位,因此一小时是一天的1/24。在“按需刷新”正在运行时(或者更具体地说,在等待运行时)终止当前查询过程,以便在重试更新之前更新刷新设置,这是对我有效的解决方案。你对这些东西有很好的嗅觉!再次感谢你!
 alter materialized view view_name refresh on demand;