2026-03-12 20:23:15
This commit is contained in:
119
vg/index_unusable.sql
Normal file
119
vg/index_unusable.sql
Normal file
@@ -0,0 +1,119 @@
|
||||
@@header
|
||||
|
||||
set term off
|
||||
/*
|
||||
*
|
||||
* Author : Vishal Gupta
|
||||
* Purpose : Display unusable indexes
|
||||
* Parameters : 1. Owner (% - wildchar, \ - escape char) , this could also be passed as OWNER.OBJECT_NAME
|
||||
* 2. Table Owner (% - wildchar, \ - escape char)
|
||||
*
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ ------------------------------------------------
|
||||
* 27-Jul-15 Vishal Gupta Added owner and table_name as input parameters
|
||||
* 12-Mar-12 Vishal Gupta Intial version
|
||||
*
|
||||
*
|
||||
*/
|
||||
set term on
|
||||
|
||||
|
||||
/************************************
|
||||
* INPUT PARAMETERS
|
||||
************************************/
|
||||
UNDEFINE owner
|
||||
UNDEFINE table_name
|
||||
UNDEFINE subobject_name
|
||||
UNDEFINE object_type
|
||||
UNDEFINE object_status
|
||||
UNDEFINE WHERECLAUSE
|
||||
|
||||
DEFINE owner="&&1"
|
||||
DEFINE table_name="&&2"
|
||||
DEFINE WHERECLAUSE="&&3"
|
||||
|
||||
|
||||
COLUMN _owner NEW_VALUE owner NOPRINT
|
||||
COLUMN _table_name NEW_VALUE table_name NOPRINT
|
||||
COLUMN _subobject_name NEW_VALUE subobject_name NOPRINT
|
||||
COLUMN _object_type NEW_VALUE object_type NOPRINT
|
||||
|
||||
set term off
|
||||
|
||||
SELECT DECODE(UPPER('&&owner'),'','%','&&owner') "_owner"
|
||||
, DECODE(UPPER('&&table_name'),'','%','&&table_name') "_table_name"
|
||||
, DECODE(UPPER('&&subobject_name'),'','%','&&subobject_name') "_subobject_name"
|
||||
, DECODE(UPPER('&&object_type'),'','%','&&object_type') "_object_type"
|
||||
FROM DUAL
|
||||
;
|
||||
|
||||
|
||||
SELECT CASE
|
||||
WHEN INSTR('&&owner','.') != 0 THEN SUBSTR(UPPER('&&owner'),1,INSTR('&&owner','.')-1)
|
||||
ELSE DECODE(UPPER('&&owner'),'','%',UPPER('&&owner'))
|
||||
END "_owner"
|
||||
, CASE
|
||||
WHEN INSTR('&&owner','.') != 0 THEN SUBSTR(UPPER('&&owner'),INSTR('&&owner','.')+1)
|
||||
ELSE DECODE(UPPER('&&table_name'),'','%',UPPER('&&table_name'))
|
||||
END "_table_name"
|
||||
FROM DUAL
|
||||
;
|
||||
|
||||
|
||||
set term on
|
||||
|
||||
|
||||
PROMPT *****************************************************************
|
||||
PROMPT * Unusable Indexes
|
||||
PROMPT *
|
||||
PROMPT * Input Parameters
|
||||
PROMPT * - Owner = '&&owner'
|
||||
PROMPT * - Table Name = '&&table_name'
|
||||
PROMPT * - Where Clause = '&&WHERECLAUSE'
|
||||
PROMPT *****************************************************************
|
||||
|
||||
COLUMN table_owner HEADING "Table Owner" FORMAT a20
|
||||
COLUMN table_name HEADING "Table Name" FORMAT a45
|
||||
COLUMN index_owner HEADING "Index Owner" FORMAT a20
|
||||
COLUMN index_name HEADING "Index Name" FORMAT a45
|
||||
COLUMN partition_name HEADING "Partition Name" FORMAT a25
|
||||
COLUMN subpartition_name HEADING "SubPartition Name" FORMAT a25
|
||||
COLUMN tablespace_name HEADING "Tablespace Name" FORMAT a20
|
||||
COLUMN status HEADING "Status" FORMAT a10
|
||||
COLUMN uniqueness HEADING "Uniqness" FORMAT a10
|
||||
COLUMN rebuild_sql HEADING "Rebuild SQL Statement" FORMAT a200
|
||||
|
||||
|
||||
SELECT i.table_owner || '.' || i.table_name table_name
|
||||
, i.owner || '.' || i.index_name index_name
|
||||
, ip.partition_name
|
||||
, isp.subpartition_name
|
||||
, NVL(NVL(isp.tablespace_name,ip.tablespace_name),i.tablespace_name) tablespace_name
|
||||
, NVL(NVL(isp.status,ip.status),i.status) status
|
||||
, i.uniqueness
|
||||
FROM dba_indexes i
|
||||
LEFT OUTER JOIN dba_ind_partitions ip ON i.owner = ip.index_owner AND i.index_name = ip.index_name
|
||||
LEFT OUTER JOIN dba_ind_subpartitions isp ON ip.index_owner = isp.index_owner AND ip.index_name = isp.index_name AND ip.partition_name = isp.partition_name
|
||||
WHERE NVL(NVL(isp.status,ip.status),i.status) NOT IN ('VALID','N/A','USABLE')
|
||||
AND i.owner LIKE '&&owner'
|
||||
AND i.table_name LIKE '&&table_name'
|
||||
ORDER BY 1,2,3,4,5,6
|
||||
;
|
||||
|
||||
SELECT 'ALTER INDEX "' || i.owner || '"."' || i.index_name || '" REBUILD'
|
||||
|| NVL2(isp.subpartition_name,' SUBPARTITION ' || isp.subpartition_name, NVL2(ip.partition_name,' PARTITION "' || ip.partition_name || '"' , ' '))
|
||||
|| ' PARALLEL 4; '
|
||||
|| NVL2(isp.subpartition_name,' ' ,NVL2( ip.partition_name, ' ', chr(10) || 'ALTER INDEX "' || i.owner || '"."' || i.index_name || DECODE(i.degree,1,'" NOPARALLEL;','" PARALLEL ' || i.degree || ';') ) )
|
||||
rebuild_sql
|
||||
FROM dba_indexes i
|
||||
LEFT OUTER JOIN dba_ind_partitions ip ON i.owner = ip.index_owner AND i.index_name = ip.index_name
|
||||
LEFT OUTER JOIN dba_ind_subpartitions isp ON ip.index_owner = isp.index_owner AND ip.index_name = isp.index_name AND ip.partition_name = isp.partition_name
|
||||
WHERE NVL(NVL(isp.status,ip.status),i.status) NOT IN ('VALID','N/A','USABLE')
|
||||
AND i.owner LIKE '&&owner'
|
||||
AND i.table_name LIKE '&&table_name'
|
||||
ORDER BY 1
|
||||
;
|
||||
|
||||
@@footer
|
||||
Reference in New Issue
Block a user