说明:
1、数据库本地root用户一键启停oracle数据库
2、ssh连接一键启停远程oracle数据库(需要做免密登录)
一、oracle一键启停脚本-本地文章来源:https://www.toymoban.com/news/detail-529492.html
#!/bin/bash
# date: 2023-07-04
# creator: @tudou
var=$1
# ORACLE_HOME=/oracle/18.3/db/dbhome
# 检查监听服务状态
function ListenerStatus() {
su - oracle << EOF > /dev/null
lsnrctl status
EOF
if [ $? -eq 0 ];then
echo -e "\e[33m"
echo "监听服务运行正常"
echo -e "\e[0m"
return 0
else
echo -e "\e[33m"
echo "监听服务未启动"
echo -e "\e[0m"
return 1
fi
}
# 检查数据库服务状态
function ServiceStatus() {
ps -ef|grep pmon|grep -v grep > /dev/null
if [ $? -eq 0 ];then
echo -e "\e[33m"
echo "数据库服务运行正常"
echo -e "\e[0m"
return 0
else
echo -e "\e[33m"
echo "数据库服务未启动"
echo -e "\e[0m"
return 1
fi
}
# 启动监听服务
function StartupListener(){
echo -e "\e[33m"
echo "监听服务启动中..."
echo -e "\e[0m"
su - oracle << EOF > /dev/null
lsnrctl start
EOF
echo -e "\e[33m"
echo "监听服务启动完成..."
echo -e "\e[0m"
}
# 启动数据库服务
function StartupService(){
echo -e "\e[33m"
echo "启动数据库服务中..."
echo -e "\e[0m"
su - oracle << EOF
sqlplus / as sysdba
startup;
alter pluggable database all open;
exit;
EOF
echo -e "\e[33m"
echo "数据库服务已启动完成"
echo -e "\e[0m"
}
# 关闭监听服务
function ShutdownListener(){
echo -e "\e[33m"
echo "监听服务关闭中..."
echo -e "\e[0m"
su - oracle << EOF
lsnrctl stop
EOF
echo -e "\e[33m"
echo "监听服务关闭完成..."
echo -e "\e[0m"
}
# 关闭数据库服务
function ShutdownService(){
echo -e "\e[33m"
echo "数据库服务关闭中..."
echo -e "\e[0m"
su - oracle << EOF
sqlplus / as sysdba
shutdown immediate;
exit;
EOF
echo -e "\e[33m"
echo "数据库服务关闭完成..."
echo -e "\e[0m"
}
#==============================================================================
# 关闭数据库和监听服务
function ShutdownDB() {
# 检查数据库运行状态,运行则关闭
ServiceStatus
if [ $? -eq 0 ];then
#场景1: 数据库服务未关闭,检查关闭数据库和监听服务
# 关闭数据库服务
ShutdownService
# 检查监听状态,若已启动监听,则关闭
ListenerStatus
if [ $? -eq 0 ];then
# 关闭监听服务
ShutdownListener
else
echo -e "\e[33m"
echo "监听服务未启动,无需执行关闭监听动作"
echo -e "\e[0m"
fi
#场景2: 数据库已关闭,检查关闭监听
else
echo -e "\e[33m"
echo "数据库服务未启动,无需执行关闭数据库动作"
echo -e "\e[0m"
# 检查监听状态,若已启动监听,则关闭
ListenerStatus
if [ $? -eq 0 ];then
# 关闭监听服务
ShutdownListener
else
echo -e "\e[33m"
echo "监听服务未启动,无需执行关闭监听动作"
echo -e "\e[0m"
fi
fi
}
# 启动数据库和监听服务
function StartupDB() {
ListenerStatus
if [ $? -eq 0 ];then
# 场景1:监听已启动,,检查启动数据库服务
echo -e "\e[33m"
echo "监听服务已是运行状态"
echo -e "\e[0m"
ServiceStatus
if [ $? -eq 0 ];then
echo -e "\e[33m"
echo "数据库服务已是运行状态"
echo -e "\e[0m"
else
# 启动数据库服务
StartupService
fi
# 监听服务未启动,检查启动监听和数据库服务
else
echo -e "\e[33m"
echo "监听服务未启动"
echo -e "\e[0m"
# 启动监听服务
StartupListener
# 启动数据库服务或者重启数据库服务
ServiceStatus
if [ $? -eq 0 ];then
# 数据库状态是运行中,重启数据库服务
echo -e "\e[33m"
echo "数据库服务是运行状态,重启数据库服务"
echo -e "\e[0m"
# 关闭数据库服务
ShutdownService
sleep 5s
# 启动数据库服务
StartupService
echo -e "\e[33m"
echo "数据库服务已重启完成"
echo -e "\e[0m"
# 数据库服务停止状态,启动数据库服务
else
echo -e "\e[33m"
echo "数据库服务是已关闭状态"
echo -e "\e[0m"
# 启动数据库服务
StartupService
fi
fi
}
#==============================================================================
case $var in
status)
echo ""
# 监听服务状态
ListenerStatus
echo ""
# 数据库服务状态
ServiceStatus
echo ""
;;
start)
# 启动监听和数据库服务
StartupDB
;;
stop)
# 关闭数据库服务和监听
ShutdownDB
;;
restart)
# 关闭数据库服务和监听
ShutdownDB
# 启动监听和数据库服务
StartupDB
;;
*)
echo "usage $0 [ status|start|restart|stop ]"
;;
esac
二、oracle一键启停脚本-ssh远程文章来源地址https://www.toymoban.com/news/detail-529492.html
#!/bin/bash
# cat oracle.sh
# date: 2023-07-04
# creator: @tudou
# 使用root用户ssh免密登录
# ssh -t 表示分配伪终端
# ssh -o "StrictHostKeyChecking no" 解决第一次免密登录后面输入交互yes问题
# 脚本使用方法如: sh oracle.sh status 192.168.51.133
var=$1
newip=$2
# newip=192.168.51.133
# ORACLE_HOME=/oracle/18.3/db/dbhome
task_file=/tmp/task/$(date +%Y%m%d%H)
mkdir -p $task_file
out_log=$task_file/std.log
# 检查监听服务状态
function ListenerStatus() {
ssh -o "StrictHostKeyChecking no" -t root@${newip} << EOF > /dev/null
su - oracle
lsnrctl status
EOF
if [ $? -eq 0 ];then
echo "监听服务运行正常"
return 0
else
echo "未启动监听服务"
return 1
fi
}
# 检查数据库服务状态
function ServiceStatus() {
ssh -o "StrictHostKeyChecking no" -t root@${newip} "ps -ef|grep pmon|grep -v grep"
if [ $? -eq 0 ];then
echo "数据库服务运行正常"
return 0
else
echo "未启动数据库服务"
return 1
fi
}
# 启动监听服务
function StartupListener(){
echo "启动监听服务中..."
ssh -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
su - oracle
lsnrctl start
EOF
echo "启动监听服务完成..."
}
# 启动数据库服务
function StartupService(){
echo "启动数据库服务中..."
ssh -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
su - oracle
sqlplus / as sysdba
startup;
alter pluggable database all open;
exit;
EOF
echo "启动数据库服务已完成"
}
# 关闭监听服务
function ShutdownListener(){
echo "关闭监听服务中..."
ssh -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
su - oracle
lsnrctl stop
EOF
echo "关闭监听服务完成..."
}
# 关闭数据库服务
function ShutdownService(){
echo "关闭数据库服务中..."
ssh -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
su - oracle
sqlplus / as sysdba
shutdown immediate;
exit;
EOF
echo "关闭数据库服务完成..."
}
#==============================================================================
# 关闭数据库和监听服务
function ShutdownDB() {
# 检查数据库运行状态,运行则关闭
ServiceStatus
if [ $? -eq 0 ];then
#场景1: 数据库服务未关闭,检查关闭数据库和监听服务
# 关闭数据库服务
ShutdownService
# 检查监听状态,若已启动监听,则关闭
ListenerStatus
if [ $? -eq 0 ];then
# 关闭监听服务
ShutdownListener
else
echo "未启动监听服务,无需执行关闭监听动作"
fi
#场景2: 数据库已关闭,检查关闭监听
else
echo "未启动数据库服务,无需执行关闭数据库动作"
# 检查监听状态,若已启动监听,则关闭
ListenerStatus
if [ $? -eq 0 ];then
# 关闭监听服务
ShutdownListener
else
echo "未启动监听服务,无需执行关闭监听动作"
fi
fi
}
# 启动数据库和监听服务
function StartupDB() {
ListenerStatus
if [ $? -eq 0 ];then
# 场景1:监听已启动,,检查启动数据库服务
echo "监听服务已是运行状态"
ServiceStatus
if [ $? -eq 0 ];then
echo "数据库服务已是运行状态"
else
# 启动数据库服务
StartupService
fi
# 监听服务未启动,检查启动监听和数据库服务
else
echo "未启动监听服务"
# 启动监听服务
StartupListener
# 启动数据库服务或者重启数据库服务
ServiceStatus
if [ $? -eq 0 ];then
# 数据库状态是运行中,重启数据库服务
echo "数据库服务状态是运行中,重启数据库服务"
# 关闭数据库服务
ShutdownService
sleep 5s
# 启动数据库服务
StartupService
echo "重启数据库服务器已完成"
# 数据库服务停止状态,启动数据库服务
else
echo "数据库状态是已关闭"
# 启动数据库服务
StartupService
fi
fi
}
#==============================================================================
case $var in
status)
# 监听服务状态
ListenerStatus
# 数据库服务状态
ServiceStatus
;;
start)
# 启动监听和数据库服务
StartupDB
;;
stop)
# 关闭数据库服务和监听
ShutdownDB
;;
restart)
# 关闭数据库服务和监听
ShutdownDB
# 启动监听和数据库服务
StartupDB
;;
*)
echo "usage $0 [ status|start|restart|stop ]"
;;
esac
到了这里,关于Oracle数据库一键启停脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!