oracle cdb模式下某pdb异常关闭后自动启动--两种实现方法及脚本

文章介绍了两种方法来自动检测并启动在Oracle数据库一体机上运行的CDB模式下的异常PDB。方法1是通过非crontab的shell脚本持续检查PDB状态,当发现PDB处于MOUNTED状态时,自动执行打开操作。方法2则利用crontab每隔一段时间执行脚本进行检查和恢复。这两种方案旨在解决因版本bug导致的PDB无法自动启动的问题。
摘要由CSDN通过智能技术生成

背景:

近期运维的一套oracle一体机上的系统采用cdb模式运行了十几个pdb,由于版本bug导致偶发性的某个pdb被异常关闭不能自动启动(已配置pdb层面的自动启动但并没有什么软用),后来总结实践出了下面这两个方法实现检测某个pdb异常后自动将异常pdb启动起来的方法:

方法1:非crontab方式

编写名为autodb.sh的shell脚本
#!/bin/bash
# user env
source ~/.bash_profile
while [ 1 ]
do
sqlplus -S / as sysdba >/home/oracle/pdb_status.log<<EOF
set heading off feedback off pagesize 0 verify off echo off 
SELECT OPEN_MODE from v\$PDBS where name='TSSYS';
exit
EOF
[ ! -f /home/oracle/pdb_status.log ]&&exit 0
db_status=`cat /home/oracle/pdb_status.log`
if [ "$db_status" == "MOUNTED" ];then
sqlplus -S / as sysdba <<EOF
set heading off feedback off pagesize 0 verify off echo off 
ALTER PLUGGABLE DATABASE ALL OPEN;
exit
EOF
fi
sleep 15
done


后台执行命令 
nohup sh autodb.sh >>autodb.log 2>&1 &

方法2:crontab 方式

#!/bin/bash
# user env
source ~/.bash_profile
sqlplus -S / as sysdba >/home/oracle/pdb_status.log<<EOF
set heading off feedback off pagesize 0 verify off echo off 
SELECT OPEN_MODE from v\$PDBS where name='TSSYS';
exit
EOF
[ ! -f /home/oracle/pdb_status.log ]&&exit 0
db_status=`cat /home/oracle/pdb_status.log`
if [ "$db_status" == "MOUNTED" ];then
sqlplus -S / as sysdba <<EOF
set heading off feedback off pagesize 0 verify off echo off 
ALTER PLUGGABLE DATABASE ALL OPEN;
exit
EOF
fi

crontab -e 添加如下内容:
* * * * * sleep 15; sh /home/oracle/autodb.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力哥讲技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值