只是想知道是否有一种方法可以列出数据库中所有尚未查询的对象。我知道你可以通过sys.dba_Objects看到last_ddl_time和创建的时间。但我对对象上的Total_reads更感兴趣,特别是索引和使用过它的tables.And (不是所有者)。
谢谢
发布于 2011-08-19 01:48:08
您可能可以使用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保留时间足够长,并且您可以使用较少的可用统计信息创建due,并且您只对最常用的段感兴趣,那么您也可以使用DBA_HIST_SEG_STAT
表。
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
但是,如果您试图找出某个特定对象是否被少量使用,AWR可能不是正确的解决方案,因为尽管偶尔使用,但它可能不会显示为任何快照窗口的顶部部分之一。
或者,您可以编写自己的流程来定期从V$SEGMENT_STATISTICS
捕获数据,并通过从不同快照中减去统计值来计算增量。
https://stackoverflow.com/questions/7111514
复制相似问题