2014-09-17 13:23:48 +02:00

131 lines
3.4 KiB
SQL

set feedback off
prompt Display indexes where table or index name matches &1....
column ind_table_name1 heading TABLE_NAME
column ind_index_name1 heading INDEX_NAME
column ind_table_owner1 heading TABLE_OWNER format a20
column ind_column_name1 heading COLUMN_NAME format a30
column ind_dsc1 heading DSC format a4
column ind_column_position1 heading POS# format 999
break on ind_table_owner1 skip 1 on ind_table_name1 on ind_index_name1
select
c.table_owner ind_table_owner1,
c.table_name ind_table_name1,
c.index_name ind_index_name1,
c.column_position ind_column_position1,
c.column_name ind_column_name1,
decode(c.descend,'DESC','DESC',null) ind_dsc1
from
dba_ind_columns c
where (
UPPER(table_name) LIKE
UPPER(CASE
WHEN INSTR('&1','.') > 0 THEN
SUBSTR('&1',INSTR('&1','.')+1)
ELSE
'&1'
END
)
AND UPPER(table_owner) LIKE
CASE WHEN INSTR('&1','.') > 0 THEN
UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
ELSE
user
END
)
OR (
UPPER(index_name) LIKE
UPPER(CASE
WHEN INSTR('&1','.') > 0 THEN
SUBSTR('&1',INSTR('&1','.')+1)
ELSE
'&1'
END
)
AND UPPER(index_owner) LIKE
CASE WHEN INSTR('&1','.') > 0 THEN
UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
ELSE
user
END
)
order by
c.table_owner,
c.table_name,
c.index_name,
c.column_position
;
column ind_owner heading INDEX_OWNER format a20
column ind_index_type heading IDXTYPE format a7
column ind_uniq heading UNIQ format a4
column ind_part heading PART format a4
column ind_temp heading TEMP format a4
column ind_blevel heading H format 9
column ind_leaf_blocks heading LFBLKS format 9999999
column ind_distinct_keys heading NDK format 9999999999
break on ind_owner on table_name
select
owner ind_owner,
table_name,
index_name,
index_type ind_index_type,
decode(uniqueness,'UNIQUE', 'YES', 'NONUNIQUE', 'NO', 'N/A') ind_uniq,
status,
partitioned ind_part,
temporary ind_temp,
blevel+1 ind_blevel,
leaf_blocks ind_leaf_blocks,
distinct_keys ind_distinct_keys,
num_rows,
clustering_factor cluf,
last_analyzed
from
dba_indexes
where (
UPPER(table_name) LIKE
UPPER(CASE
WHEN INSTR('&1','.') > 0 THEN
SUBSTR('&1',INSTR('&1','.')+1)
ELSE
'&1'
END
)
AND UPPER(table_owner) LIKE
CASE WHEN INSTR('&1','.') > 0 THEN
UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
ELSE
user
END
)
OR (
UPPER(index_name) LIKE
UPPER(CASE
WHEN INSTR('&1','.') > 0 THEN
SUBSTR('&1',INSTR('&1','.')+1)
ELSE
'&1'
END
)
AND UPPER(owner) LIKE
CASE WHEN INSTR('&1','.') > 0 THEN
UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
ELSE
user
END
)
order by
owner,
table_name,
index_name,
ind_uniq
;
set feedback on