需求:
1、每隔2秒检查一次数据库实例状态和监听状态
2、如果发现数据库实例或者监听down,那么自己启动
适用于oracle 12c以下、 linux bash shell
#!/bin/bash
dbstart()
{
sqlplus -S / as sysdba>/dev/null<<EOF
set echo off feedback off heading off;
startup;
exit;
EOF
}
while true
do
dbstatus=`
sqlplus -S / as sysdba<<EOF|grep -v "^$"
set echo off feedback off heading off;
select status from v\\$instance;
exit;
EOF`
if [[ $dbstatus == "OPEN" ]];then
echo "db open " `date` >>check.log
else
echo "db shutdown " `date`>>check.log
dbstart;
fi
if ps -ef|grep tnslsnr|grep -v grep>/dev/null;then
echo "listener ok " `date`>>check.log
else
echo "listener down" `date`>>check.log
lsnrctl start>/dev/null
fi
echo "##################################">>check.log
sleep 2;
done