#!/bin/sh
#
# This is dbdoc -- script version of extended checklist
# to document an Oracle database and the host machine it
# is running on
#
# this version contains all needed environment parameters
# no need for the ${DBNAME}_SH.env that was sourced by
# previous versions of dbdoc
#
# this version also removes dbdoc log file over XX days old
#
# added more SQL for partitioned tables, indexes
# added SQL to compute %used for tablespaces
# improved SQL for partitioned tables, indexes
#
# This is version 6.1 -- BRH 06122003
#

# setup environment parameters for the script

ORACLE_SID=
export ORACLE_SID

ORACLE_OWNER=oracle
export $ORACLE_OWNER

ORACLE_HOME=
export ORACLE_HOME

NOTIFY_LIST='<email address>'
export NOTIFY_LIST

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/openwin/lib
export LD_LIBRARY_PATH

PATH=/bin:/usr/bin:/usr/ccs/bin:/usr/sbin:${ORACLE_HOME}/bin:.
export PATH

NLS_LANG=AMERICAN_AMERICA.US7ASCII, .WE8ISO8859P1, .UTF8
export NLS_LANG

LOGDIR=$ORACLE_HOME/admin/dbdoc_log
export LOGDIR

RETENTION_TIME_DAYS=<number of days>
export RETENTION_TIME_DAYS

DBDOCLOG=${LOGDIR}/DBDOC_${ORACLE_SID}_`date +\%m\%d\%Y_\%T`.out
export DBDOCLOG

SVRMGRL_TMP=${LOGDIR}/SVRMGRL_TMP_${ORACLE_SID}_`date +\%m\%d\%Y_\%T`.out
export SVRMGRL_TMP

CSHRC_FILE=~/.cshrc_<SID>
export CSHRC_FILE
INIT_FILE_PATH=$ORACLE_HOME/admin/pfile
export INIT_FILE_PATH
CRDB_FILE_PATH=$ORACLE_HOME/admin/sql
export CRDB_FILE_PATH
LISTENER_PATH=$ORACLE_HOME/admin/network
export LISTENER_PATH
TNSNAMES_PATH=$ORACLE_HOME/admin/network
export TNSNAMES_PATH

#
# DBDOCLOG2 is setup to catch the useless output of svrmgrl
# and put we put this file in /dev/null so it really won't
# appear on disk at all. Without this file, all the text of
# every svrmgrl connect will appear on screen when this script
# is run from the command line.
#

DBDOCLOG2=/dev/null
export DBDOCLOG2

echo 'This is output from TAO DBA script dbdoc' > ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'date' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
date >> ${DBDOCLOG}

#
# document shell script environment for dbdoc
#

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document shell script environment for dbdoc' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'echo ${ORACLE_OWNER}' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo ${ORACLE_OWNER} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'echo ${ORACLE_HOME}' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo ${ORACLE_HOME} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'echo ${DBDOCLOG}' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo ${DBDOCLOG} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'echo ${ORACLE_SID}' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo ${ORACLE_SID} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'cat ${CSHRC_FILE}' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
cat ${CSHRC_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'env for dbdoc' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
env >> ${DBDOCLOG}

#
# document the server machine
#

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the server machine' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'hostname' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
hostname >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'uptime ' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
uptime >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo '/usr/bin/getconf/CLK_TCK -- 1000=24days, 100=248days for Oracle bug' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
/usr/bin/getconf CLK_TCK >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo '/usr/sbin/prtconf' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
/usr/sbin/prtconf >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'uname -a' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
uname -a >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'df -k' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
df -k >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'ls -l /' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ls -l / >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'cat /etc/vfstab' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
cat /etc/vfstab >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'ls -l /var/opt' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ls -l /var/opt >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'ls -l /opt' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ls -l /opt >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'raw partitions owned by UNIX user oracle' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo 'ls -Ll /dev/rdsk | grep oracle' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ls -Ll /dev/rdsk | grep oracle >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'raw partitions owned by UNIX user sybase' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo 'ls -Ll /dev/rdsk | grep sybase' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ls -Ll /dev/rdsk | grep sybase >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'tail -40 /etc/system' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
tail -40 /etc/system >> ${DBDOCLOG}
 
echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'cat /etc/passwd' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
cat /etc/passwd >> ${DBDOCLOG}
 
echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'cat /etc/group' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
cat /etc/group >> ${DBDOCLOG}

#
# document the UNIX user oracle
#

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the UNIX user oracle' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'id' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
id >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'pwd' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
pwd >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'For servers with a single Oracle database, there' >> ${DBDOCLOG}
echo 'will be a single ~/oracle/.cshrc file' >> ${DBDOCLOG}
echo 'For servers with multiple Oracle databases, there' >> ${DBDOCLOG}
echo 'will be multiple ~/oracle/.cshrc_<SID> files' >> ${DBDOCLOG}
echo 'To access the database that dbdoc is accessing' >> ${DBDOCLOG}
echo 'copy the .cshrc_<SID> file into ~oracle/.cshrc,' >> ${DBDOCLOG}
echo 'and source .cshrc' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo 'Document the .cshrc file or' >> ${DBDOCLOG}
echo 'the .cshrc_<SID> file that should be copied' >> ${DBDOCLOG}
echo 'into ~oracle/.cshrc and sourced to access the database' >> ${DBDOCLOG}

echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> .cshrc file is' >> ${DBDOCLOG}
echo ${CSHRC_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> .cshrc file contents' >> ${DBDOCLOG}
cat ${CSHRC_FILE} >> ${DBDOCLOG}

#
# document the Oracle database instance
#

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the Oracle database instance' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'ps -ef | grep oracle' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
ps -ef | grep oracle >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'crontab -l oracle' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
crontab -l oracle >> ${DBDOCLOG}
 
echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'lsnrctl status' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
lsnrctl status >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$database;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$instance;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
show sga
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$version;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$option;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$datafile;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_data_files;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_tablespaces;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$logfile;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$log;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
archive log list;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select count(first_change#) "logswitches per hour" , to_char(first_time,
'yyyy.mm.dd HH24') "on hour" from v\$loghist group by to_char(first_time, 'yyyy.mm.dd HH24');
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_rollback_segs;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select segment_name, tablespace_name, initial_extent, next_extent, min_extents,
max_extents, pct_increase, status from dba_rollback_segs;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select usn, optsize, extents from v\$rollstat;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$controlfile;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name, sum(bytes)/1024/1024 Mb from dba_data_files
group by tablespace_name order by tablespace_name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name, sum(bytes)/1024/1024 Mb from dba_free_space group
by tablespace_name order by tablespace_name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name, sum(bytes)/1024/1024 Mb, count (Blocks) Tb, min(Bytes)/1024/1024 MinMb,
max(Bytes)/1024/1024 MaxMb from dba_free_space group by tablespace_name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select sum(bytes)/1024/1024 Db_Total_Megabytes from dba_data_files;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select sum(bytes)/1024/1024 Db_Total_Free_Megabytes from dba_free_space;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select a.t1 "Tablespace", trunc(b.Mb) "Total Mb", trunc(a.Mb) "Used Mb",           
trunc(b.Mb-a.Mb) "Free Mb", 
trunc((a.Mb/b.Mb)*100) "Used%"
from (select tablespace_name t1, sum(bytes)/1024/1024 Mb 
from sys.dba_extents
group by tablespace_name) a,
(select tablespace_name t2, sum(bytes)/1024/1024 Mb
from sys.dba_data_files
group by tablespace_name) b
where a.t1 = b.t2;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name,initial_extent,next_extent,pct_increase,min_extents,
max_extents from dba_tablespaces;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from v\$tempfile;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_temp_files;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select count(*) from dba_part_tables;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select table_name, partitioning_type, partition_count from dba_part_tables;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select count(*) from dba_part_indexes;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select index_name, partitioning_type, partition_count from dba_part_indexes;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select name, object_type, count(*) from dba_part_key_columns group by name, object_type;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_part_key_columns;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select table_name, index_name from dba_part_indexes where
owner !='SYS' order by table_name, index_name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
set long 100
#column high_value format A100
#set linesize 350
#set pagesize 1500
select table_name, tablespace_name, partition_name, partition_position, high_value from dba_tab_partitions
order by table_name, partition_position;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
set long 100
#column high_value format A100
#set linesize 350
#set pagesize 1500
select index_name, tablespace_name, partition_name, partition_position, high_value from dba_ind_partitions
order by index_name, partition_position;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select index_name, tablespace_name, status from dba_indexes where status like 'UNUSABLE%';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select index_name, partition_name, partition_position, tablespace_name, status
from dba_ind_partitions where status like 'UNUSABLE%';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name, bytes/1024/1024 Mb, substr(file_name,1,40) from dba_temp_files;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select tablespace_name, total_blocks*8192/1024/1024 TOTALMb, free_blocks*8192/1024/1024 FREEMb,
used_blocks*8192/1024/1024 USEDMb from v\$sort_segment;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, count(*) from dba_objects group by owner;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, count(*), object_type from dba_objects group by object_type, owner order by owner;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, count(*) from dba_tables where tablespace_name='SYSTEM' group by owner;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, table_name from dba_tables where owner !='SYS' and tablespace_name='SYSTEM';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select count(*) from dba_objects where status='INVALID';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, object_type, object_name, status from dba_objects
where status='INVALID' order by owner, object_type, object_name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_users order by username;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select username,default_tablespace, temporary_tablespace from
dba_users order by username;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select owner, sum(bytes)/1024/1024 Megabytes from dba_segments group by owner;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_ts_quotas;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_roles;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_role_privs where grantee not in
('DBA','DBSNMP','EXP_FULL_DATABASE','IMP_FULL_DATABASE',
'SYS','SYSTEM');
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_sys_privs where grantee not in
('CONNECT','DBA','DBSNMP','EXP_FULL_DATABASE','IMP_FULL_DATABASE',
'RECOVERY_CATALOG_OWNER','RESOURCE','SNMPAGENT','SYS','SYSTEM');
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select name,value from v\$parameter order by name;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select name, value from v\$parameter where isdefault = 'FALSE';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from nls_database_parameters;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
set charwidth 300
select * from dba_db_links;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select * from dba_synonyms where table_owner !='SYS' and table_owner !='SYSTEM';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'date' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
date >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
alter database backup controlfile to trace;
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the sql backup control file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select value from v\$parameter where name='user_dump_dest';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}
UDUMP_PATH=`tail -3 $SVRMGRL_TMP | head -1 | awk '{ print $1 }'`
echo ' ' >> ${DBDOCLOG}
echo '--> user_dump_dest path is' >> ${DBDOCLOG}
echo ${UDUMP_PATH} >> ${DBDOCLOG}

UDUMP_FILE=`ls -1rt ${UDUMP_PATH} | tail -1`
echo ' ' >> ${DBDOCLOG}
echo '--> backup control file trace file name is' >> ${DBDOCLOG}
echo ${UDUMP_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> ls -l for trace file is' >> ${DBDOCLOG}
ls -l ${UDUMP_PATH}/${UDUMP_FILE}  >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> SQL of backup control file is' >> ${DBDOCLOG}
cat ${UDUMP_PATH}/${UDUMP_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the ${INIT_FILE_PATH}/init${ORACLE_SID}.ora file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> path to init file is' >> ${DBDOCLOG}
echo ${INIT_FILE_PATH} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> init file name is' >> ${DBDOCLOG}
INIT_FILE=init${ORACLE_SID}.ora
echo ${INIT_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> init file contents' >> ${DBDOCLOG}
cat ${INIT_FILE_PATH}/${INIT_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the crdb${ORACLE_SID} file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> path to crdb file is' >> ${DBDOCLOG}
echo ${CRDB_FILE_PATH} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> crdb file name is' >> ${DBDOCLOG}
CRDB_FILE=crdb${ORACLE_SID}.sql
echo ${CRDB_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> crdb file contents' >> ${DBDOCLOG}
cat ${CRDB_FILE_PATH}/${CRDB_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the listener.ora file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> path to listener file is' >> ${DBDOCLOG}
echo ${LISTENER_PATH} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> file name is listener.ora' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> listener file contents' >> ${DBDOCLOG}
cat ${LISTENER_PATH}/listener.ora >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the tnsnames.ora file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> path to tnsnames file is' >> ${DBDOCLOG}
echo ${TNSNAMES_PATH} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> file name is tnsnames.ora' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> tnsnames file contents' >> ${DBDOCLOG}
cat ${TNSNAMES_PATH}/tnsnames.ora >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document the /var/opt/oracle/oratab file' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> path to oratab file is' >> ${DBDOCLOG}
echo /var/opt/oracle >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> file name is oratab' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> oratab file contents' >> ${DBDOCLOG}
cat /var/opt/oracle/oratab >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Document recent contents of alert log' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
svrmgrl << EOF >> ${DBDOCLOG2}
set termout off
set echo on
connect internal
spool '$SVRMGRL_TMP'
select value from v\$parameter where name='background_dump_dest';
exit
EOF
cat $SVRMGRL_TMP >> ${DBDOCLOG}
ALERT_PATH=`tail -3 $SVRMGRL_TMP | head -1 | awk '{ print $1 }'`
echo ' ' >> ${DBDOCLOG}
echo '--> background_dump_dest path is' >> ${DBDOCLOG}
echo ${ALERT_PATH} >> ${DBDOCLOG}

ALERT_FILE=alert_${ORACLE_SID}.log
echo ' ' >> ${DBDOCLOG}
echo '--> alert log file name is' >> ${DBDOCLOG}
echo ${ALERT_FILE} >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '--> tail -500 of alert file is' >> ${DBDOCLOG}
tail -500 ${ALERT_PATH}/${ALERT_FILE} >> ${DBDOCLOG}

rm $SVRMGRL_TMP

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Existing dbdoc log files...' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo 'current sysdate' >> ${DBDOCLOG}
date >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo 'cd $ORACLE_HOME/admin/dbdoc_log' >> ${DBDOCLOG}
cd ${LOGDIR}
pwd >> ${DBDOCLOG}
ls -l >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}
echo 'Remove dbdoc log files older than '${RETENTION_TIME_DAYS}' days' >> ${DBDOCLOG}
echo '*****************************************' >> ${DBDOCLOG}

/usr/bin/find . -name "DBDOC_${ORACLE_SID}_*.out" -ctime +${RETENTION_TIME_DAYS} -exec /bin/rm {} \;
echo ' ' >> ${DBDOCLOG}
pwd >> ${DBDOCLOG}
ls -l >> ${DBDOCLOG}

echo ' ' >> ${DBDOCLOG}
echo ' ' >> ${DBDOCLOG}
echo 'End of dbdoc' >> ${DBDOCLOG}

MSG='DBDOC for '`hostname`':'${ORACLE_SID}' '`date +\%m\%d\%Y_\%T`

/usr/bin/mailx -s "${MSG}" ${NOTIFY_LIST} < ${DBDOCLOG}

#
#end of dbdoc
#



