列出旧对象

时间:2011-08-18 17:23:32

标签: object select oracle10g timestamp

只是想知道有没有办法列出数据库中尚未查询的所有对象。 我知道你可以通过sys.dba_Objects看到last_ddl_time和Created Time。但我对对象特别是索引和表格的Total_reads更感兴趣。谁使用过它。(不是所有者)

感谢

1 个答案:

答案 0 :(得分:2)

您可以使用V$SEGMENT_STATISTICS视图来获取您所追踪的信息。例如,如果您想查看自上次数据库重新启动以来SCOTT模式中每个段上已完成的逻辑读取次数

SQL> select owner, object_name, value
  2    from v$segment_statistics
  3   where statistic_name = 'logical reads'
  4     and owner = 'SCOTT';

OWNER                          OBJECT_NAME                         VALUE
------------------------------ ------------------------------ ----------
SCOTT                          STATS_TEST                            448
SCOTT                          BIN$bQrMO1+dTOOh9S8K9O+z+Q==$0          0
SCOTT                          COUNTER_TEST                         1760
SCOTT                          BIN$763dsleISbi+AfEp20EN7A==$0         80
SCOTT                          TEST_TABLE                           5424
SCOTT                          BIN$5QAh3TmjRWqeMKof7tY93g==$0        144
SCOTT                          BIN$1i4uV7CbQL2Pl0tANHsJQw==$0         80
SCOTT                          BIN$8ydZ/jHySAeudojTmTtByQ==$0         48
SCOTT                          FOO_TEMP                              112
SCOTT                          ERR$_FOO                               64
SCOTT                          EVENT                                  32
SCOTT                          FOO                                    32
SCOTT                          T1                                    176
SCOTT                          T2                                     80
SCOTT                          EMP                                    32
SCOTT                          GRAD_STUDENT_TB                       240
SCOTT                          SYS_C0024557                           64
SCOTT                          PK_EMP                                  0

18 rows selected.

如果您获得使用AWR的许可并且您的AWR保留时间足够长并且您可以使用较少的可用统计信息进行到期,并且您只对最常用的段感兴趣,那么您也可以使用{{1表。

DBA_HIST_SEG_STAT

但是,如果您试图找出某个特定对象是否被轻易使用,那么AWR可能不是正确的解决方案,因为尽管偶尔使用它,它可能不会显示为任何快照窗口中的顶部片段之一。

或者,您可以编写自己的进程以定期从SQL> ed Wrote file afiedt.buf 1 select snap.begin_interval_time, 2 stat.logical_reads_delta, 3 obj.object_name 4 from dba_hist_seg_stat stat 5 join dba_hist_snapshot snap using (snap_id) 6 join dba_objects obj on (obj.object_id = stat.obj#) 7* where obj.owner = 'SCOTT' SQL> / BEGIN_INTERVAL_TIME LOGICAL_READS_DELTA OBJECT_NAME ------------------------------ ------------------- -------------------- 16-AUG-11 04.00.11.428 PM 160 T1 18-AUG-11 12.00.13.856 PM 144 GRAD_STUDENT_TB 18-AUG-11 12.00.13.856 PM 48 SYS_C0024557 20-AUG-11 03.00.59.376 PM 144 LOAN_TXN 捕获数据,并通过从不同快照中减去统计值来计算增量。