DataGuard 切换和回切

1.switch over
--------------------------------------------------
1).切换准备工作
====================
a).确认是否有错误或者gap
--------------------
--主库执行,需要是valid和no gap状态才能进行切换,如果不是则需要先解决已存问题
SQL> select b.dest_id,a.status,a.gap_status from v$archive_dest_status a, v$archive_dest b where a.dest_id=b.dest_id and b.target='STANDBY';


--------------------
b).确认主库是否能切换
--------------------
--主库执行,需要确保返回值是:TO STANDBY 或 SESSIONS ACTIVE,如果不是,则需要排除问题后继续
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;


--------------------
c).关闭多余实例
--------------------
# su - grid
$ srvctl stop instance -d addrprod -n p740b -o immediate


--------------------
d).加入测试数据
--------------------
SQL> create table sys.switchcheck(time date, status varchar2(100));
SQL> insert into sys.switchcheck values(sysdate,'before switch to single');
SQL> commit;


====================
2).将主库切换成备库
====================
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> startup nomount;


注:做这个操作的时候,会产生大量日志,Standby DB需要是applied archive log模式。
--如果返回值是TO STANDBY则可以忽略:witch session shutdown,切换备库成主库时同样。


====================
3).切换备库成主库
====================
a).确认备库可以切成主库
--------------------
--原备库执行, 返回值需要是:TO PRIMARY 或 SESSIONS ACTIVE
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;


-------------------
b).执行切换
-------------------
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> alter database open;


-------------------
c).添加临时文件
-------------------
SQL> alter tablespace temp add tempfile 2 size 1024M;
SQL> alter tablespace temp drop tempfile 1;
SQL> alter tablespace temp add tempfile 1 size 19G;
SQL> alter tablespace temp drop tempfile 2;
-------------------
d).确认测试数据
-------------------
SQL> select * from sys.switchcheck;
SQL> drop table sys.switchcheck purge;


====================
4).开启新备库的恢复进程
====================
a).打开恢复进程
--------------------
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;


--------------------
b).确认恢复状态
--------------------
--确认还没应用的日志有多少,是否满足要求
SQL> select thread#,sequence#,applied from v$archived_log where applied='NO';


--确认进程状态,以及进程的处理进度
SQL> select process,status,thread#,sequence#,block#,blocks from v$managed_standby;


------------------------------------------------------------
2.生产库回切
------------------------------------------------------------
1).切换准备工作
====================
a).确认是否有错误或者gap
--------------------
--主库执行,需要是valid和no gap状态才能进行切换,如果不是则需要先解决已存问题
SQL> select b.dest_id,a.status,a.gap_status from v$archive_dest_status a, v$archive_dest b where a.dest_id=b.dest_id and b.target='STANDBY';


--------------------
b).确认主库是否能切换
--------------------
--主库执行,需要确保返回值是:TO STANDBY 或 SESSIONS ACTIVE,如果不是,则需要排除问题后继续
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;


--------------------
d).加入测试数据
--------------------
SQL> create table sys.switchcheck(time date, status varchar2(100));
SQL> insert into sys.switchcheck values(sysdate,'switch back');
SQL> commit;


====================
2).将主库切换成备库
====================
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> startup nomount;


注:做这个操作的时候,会产生大量日志,Standby DB需要是applied archive log模式。
--如果返回值是TO STANDBY则可以忽略:witch session shutdown,切换备库成主库时同样。


====================
3).切换备库成主库
====================
a).确认备库可以切成主库
--------------------
--原备库执行, 返回值需要是:TO PRIMARY 或 SESSIONS ACTIVE
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;


-------------------
b).执行切换
-------------------
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> alter database open;


-------------------
d).确认测试数据
-------------------
SQL> select * from sys.switchcheck;
SQL> drop table sys.switchcheck purge;


====================
4).打开Rac其他节点
====================
a).打开节点
--------------------
# su - grid
$ srvctl stop instance -d addrprod -n p740b -o immediate


--------------------
b).确认实例状态
--------------------
$ crsctl status resource -t


====================
5).开启新备库的恢复进程
====================
a).打开恢复进程
--------------------
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;


--------------------
b).确认恢复状态
--------------------
--确认还没应用的日志有多少,是否满足要求
SQL> select thread#,sequence#,applied from v$archived_log where applied='NO';


--确认进程状态,以及进程的处理进度
SQL> select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值