Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

rebuildIndexes.sh

Scripts

rebuildIndexes.sh

by  Michael42  Posted    (Edited  )
Code:
#!/bin/sh
# Purpose:    Rebuild Indexes for Entire Database
# Version:    2.01
# OS:         Sun Solaris 8-10
# Oracle:     9i-10g
# Usage:      Change User Variables as required to match your environment.
# -----------------------------------------------------------------------------------------
# EXCEPTIONS  Schema not to rebuild indexes on. Example: EXCEPTIONS="'SYS',"SYSTEM'"
###########################################################################################

###############################################
# Init User Variables
###############################################
# Init Oracle Env
ORACLE_SID="DB1"
ORACLE_BASE="/home/oracle"
ORACLE_HOME="$ORACLE_BASE/product/10.2/db"
LD_LIBRARY_PATH="$ORACLE_HOME/lib"

EXCEPTIONS="'ANONYMOUS','DBSNMP','DIP','EXFSYS','MGMT_VIEW','OUTLN','ORACLE','OPS\$ORACLE','PUBLIC','SYS','SYSTEM','SYSMAN','TSMSYS','WMSYS','XDB'"


###########################################################################################
###########################################################################################
#####################     DO NOT CHANGE ANYTHING BELOW THIS LINE    #######################
###########################################################################################
###########################################################################################

###############################################
# Init System Vars - Common
###############################################
PATH=/bin:$PATH
SCRIPTNAME=`basename $0 .sh`
DATE_START=`date`
DATE_STAMP=`date '+%Y%m%d'`
TIME_STAMP=`date '+%H%M'`


###############################################
# Header
###############################################
clear
echo "===> $SCRIPTNAME.sh Started\n"
echo "     ORACLE_BASE:		$ORACLE_BASE"
echo "     ORACLE_HOME:		$ORACLE_HOME"
echo "     LD_LIBRARY_PATH:	$LD_LIBRARY_PATH"
echo "     TNS_ADMIN:		$TNS_ADMIN"
echo "     ORACLE_SID:		$ORACLE_SID"
echo "     EXCEPTIONS:		$EXCEPTIONS"


###############################################
# Create Initial Script (.tmp)
###############################################
echo "\n\n===> Creating Initial Script: $SCRIPTNAME.tmp \n"
$ORACLE_HOME/bin/sqlplus "/ as sysdba" << SQLPLUS_SESSION
SET ECHO OFF
SET HEADING OFF
SET VERIFY OFF
SET TERMOUT OFF
SET TIMING OFF
spool /tmp/$SCRIPTNAME.tmp
SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' REBUILD ONLINE NOLOGGING COMPUTE STATISTICS TABLESPACE '||TABLESPACE_NAME||';'
FROM ALL_USERS, ALL_INDEXES
WHERE ALL_INDEXES.OWNER = ALL_USERS.USERNAME
AND INDEX_NAME NOT LIKE '%$%'
AND ALL_USERS.USERNAME NOT IN ($EXCEPTIONS)
ORDER BY owner,index_name;
spool off
exit
SQLPLUS_SESSION


###############################################
# Clean Up Script (yank out junk syntax)
###############################################
echo "\n===> Preporocessing Script..."
cat /tmp/$SCRIPTNAME.tmp|tail +7|grep -i 'ALTER INDEX' > /tmp/$SCRIPTNAME.sql
rm -rf /tmp/$SCRIPTNAME.tmp


###############################################
# Run Script to Rebuild Indexes
###############################################
echo "\n===> Running Script..."
$ORACLE_HOME/bin/sqlplus "/ as sysdba" << SQLPLUS_SESSION
SET ECHO ON
SET HEADING ON
SET TERMOUT ON
@/tmp/$SCRIPTNAME.sql
exit
SQLPLUS_SESSION


###############################################
# End
###############################################
DATE_END=`date`
echo "\n\n===> $SCRIPTNAME.sh Ended"
echo " 	   Start Time:  $DATE_START"
echo "	   End Time:    $DATE_END\n"
Register to rate this FAQ  : BAD 1 2 3 4 5 6 7 8 9 10 GOOD
Please Note: 1 is Bad, 10 is Good :-)

Part and Inventory Search

Back
Top