我正试图编写一个启动|停止脚本来远程停止不同linux服务器上的数据库。我有一个服务器,它具有指向所有目标服务器的root和ssh密钥。一般来说,我需要:以root身份运行脚本,ssh到另一台服务器,su-oracle,运行sqlplus并关闭数据库。
这就是我现在要阻止数据库的原因。远程服务器:
stop(){
A=`ssh root@10.10.10.110 ps -ef | grep smon_D | wc -l`
echo $A
if [[ $A -gt 0 ]]
then
echo "Found SMON process is alive, stopping the DB"
ssh root@10.10.10.110 su - oradaily -c "/oracle_general/start_stop/stop_db.sh"
else
echo "Found SMON process is down, DB has already been stopped"
fi
}
与第一个脚本相同的服务器:
cat /oracle_general/start_stop/stop_db.sh
sudo su - oradaily -c /oracle_general/start_stop/stop_DB.sh
带有数据库的服务器:
cat /oracle_general/start_stop/stop_DB.sh
sqlplus -prelim "/as sysdba" <<EOF
shutdown immediate;
exit
EOF
我尝试过这种不同的方法,但却出现了不同的错误。请告知。
我只需要调用第一个中的停止脚本。第一个脚本应该从外部节点运行,第二个脚本本地放置在带有db的节点上。文件共享将大有帮助。
摘要:在if块中,我调用一个位于远程服务器上的脚本,该脚本会停止所有操作。就是这样。