Wednesday, 6 August 2014

Database sanity checker

##################################
#
# Database sanity checker
#
##################################

for i in `srvctl config | grep ${ORACLE_SID%[12]}`
do
echo -e "\nChecking database status:"
srvctl status database -d ${i} -v
echo -e "\nChecking service status:"
srvctl status service -d ${i} -s ${ORACLE_SID%[12]}_OCI
DIR1=`adrci<<END | grep -E "ADR base" | awk '{print $NF}' | sed 's/\"//g'
END`
DIR2=`adrci<<END | grep ${ORACLE_SID%[12]} | grep ${HOSTNAME%n1} | awk '{print $NF}' | tr '[:upper:]' '[:lower:]'
show alert
Q
END`
DIR2=`echo $DIR2 | sed -r 's/(.*)\/.*/\1/'`
DIR3=${ORACLE_SID}
TRACE_DIR="${DIR1}/${DIR2}/${DIR3}/trace/"
echo -e "\nChecking alert log for errors:"
tail -200 ${DIR1}/${DIR2}/${DIR3}/trace/alert*.log | grep "ORA-"
sqlplus -s /nolog<<END
connect / as sysdba
set heading on pages 100 feedback off
set serveroutput on
prompt
prompt Is the database clustered?
prompt
SET SERVEROUTPUT ON
BEGIN
  IF DBMS_UTILITY.is_cluster_database THEN
    DBMS_OUTPUT.put_line(chr(09)||' This database is Clustered'||chr(10));
  ELSE
    DBMS_OUTPUT.put_line(chr(09)||' This database is Not Clustered'||chr(10));
  END IF;
END;
/
declare
   RN      number(9);
   SED     varchar2(100);
BEGIN
        select DEST_NAME||' '||TARGET||' '||DESTINATION||' '||DATAGUARD_BROKER||' '||DATABASE_ROLE into SED from v\$archive_dest a, v\$database b where TARGET(+) != 'PRIMARY' and DEST_NAME = 'LOG_ARCHIVE_DEST_2';
dbms_output.put_line(chr(09)||'Dataguard Status: --> '||SED);
EXCEPTION
   WHEN NO_DATA_FOUND THEN
   dbms_output.put_line (chr(09)||' THIS IS NOT A DATAGUARDED DATABASE.'||chr(10));
end;
/
col "Database Status" format a50
SELECT
'HOST:= '||SYS_CONTEXT('USERENV','SERVER_HOST')||chr(10)||
'Dataguard Role:= '||SYS_CONTEXT('USERENV','DATABASE_ROLE')||chr(10)||
'Service:= '||SYS_CONTEXT('USERENV','SERVICE_NAME') "Database Status"
FROM dual
/
col name format a25
col "DB Status" format a50
col OM format a10
select name||decode(substr(name,4,1),'H',' - HDS Database','T',' - PDS Database',null) "DB Status"
, open_mode OM
from v\$database
/
END
echo -e "\n\n"
done

No comments:

Post a Comment