Database 维护脚本

#!/bin/bash

echo "#####################################################"
echo "#########Check Database Instance Status##############"
echo "#####################################################"

ORATAB=/etc/oratab
echo "`date`"
echo "Oracle Database(s) Status: `hostname`"

db=`egrep -i ":Y|:N" $ORATAB | cut -d ":" -f1 | grep -v "\#" | grep -v "\*"`
pslist="`ps -ef | grep pmon`"

for i in $db; do
	echo "$pslist" | grep "ora_pmon_$i" > /dev/null
	if(($?));then
		echo "Oracle Instance - $i : Down."
	else
		echo "Oracle Instance - $i : Up."
	fi
done


echo "#####################################################"
echo "#########Check Database Listener Status##############"
echo "#####################################################"

cd /home/oracle/dba_shscript
rm -f lsnr.exist
ps -ef | grep -i Listener | grep -v grep > /home/oracle/dba_shscript/lsnr.exist

if [ -s lsnr.exist ] 
then
	echo "`lsnrctl status`"
else
	echo "`lsnrctl start`"
fi


echo "#####################################################"
echo "#########Check Database Alert Log####################"
echo "#####################################################"

cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
echo "`pwd`"
rm -f /home/oracle/dba_shscript/alert_$ORACLE_SID.log
if [ `cat alert_$ORACLE_SID.log | wc -l` -gt 0 ]
then
	grep ORA- alert_$ORACLE_SID.log > /home/oracle/dba_shscript/alert_$ORACLE_SID.log
fi

echo "Please check /home/oracle/dba_shscript/alert_$ORACLE_SID.log"

echo "#####################################################"
echo "#########Analyze Table###############################"
echo "#####################################################"
source /home/oracle/.bash_profile
rm -f /home/oracle/dba_shscript/analyze_table.sql
sqlplus -S "xinhailun/xinhailun" << EOF
set heading off
set feed off
set pagesize 200
set linesize 100
spool /home/oracle/dba_shscript/analyze_table.sql
select 'ANALYZE TABLE ' || owner || '.' || segment_name ||' ESTIMATE STATISTICS SAMPLE 10 PERCENT;'
  from dba_segments
 where segment_type = 'TABLE'
   and owner = 'XINHAILUN';
spool off
exit
!
EOF
sqlplus -S "xinhailun/xinhailun" << EOF
@/home/oracle/dba_shscript/analyze_table.sql
exit
!
EOF

echo "#####################################################"
echo "#########Monitor Tablespace##########################"
echo "#####################################################"

sqlplus -S "/ as sysdba" << EOF
set feed off
set linesize 100
set pagesize 200
spool /home/oracle/dba_shscript/tablespace.alert
SELECT F.TABLESPACE_NAME,
       TO_CHAR((T.TOTAL_SPACE - F.FREE_SPACE), '999,999,999') "USED (MB)",
       TO_CHAR(F.FREE_SPACE, '999,999,999') "FREE (MB)",
       TO_CHAR(T.TOTAL_SPACE, '999,999,999') "TOTAL (MB)",
       TO_CHAR((ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)), '999') || ' %' PER_FREE
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BLOCKS * (SELECT VALUE / 1024
                                     FROM V\$PARAMETER
                                    WHERE NAME = 'db_block_size') / 1024)) FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) TOTAL_SPACE
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
 WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
   AND (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) < 70;
spool off
exit
!
EOF
if [ `cat /home/oracle/dba_shscript/tablespace.alert|wc -l` -gt 0 ]
then
echo "Please check /home/oracle/dba_shscript/tablespace.alert"
fi


echo "#####################################################"
echo "#########Check Invalid Objects#######################"
echo "#####################################################"

sqlplus -S "/ as sysdba" << EOF
set feed off 
set heading off 
col object_name format a30 
col owner format a15
col object_type format a15
spool /home/oracle/dba_shscript/invalid_object.alert 
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE STATUS = 'INVALID' ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;
spool off 
exit 
! 
EOF
if [ `cat /home/oracle/dba_shscript/invalid_object.alert|wc -l` -gt 0 ] 
then 
echo "Please check /home/oracle/dba_shscript/invalid_object.alert"
fi


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值