【问题标题】:How can I tell if a Materialized View in Oracle is being used?如何判断是否正在使用 Oracle 中的物化视图?
【发布时间】:2009-11-26 19:57:59
【问题描述】:

我们的 Oracle 9i 数据库中有一些物化视图是很久以前由一个不再在这里工作的人创建的。是否有一种简单(或任何)方法可以确定 Oracle 是否使用这些视图来服务查询?如果它们不再被使用,我们希望摆脱它们。但是我们不想在这些视图是允许一些随机报告在不到几个小时内运行的事实之后发现。我梦寐以求的答案会是

SELECT last_used_date FROM dba_magic
WHERE materialized_view_name = 'peters_mview'

更棒的是,它可以告诉我哪些实际的 SQL 查询正在使用物化视图。我意识到我可能不得不接受更少。

如果有需要 10g 的解决方案,我们很快就会升级,所以这些答案也会很有用。

【问题讨论】:

    标签: oracle oracle9i materialized-views


    【解决方案1】:

    一旦按照文档进行配置,Oracle 审计就会告诉您这一点。配置后,通过“AUDIT SELECT ON {name of materialized view}”启用它。审计跟踪将在 SYS 模式的 AUD$ 表中。

    【讨论】:

      【解决方案2】:

      除了审计之外的一种方法是在一次刷新之后和下一次刷新之前读取 v$segment_statistics 视图,以查看是否有任何读取。您还必须考虑所有自动统计信息收集作业。

      【讨论】:

        【解决方案3】:

        V$SQLAREA 表有两列有助于识别数据库执行的查询。

        SQL_TEXT - VARCHAR2(1000) - 当前游标的 SQL 文本的前一千个字符 SQL_FULLTEXT - CLOB - 当前游标的 SQL 文本的所有字符

        我们可以使用这些列来查找使用上述物化视图的查询

        【讨论】:

        • 我之前使用过这些表来查看正在运行的 SQL,但它们是否具体告诉您正在使用哪些内部对象(索引、物化视图等)?物化视图即使在用户运行的原始sql中没有提及也可以使用。
        • Peter:您可以从 V$SQLAREA 相关表中获取计划。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 2016-07-29
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 2013-03-05
        相关资源
        最近更新 更多