思路:在乙個受ups保護的機器a1上寫指令碼,幾分鐘(如半分鐘)ping不在ups保護的機器b,如果幾次(如5次)ping不同,這時我們認為將要停電,此時指令碼執行正常關閉受ups保護的機器上資料庫的命令。注意,1-要保證在有電時a1和b的連通性,2-停電來電後,最好先開啟b機器,然後開啟其他機器。
check_ping.sh
#!/bin/bash#檢測主機
server=172.18.88.11
#ping不通時臨時結果儲存位置
ping_result=/root/ping_result.tmp
#檢測日誌
log=/root/ping
.log
#連續檢測不通次數
checknum=5
#檢查間隔時間
checkinterval=30s
#當前已連續檢測不通次數
count=0
while
true
doping -w
3 $server >$ping_result
[ `grep
'time=
' $ping_result|wc -l` -ge 1
] result=$?
if [ $result -eq 0
]
then
count=0
echo >>$log
echo `date +%y-%m-%d_%h:%m:%s` '
check ok
'>>$log
echo >>$log
else
((count=$count+1
))
echo >>$log
echo `date +%y-%m-%d_%h:%m:%s` '
ping error
' >>$log
echo
'ping result:
'>>$log
echo
'consecutive
'$count'
times
' >>$log
echo
'連續第
' $count '
次未ping通
' >>$log
echo
'ping detail:
' >>$log
cat $ping_result |xargs -i echo
''{} >>$log
echo >>$log
if [ $count -eq $checknum ]
then
echo
'shutdown oracle ...
' >>$log
su - oracle -c '
/home/oracle/stop.sh
' >>$log
echo
'shutdown oracle complete
' >>$log
echo >>$log
echo >>$log
count=0
fifi
sleep
$checkinterval
done
stop.sh
#!/bin/shlsnrctl stop
sqlplus /nolog
shutdown abort
exit
exit
echo
"oracle stop
"
Linux下oracle資料庫啟動和關閉操作
第一步 登陸 root登陸之後切換到oracle使用者上,輸入 su oracle 第二步 連線 在oracle使用者下,如果有多個資料庫,需要先設定連線的資料庫 oracle sid 環境變數來訪問到自己想要的那個資料庫。如 oracle sid testdb 然後輸入 sqlplus nolog...
Linux下oracle資料庫啟動和關閉操作
第一步 登陸 root登陸之後切換到oracle使用者上,輸入 su oracle 第二步 連線 在oracle使用者下,輸入 sqlplus nolog 第三步 使用管理員許可權 輸入connect as sysdba 第四步 啟動 關閉服務 輸入startup startup引數 不帶引數,啟動...
Linux下oracle資料庫啟動和關閉操作
第一步 登陸 root登陸之後切換到oracle使用者上,輸入 su oracle 第二步 連線 在oracle使用者下,輸入 sqlplus nolog 第三步 使用管理員許可權 輸入 connect as sysdba 第四步 啟動 關閉服務 輸入 startupstartup引數 不帶引數,啟...