Oracle RAC 主备切换实验(主库双节点RAC到单节点备库)

本实验环境如下:
主库Oracle RAC双节点
node1 192.168.169.111
node2 192.168.169.222

备库为Oracle单节点
192.168.169.123

操作步骤

1、主库修改相关参数 fal_client、fal_server:


SQL> show parameter spfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/devdb/spfiledevdb.ora
SQL> show parameter fal

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
fal_client			     string
fal_server			     string
SQL> alter system set fal_client='devdb1' sid='devdb1';

System altered.

SQL> alter system set fal_client='devdb2' sid='devdb2';

System altered.

SQL> alter system set fal_server='phydb' sid='*';

System altered.

SQL> show parameter fal

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
fal_client			     string	 devdb1
fal_server			     string	 phydb

节点2上的

SQL> show parameter fal

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
fal_client			     string	 devdb2
fal_server			     string	 phydb

2、主库创建 standby logfile:
创建之前,主库是没有standby logfile记录

SQL> set line 200
SQL> col member for a60
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER							IS_
---------- ------- ------- ------------------------------------------------------------ ---
	 2	   ONLINE  +DATA/devdb/onlinelog/group_2.262.1027260437 		NO
	 2	   ONLINE  +FLASH/devdb/onlinelog/group_2.258.1027260441		YES
	 1	   ONLINE  +DATA/devdb/onlinelog/group_1.261.1027260435 		NO
	 1	   ONLINE  +FLASH/devdb/onlinelog/group_1.257.1027260435		YES
	 3	   ONLINE  +DATA/devdb/onlinelog/group_3.265.1027260897 		NO
	 3	   ONLINE  +FLASH/devdb/onlinelog/group_3.259.1027260897		YES
	 4	   ONLINE  +DATA/devdb/onlinelog/group_4.266.1027260901 		NO
	 4	   ONLINE  +FLASH/devdb/onlinelog/group_4.260.1027260903		YES

8 rows selected.

SQL> select * from v$standby_log;

no rows selected

主库进行创建standby logfile

SQL> alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;

Database altered.

SQL> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;

Database altered.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER							IS_
---------- ------- ------- ------------------------------------------------------------ ---
	 2	   ONLINE  +DATA/devdb/onlinelog/group_2.262.1027260437 		NO
	 2	   ONLINE  +FLASH/devdb/onlinelog/group_2.258.1027260441		YES
	 1	   ONLINE  +DATA/devdb/onlinelog/group_1.261.1027260435 		NO
	 1	   ONLINE  +FLASH/devdb/onlinelog/group_1.257.1027260435		YES
	 3	   ONLINE  +DATA/devdb/onlinelog/group_3.265.1027260897 		NO
	 3	   ONLINE  +FLASH/devdb/onlinelog/group_3.259.1027260897		YES
	 4	   ONLINE  +DATA/devdb/onlinelog/group_4.266.1027260901 		NO
	 4	   ONLINE  +FLASH/devdb/onlinelog/group_4.260.1027260903		YES
	 5	   STANDBY +DATA/devdb/onlinelog/group_5.270.1028635077 		NO
	 5	   STANDBY +FLASH/devdb/onlinelog/group_5.301.1028635081		YES
	 6	   STANDBY +DATA/devdb/onlinelog/group_6.271.1028635083 		NO

    GROUP# STATUS  TYPE    MEMBER							IS_
---------- ------- ------- ------------------------------------------------------------ ---
	 6	   STANDBY +FLASH/devdb/onlinelog/group_6.302.1028635089		YES
	 7	   STANDBY +DATA/devdb/onlinelog/group_7.272.1028635091 		NO
	 7	   STANDBY +FLASH/devdb/onlinelog/group_7.303.1028635095		YES
	 8	   STANDBY +DATA/devdb/onlinelog/group_8.273.1028635133 		NO
	 8	   STANDBY +FLASH/devdb/onlinelog/group_8.304.1028635137		YES
	 9	   STANDBY +DATA/devdb/onlinelog/group_9.274.1028635139 		NO
	 9	   STANDBY +FLASH/devdb/onlinelog/group_9.305.1028635141		YES
	10	   STANDBY +DATA/devdb/onlinelog/group_10.275.1028635143		NO
	10	   STANDBY +FLASH/devdb/onlinelog/group_10.306.1028635145		YES

20 rows selected.
SQL> select * from v$standby_log;

    GROUP# DBID 				       THREAD#	SEQUENCE#      BYTES  BLOCKSIZE       USED ARC STATUS	  FIRST_CHANGE# FIRST_TIME	    NEXT_CHANGE# NEXT_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------------- ------------ -------------------
LAST_CHANGE# LAST_TIME
------------ -------------------
	 5 UNASSIGNED					     1		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0

	 6 UNASSIGNED					     1		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0

	 7 UNASSIGNED					     1		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0


    GROUP# DBID 				       THREAD#	SEQUENCE#      BYTES  BLOCKSIZE       USED ARC STATUS	  FIRST_CHANGE# FIRST_TIME	    NEXT_CHANGE# NEXT_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------------- ------------ -------------------
LAST_CHANGE# LAST_TIME
------------ -------------------
	 8 UNASSIGNED					     2		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0

	 9 UNASSIGNED					     2		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0

	10 UNASSIGNED					     2		0   52428800	    512        512 YES UNASSIGNED	      0              0
	   0


6 rows selected.



3、主 库 修 改 相 关 参 数 standby_file_management 、 db_file_name_convert 、
log_file_name_convert:
修改之前,查看下参数

SQL> show parameter standby_file

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
standby_file_management 	     string	 MANUAL
SQL> show parameter db_file_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string
SQL> show parameter log_file

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert		     string

修改下这两个参数

SQL> alter system set db_file_name_convert='+DATA/phydb/','+DATA/devdb/' sid='*' scope=spfile;

System altered.

SQL> alter system set log_file_name_convert='+DATA/phydb/','+DATA/devdb/' sid='*' scope=spfile;

System altered.

4、停止RAC node1节点

SQL> set line 300
SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1533716 MAXIMUM PERFORMANCE  PRIMARY	       YES READ WRITE		TO STANDBY
 931990411 DEVDB	 1533729 MAXIMUM PERFORMANCE  PRIMARY	       YES READ WRITE		TO STANDBY

SQL> shutdown immediate;

5、RAC node2切换原RAC主库到备库

如下是在node1没有完成执行完shutdown immediate的情况,查询的switchover_status为RESOLVABLE GAP

SQL> show parameter instance_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 devdb2
SQL> set line 300
SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535186 MAXIMUM PERFORMANCE  PRIMARY	       YES READ WRITE		RESOLVABLE GAP


说明在商量中,待完全关闭node1节点后,查询结果为TO STANDBY

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535367 MAXIMUM PERFORMANCE  PRIMARY	       YES READ WRITE		TO STANDBY

执行如下语句


SQL> alter database commit to switchover to physical standby with session shutdown;

Database altered.


此时,出现的情况为群龙无首的请求,没有主库。

6、切换原物理备库到主库角色

SQL> show parameter instance_name;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 phydb
SQL> set line 300
SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1484223 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY		SWITCHOVER PENDING


SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> ALTER  DATABASE RECOVER MANAGED STANDBY  DATABASE DISCONNECT FROM SESSION;

Database altered.

SQL> alter database commit to switchover to primary;

Database altered.

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	       0 MAXIMUM PERFORMANCE  PRIMARY	       YES MOUNTED		NOT ALLOWED

SQL> alter database open;

Database altered.

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1536105 MAXIMUM PERFORMANCE  PRIMARY	       YES READ WRITE		FAILED DESTINATION



节点2上查看

SQL> show parameter instance_name;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 devdb2
SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES MOUNTED		TO PRIMARY

把node1节点启动,查看其数据库角色也为PHYSICAL STANDBY。

7、两个节点启动到mount状态
srvctl start database -d devdb -o mount

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES MOUNTED		SESSIONS ACTIVE
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES MOUNTED		SESSIONS ACTIVE

8、原 RAC 主库启动 redo apply:

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

9、原RAC主库停止redo apply,并将 RAC 主库所有节点以 READ ONLY 打开

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open;      ##另外一个节点也执行打开数据库

Database altered.

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY		SESSIONS ACTIVE
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY		SESSIONS ACTIVE
 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Database altered.

SQL> select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

      DBID NAME      CURRENT_SCN PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE		SWITCHOVER_STATUS
---------- --------- ----------- -------------------- ---------------- --- -------------------- --------------------
 931990411 DEVDB	 1535701 MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY WITH APPLY SESSIONS ACTIVE


切换好之后最好测试下,比如主库创建一个表空间,看归档日志有没有正常传输,备库是否能感知到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄宝康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值