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;
--------------------------------------------------
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;