オブジェクトのAnalyze状況を確認する

Pocket

【概要】
DBA_TABLES、DBA_INDEXES、およびDBA_IND_PARTITIONSを結合して、オブジェクトのAnalyze状況を確認する。
【SQL文】
/*
|| ■オブジェクトのAnalyze状況を確認する
||
|| 【項目の説明】
|| TABLE_OWNER :表の所有者
|| TABLE_NAME :表の名前
|| IND_OWNER :索引の所有者
|| INDEX_NAME :索引の名前
|| PARTITIONED :パーティションの有無
|| PARTITION_NAME :パーティションの名前
|| I_TS_NAME :表領域名
*/
set echo off
set lines 120
set pages 1000

clear col
ttitle off

col TABLE_OWNER for a12
col TABLE_NAME for a25
col IND_OWNER for a12
col INDEX_NAME for a20
col PARTITIONED for a10
col PARTITION_NAME for a15
col I_TS_NAME for a20

break on table_owner on table_name on index_name

ttitle left ‘■■■■ オブジェクトのAnalyze状況一覧 ■■■■’
spool obj_analyze_info.lis

SELECT table_owner
, table_name
, ind_owner
, index_name
, partitioned
, partition_name
, i_ts_name
FROM ( SELECt dt.owner TABLE_OWNER
, dt.table_name x
, di.owner IND_OWNER x
, di.index_name INDEX_NAME x
, ‘ ‘ PARTITION_NAME x
, ‘NO’ PARTITIONED x
, di.tablespace_name I_TS_NAME
FROM sys.dba_indexes di
, sys.dba_tables dt
WHERE dt.owner not in
(‘SYS’,’SYSTEM’,’CTXSYS’,’MDSYS’,’ORDSYS’,’AURORA$JIS$UTILITY$’,’OSE$HTTP$ADMIN’,’OUTLN’)
AND di.partitioned=’NO’
AND dt.owner = di.table_owner
AND dt.table_name = di.table_name
UNION
SELECT dt.owner TABLE_OWNER,
, dt.table_name
, dip.INDEX_OWNER INDEX_OWNER
, dip.index_name INDEX_NAME
, dip.partition_name PARTITION_NAME
, ‘YES’ PARTITIONED
, dip.tablespace_name I_TS_NAME
FROM sys.dba_indexes di
, sys.dba_ind_partitions dip,
, sys.dba_tables dt
WHERE dt.owner not in
(‘SYS’,’SYSTEM’,’CTXSYS’,’MDSYS’,’ORDSYS’,’AURORA$JIS$UTILITY$’,’OSE$HTTP$ADMIN’,’OUTLN’)
AND di.partitioned=’YES’
AND dt.owner = di.table_owner
AND dt.table_name = di.table_name
AND di.owner= dip.index_owner
AND di.index_name = dip.index_name
)
ORDER BY TABLE_OWNER, TABLE_NAME, INDEX_NAME, PARTITION_NAME
;
spool off
clear col
ttitle off
set line 80

以上です (^^♪