97 lines
3.9 KiB
SQL
97 lines
3.9 KiB
SQL
-- +----------------------------------------------------------------------------+
|
|
-- | Jeffrey M. Hunter |
|
|
-- | jhunter@idevelopment.info |
|
|
-- | www.idevelopment.info |
|
|
-- |----------------------------------------------------------------------------|
|
|
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
|
|
-- |----------------------------------------------------------------------------|
|
|
-- | DATABASE : Oracle |
|
|
-- | FILE : dba_rebuild_indexes.sql |
|
|
-- | CLASS : Database Administration |
|
|
-- | PURPOSE : This script generates another script that will include all of |
|
|
-- | the ALTER INDEX REBUILD .... commands needed to rebuild a |
|
|
-- | tablespaces indexes. This script will prompt the user for the |
|
|
-- | tablespace name. This script must be run be a user with the DBA |
|
|
-- | role under Oracle7. |
|
|
-- | NOTE : As with any code, ensure to test this script in a development |
|
|
-- | environment before attempting to run it in production. |
|
|
-- +----------------------------------------------------------------------------+
|
|
|
|
SET TERMOUT OFF;
|
|
COLUMN current_instance NEW_VALUE current_instance NOPRINT;
|
|
SELECT rpad(instance_name, 17) current_instance FROM v$instance;
|
|
SET TERMOUT ON;
|
|
|
|
PROMPT
|
|
PROMPT +------------------------------------------------------------------------+
|
|
PROMPT | Report : Rebuild Index Build Script |
|
|
PROMPT | Instance : ¤t_instance |
|
|
PROMPT +------------------------------------------------------------------------+
|
|
|
|
PROMPT
|
|
ACCEPT TS_NAME CHAR PROMPT 'Enter the index tablespace name : '
|
|
|
|
PROMPT
|
|
PROMPT Thanks... Creating rebuild index script for tablespace: &TS_NAME
|
|
|
|
SET ECHO OFF
|
|
SET FEEDBACK OFF
|
|
SET HEADING OFF
|
|
SET LINESIZE 180
|
|
SET PAGESIZE 0
|
|
SET TERMOUT ON
|
|
SET TIMING OFF
|
|
SET TRIMOUT ON
|
|
SET TRIMSPOOL ON
|
|
SET VERIFY OFF
|
|
|
|
CLEAR COLUMNS
|
|
CLEAR BREAKS
|
|
CLEAR COMPUTES
|
|
|
|
SET TERMOUT OFF
|
|
|
|
spool rebuild_&TS_NAME._indexes.sql
|
|
|
|
SELECT 'REM FILE : rebuild_&TS_NAME._indexes.sql' FROM dual;
|
|
SELECT ' ' FROM dual;
|
|
SELECT 'REM' FROM dual;
|
|
SELECT 'REM ***** ALTER INDEX REBUILD commands for tablespace: &TS_NAME' FROM dual;
|
|
SELECT 'REM' FROM dual;
|
|
SELECT ' ' FROM dual;
|
|
|
|
SELECT
|
|
'REM +------------------------------------------------------------------------+' || chr(10) ||
|
|
'REM | INDEX NAME : ' || owner || '.' || segment_name
|
|
|| lpad('|', 58 - (length(owner) + length(segment_name)) )
|
|
|| chr(10) ||
|
|
'REM | BYTES : ' || bytes
|
|
|| lpad ('|', 59-(length(bytes)) ) || chr(10) ||
|
|
'REM | EXTENTS : ' || extents
|
|
|| lpad ('|', 59-(length(extents)) ) || chr(10) ||
|
|
'REM +------------------------------------------------------------------------+' || chr(10) ||
|
|
'ALTER INDEX ' || owner || '.' || segment_name || chr(10) ||
|
|
' REBUILD ONLINE' || chr(10) ||
|
|
' TABLESPACE ' || tablespace_name || chr(10) ||
|
|
' STORAGE ( ' || chr(10) ||
|
|
' INITIAL ' || initial_extent || chr(10) ||
|
|
' NEXT ' || next_extent || chr(10) ||
|
|
' MINEXTENTS ' || min_extents || chr(10) ||
|
|
' MAXEXTENTS ' || max_extents || chr(10) ||
|
|
' PCTINCREASE ' || pct_increase || chr(10) ||
|
|
');' || chr(10) || chr(10)
|
|
FROM dba_segments
|
|
WHERE segment_type = 'INDEX'
|
|
AND owner NOT IN ('SYS')
|
|
AND tablespace_name = UPPER('&TS_NAME')
|
|
ORDER BY owner, bytes DESC
|
|
/
|
|
|
|
SPOOL OFF
|
|
|
|
SET TERMOUT ON
|
|
|
|
PROMPT
|
|
PROMPT Done... Built the script rebuild_&TS_NAME._indexes.sql
|
|
PROMPT
|