oracle开机自启动 & 自动恢复主从同步 & 从库自动open pdb

一、 oracle开机自启动

随服务器启动Oracle,主从库皆可,启动至open状态。

su - oracle
#记下这两个值
echo $ORACLE_HOME
echo $ORACLE_SID

1. 修改dbstart

cp $ORACLE_HOME/bin/dbstart $ORACLE_HOME/bin/dbstart.bak
vi $ORACLE_HOME/bin/dbstart
#搜索 ORACLE_HOME_LISTNER=$1,改为
ORACLE_HOME_LISTNER=$ORACLE_HOME

2. 修改oratab和rc.local

root用户操作

vi /etc/oratab
#找到下面这行,把N改成Y(没这行就自己加上)
#格式为 $ORACLE_SID:$ORACLE_HOME:Y
uatcdb2:/u01/PRD/oracle/12.1.0.2/LOGDB:Y   #这里原本是N,改成Y即可
vi /etc/rc.d/rc.local
#在空白处添加下面两句,/u01/PRD/oracle/12.1.0.2/GTLOGDB 即为 $ORACLE_HOME
su oracle -lc "/u01/PRD/oracle/12.1.0.2/GTLOGDB/bin/lsnrctl start"  
su oracle -lc  /u01/PRD/oracle/12.1.0.2/GTLOGDB/bin/dbstart

#加执行权限
chmod +x /etc/rc.d/rc.local

之后可以重启服务器试试DB及监听是否能随机启动。

二、 自动主从同步 & 从库自动open pdb

前面随机启动的脚本有两个问题:

  • 无法自动恢复主从同步,即从库无法自动启动mrp进程应用日志
  • 从库若有pdb,默认只能启动到mount状态(主库执行save state也没用)

这两个问题可以通过建startup触发器来处理,测试以下场景均能正常工作:

  • startup mount然后open从库
  • startup从库
  • 重启从库服务器(已配置前面的开机自启动)
  • 主从switchover后在新从库(原主库)执行上面三个操作

1. 12c及以上版本

-- version >= 12c
create or replace trigger auto_start_standby_mrp_pdb
  AFTER STARTUP ON DATABASE
declare
  v_db_role Varchar2(30);
  v_cdb     Varchar2(30);
begin
  SELECT database_role,cdb into v_db_role,v_cdb from v$database;
  if (v_db_role = 'PHYSICAL STANDBY') THEN
    EXECUTE IMMEDIATE 'alter database recover managed standby database using current logfile disconnect from session parallel 4';
    if (v_cdb = 'YES') then
      EXECUTE IMMEDIATE 'alter pluggable database all open read only';
    END IF;
  END IF;
end;
/

2. 12c以下版本(仅测试了11g)

-- version < 12c
create or replace trigger auto_start_standby_mrp
  AFTER STARTUP ON DATABASE
declare
  v_db_role Varchar2(30);
begin
  SELECT database_role into v_db_role from v$database;
  if (v_db_role = 'PHYSICAL STANDBY') THEN
    EXECUTE IMMEDIATE 'alter database recover managed standby database using current logfile disconnect from session parallel 4';
  END IF;
end;
/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hehuyi_In

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

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

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

打赏作者

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

抵扣说明:

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

余额充值