物化视图在NEEDS_COMPILE状态下刷新

问题描述 投票:0回答:1

我是DB的新鲜蜜蜂。我们的prod服务器中有大量的Materialized-view。通过作业在存储过程中每3小时手动刷新所有视图。

在MV刷新发生的过去几周有一个问题,DB进入了Peek IO操作。 CPU利用率变大导致速度缓慢。

后来我们注意到,由于过去在核心表上进行了一些DML / DDL操作,大多数MV都处于NEED_COMPILE状态。当此状态发生实际刷新时,发现“找不到对象”错误。

请告诉我连接点以了解问题,

  • 这种情况会导致偷看IO操作吗?
  • 当MV本身处于NEED_COMPILE状态时,MV日志会发生什么?
  • 当实际MV处于NEED_COMPILE状态时,MV日志是否导致IO操作?
database oracle database-performance materialized-views
1个回答
0
投票

当您对主表执行DML / DDL操作时,转换到NEEDS_COMPILE状态是预期的行为。使用“REFRESH ON COMMIT”会得到不同的行为,因为这些MV与DML同时刷新。在该状态下,可以读取物化视图,但当然无法看到更新的记录。至于性能问题,请确保MV日志已正确编入索引(通常需要M_ROW $$和XID $$上的索引,其中XID $$替换自Oracle 11gR2以来的SNAPTIME $$)。可能需要更多索引来提高性能。至于“找不到对象”错误,您必须提交有关Oracle版本和您获得的确切日志的详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.