在Oracle中,如何查看人们使用的表?

时间:2015-01-21 17:51:53

标签: oracle

我们正在努力解除一些表的退役,但我需要确定它们是否经常使用。

最后,我需要一个表名,#unique queries,#unique users。

我该怎么做?我无法在网络上找到任何可以解答问题的内容。

2 个答案:

答案 0 :(得分:1)

根据您获得许可的功能,您可以:

  • v$segment_statistics读取并查看正在使用的细分受众群。简易模式,但它不会告诉您谁在使用该表。
  • 设置statspack以相对精细的粒度进行采样,并检查那里使用的表。中等难度和中等准确度,您的数据不会100%准确,但至少您会有更好的想法。
  • 示例v$session_wait并将p1p2列与文件#和块#相关联 - 这会告诉您涉及哪个表/索引。硬模式,但现在你大致知道谁在做读取和多久。
  • 如果您获得AWR许可,请从v$active_session_history读取。硬&昂贵的模式,但现在你真的知道谁正在读取并具有令人难以置信的准确性。

答案 1 :(得分:1)

为了回应上面的通知,我使用了统计报告,但它需要STATSPACK工具。

以下过程可用于在两个时间点(“快照”)之间监视Oracle数据库的性能,然后生成可用于上述分析的报告。

  • 在SQL * Plus中,使用“system”id
  • 登录
  • 输入以下命令以获取第一个“快照”:

    EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
    
  • 记下生成的“snap id”

  • 使用上面的相同命令获取第二个“snap”以包含所有要监视的活动
  • 还要记下这个“snap id”
  • 使用以下命令生成“AWR报告”:

    @$ORACLE_HOME/rdbms/admin/awrrpt.sql
    
  • 出现提示时,输入第一个和第二个“快照”的“快照ID”

  • 将生成具有指定名称
  • 的结果报告

提示:如果系统遇到峰值活动的某一特定时间,最好在此时间范围之前和之后采取“快照”,以最大化在结果报告中捕获的统计数据量