Oracle数据库管理常用的监控脚本------极大的简化运维工作(二)

2014-11-24 18:05:32 · 作者: · 浏览: 1
息,如果存在
# 则将其以邮件的形式通知管理员。
#================================================================================

#! /bin/bash

. /home/oracle/.bash_profile

cd $ORACLE_BASE/admin/$ORACLE_SID/bdump/

mv alert_$ORACLE_SID.log alert_temp.log

touch alert_$ORACLE_SID.log

cat alert_temp.log >> alert.$ORACLE_SID.hist

grep ORA- alert_temp.log > alert.err

if [ `cat alert.err|wc -l` -gt 0 ];then

mail -s "ORACLE ALERT ERROR" dba@163.com < alert.err

fi

rm -rf alert.err

rm -rf alert_temp.log



# 监控磁盘空间利用率(chk_disk_space)
# ====================================================================
# 判断/dev开头的磁盘或分区空间利用率,当磁盘空间利用率超过90%则发送邮件通知
# 管理员
# ====================================================================

#! /bin/bash

limit=90%

tempfile=chk_disk_space.tmp

mark=n

diskusage()

{

df -h|grep -v Filesystem|sed '/\/dev\/mapper/N;s/\n//'|grep "^/dev"|awk -F " " '{print $5}'

}

for percent in `diskusage`

do

if [[ $percent > $limit]];then

mark=y

break

fi

done

if [ $mark != 'n' ];then

df -h > $tempfile

mail -s "Disk Usage Over than $limit on `hostname`" < $tempfile

rm -rf $tempfile
fi




# 监控表空间空闲表空间(chk_tbs_free.sh)
#==================================================================================
# 监控空闲表空间,当空闲表空间低于20%时,发送邮件通知管理员
#==================================================================================

#! /bin/bash

su - oracle > /dev/null << EOF
sqlplus -s /nolog
conn / as sysdba
set feedback off
set heading off
set verify off
set pagesize 0
set linesize 200

spool tbsfree.alert

select t.tablespace_name,f.free_space/t.total_space from
(select tablespace_name,sum(bytes) total_space from
dba_data_files group by tablespace_name) t,
(select tablespace_name,sum(bytes) free_space from
dba_free_space group by tablespace_name) f
where t.tablespace_name=f.tablespace_name and f.free_space/t.total_space < 0.20
/

spool off

exit

EOF

if [ `cat tbsfree.alert|wc -l` -gt 0 ];then

cat tbsfree.alert|mail -s "No Free Space in Oracle db" dba@163.com

rm -rf tbsfree.alert

fi


# 全库冷备份(full_cold_backup.sh)
# =================================================================================
# 数据库打开时,自动生成备份脚本。然后关闭数据库,对控制文件,数据文件,重做日志文件,
# 初始化参数文件及口令文件做冷备,完成后打开数据库。
# =================================================================================

#! /bin/bash

. /home/oracle/.bash_profile

backup_dir=/disk01/backup/coldbak

log_file=/disk01/backup/coldbak/cold_backup_$ORACLE_SID.log

echo 'Begin Cold Backup>>>>>>>>>>>>>>>>' >> $log_file

date >> $log_file

su - oracle > /dev/null << EOF

sqlplus -s /nolog

conn / as sysdba

set feedback off heading off pagesize 0 line 1000

spool file_copy_$ORACLE_SID.sh

select 'cp ' || name || ' $backup_dir/' from v$controlfile;

select 'cp' || file_name || ' $backup_dir/' from dba_data_files;

select 'cp' || member || ' $backup_dir/' from v$logfile;

spool off

shutdown immediate

! bash file_copy_$ORACLE_SID.sh

startup

exit

EOF

if [ -e $ORACLE_HOME/dbs/init$ORACLE_SID.ora ];then

cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora $backup_dir/

fi

if [ -e $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ];then

cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $backup_dir/

fi

if [ -e $ORACLE_HOME/dbs/orapw$ORACLE_SID ];then

cp $ORACLE_HOME/dbs/orapw$ORACLE_SID $backup_dir/

fi


echo 'Cold Backup Finished>>>>>>>>>>>>>>>>>>>>>>>>>