Oracle data guard 切换

切换前的准备工作。

1.对比standby与primary的data guard的init_(SID)文件的参数设置是否合理,或者是否有不对的地方。
可以先分别在主被两个库上面create pfile from spfile命令dump出来目前dg系统的文件。

例如在primary库上面:

*.fal_server = dev10g_p
*.fal_client = dev10g_s

在standby库上面:

*.fal_server = dev10g_s
*.fal_client = dev10g_p

还有

log_archive_config= 'DG_CONFIG(dev10g_p,dev10g_s)'
之类的参数。

2.关闭主服务器的对外服务监听端口。

比如本次dwapp切换就是1522(lsnrctl stop LISTENER2)

开始切换。

1.以sys身份连接到主库,切换3次联机日志,做一次完全检查点,保证数据启动恢复时间最短。

alter system switch logfile;
alter system switch logfile;
alter system switch logfiel;
alter system checkpoint;

2.关闭主数据库,通过操作系统命令cp备份原来的spfile,然后从配置好的pfile 建立spfile。

cp spfile<SID>.ora spfile<SID>.ora.bak
shutdown immediate;
create spfile from pfile;
startup;
 
SQL> select name, open_mode, protection_mode, database_role, switchover_status, current_scn, db_unique_name from v$database;
 
NAME      OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS    CURRENT_SCN DB_UNIQUE_NAME
\--------\- \---------\- \-------------------\- \---------------\- \-------------------\- \----------\- \-----------------------------\-
DWAPP     READ WRITE MAXIMUM AVAILABILITY PRIMARY          SESSIONS ACTIVE      60247213254 dwapp_p

3.执行命令将主库切换成为standby状态。

alter database commit to switchover to physical standby with session shutdown;(主库)

4.执行命令将被库切换成为primary状态。

SQL> select name, open_mode, protection_mode, database_role, switchover_status, current_scn, db_unique_name from v$database;
 
NAME      OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS    CURRENT_SCN DB_UNIQUE_NAME
\--------\- \---------\- \-------------------\- \---------------\- \-------------------\- \----------\- \-----------------------------\-
DWAPP     MOUNTED    MAXIMUM AVAILABILITY PHYSICAL STANDBY SESSIONS ACTIVE      60247213254 dwapp_s
alter database commit to switchover to primary with session shutdown;(被库)
alter database open;(被库)
alter database recover managed standby database using current logfile disconnect from session;(主库)

5.现在新的主库应该是原来的被库(dwapp_s),新的被库应该是原来的主库(dwapp_p)

切换完成,验证切换结果

1.在新的主库上面创建一个表

create table t1 (id number);
insert into t1 values ( 1 );
commit;

2.切换日志,让主库的操作应用到被库(如果前面是recover standby using current logfile那么没有必要做这一步,直接跳到第3步)

alter system switch logfile;
alter system switch logfile;
alter system switch logfile;

3.将新的被库open然后查看是否有记录。

alter database recover managed standby database cancel;
alter database open;
select * from t1;

4.如果有表,有记录,那么证明切换完全成功,再将新被库切换回standby状态即可。

shutdown immediate;
startup mount;
alter database recover managed standby database using current logfile disconnect with session shutdown;

5.打开新的主库的对外服务监听。(不要打开被库的对外服务监听,因为以前默认链接的是它,监听通过了,就会尝试连接数据库,但是它现在是备用库,处于mount and recover状态,所以回报database not open错误)

lsnrctl start LISTENER2 (新的主库上面)

后续还有部署db级别的监控等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值