ups機制下停電提前關閉oracle資料庫

2022-09-14 13:30:11 字數 1807 閱讀 6653

思路:在乙個受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/sh

lsnrctl 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引數 不帶引數,啟...