RAC+单实例DG的切换

上一篇文章讨论的是搭建,http://blog.csdn.net/xxzhaobb/article/details/79108963

这里讨论切换 。

之前切换不成功,和参数设置有关。注意的参数是sid=* 之类的

刚搭建好的环境,racdbdg是单实例的,是备库,rac节点是主库。

搭建完毕,切换了一次,刚好主库是单实例的racdbdg,rac节点是备库了。

进行后续的切换

--------------------------------

primary :racdbdg  单实例

SYS@racdbdg>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PRIMARY 	 TO STANDBY

SYS@racdbdg>

Standby : 是RAC节点

SYS@racdb2>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED

SYS@racdb1>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED

或者这样查询

SYS@racdb2>select inst_id,database_role,switchover_status from gv$database;

   INST_ID DATABASE_ROLE    SWITCHOVER_STATUS
---------- ---------------- --------------------
	 2 PHYSICAL STANDBY NOT ALLOWED
	 1 PHYSICAL STANDBY NOT ALLOWED

-------------------------------- 开始切换

查看主库的状态  在主机 racdbdg上查看 。 是to standby  ,可以切换

SYS@racdbdg>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PRIMARY 	 TO STANDBY

SYS@racdbdg>

-- 将主库切换到备库状态

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

SYS@racdbdg>alter database commit to switchover to physical standby with session shutdown;

Database altered.

将新的备库启动到mount状态,这个时候新的备库是关闭状态,启动后,状态是备库

SYS@racdbdg>archive log list
ORA-01012: not logged on
SYS@racdbdg>conn / as sysdba
Connected to an idle instance.
SYS@racdbdg>startup mount
ORACLE instance started.

Total System Global Area 1235959808 bytes
Fixed Size		    2252784 bytes
Variable Size		  922746896 bytes
Database Buffers	  301989888 bytes
Redo Buffers		    8970240 bytes
Database mounted.
SYS@racdbdg>

SYS@racdbdg>select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

SYS@racdbdg>

-- 将原备库切换为主库。在rac 任意一个节点上执行

-- 查看rac节点的状态,是可以切换的

SYS@racdb1>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY

SYS@racdb2>select inst_id,database_role,switchover_status from gv$database;

   INST_ID DATABASE_ROLE    SWITCHOVER_STATUS
---------- ---------------- --------------------
	 1 PHYSICAL STANDBY SESSIONS ACTIVE
	 2 PHYSICAL STANDBY SESSIONS ACTIVE

SYS@racdb2>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY

SYS@racdb2>

-- 进行切换,在任何一个节点执行。其中另一个节点,会自动切换为mount状态

--在节点2上执行:

SYS@racdb2>alter database commit to switchover to primary with session shutdown ; 

Database altered.

SYS@racdb2>select switchover_status ,open_mode,database_role from v$database;

SWITCHOVER_STATUS    OPEN_MODE		  DATABASE_ROLE
-------------------- -------------------- ----------------
NOT ALLOWED	     MOUNTED		  PRIMARY

SYS@racdb2>alter database open;

Database altered.

SYS@racdb2>

--另一个节点状态

SYS@racdb1>archive log list
ORA-03135: connection lost contact
SYS@racdb1>conn / as sysdba
Connected.
SYS@racdb1>

-- 这个时候,主库是rac。备库是单实例的racdbdg了  在主库上插入数据,备库查询

SYS@racdb2>select count(*) from t;

  COUNT(*)
----------
	 6

SYS@racdb2>insert into t values(7);

1 row created.

SYS@racdb2>commit;

Commit complete.

SYS@racdb2>

SYS@racdbdg>select * from t;

	ID
----------
	 1
	 2
	 3
	 4
	 5
	 6
	 7

7 rows selected.

SYS@racdbdg>

----------------------------- 再切换一次,主备切换

现在的主库是双节点的rac, 备库是单实例的racdbdg 。再切换一次,把主库切换成单节点,备库切换成rac

SYS@racdb1>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PRIMARY 	 TO STANDBY

SYS@racdb1>alter database commit to switchover to physical standby with session shutdown;

Database altered.

SYS@racdb1>

切换为备库后,原来的双节点的主库变成备库,两个节点都被关闭。需要mount
SYS@racdb1>select open_mode ,database_role from v$database;
select open_mode ,database_role from v$database
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 9039
Session ID: 32 Serial number: 19


SYS@racdb1>conn / as sysdba
Connected to an idle instance.
SYS@racdb1>startup mount; 
ORACLE instance started.

Total System Global Area 1235959808 bytes
Fixed Size		    2252784 bytes
Variable Size		 1090519056 bytes
Database Buffers	  134217728 bytes
Redo Buffers		    8970240 bytes
Database mounted.
SYS@racdb1>select open_mode ,database_role from v$database;

OPEN_MODE	     DATABASE_ROLE
-------------------- ----------------
MOUNTED 	     PHYSICAL STANDBY

SYS@racdb1>

-- 切换单实例的备库为主库:

SYS@racdbdg>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY

SYS@racdbdg>

SYS@racdbdg>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY

SYS@racdbdg>alter database commit to switchover to primary with session shutdown ;                                                                                          
Database altered. 

Database altered.

SYS@racdbdg>conn / as sysdba
Connected.
SYS@racdbdg>select database_role,switchover_status from v$database;

DATABASE_ROLE	 SWITCHOVER_STATUS
---------------- --------------------
PRIMARY 	 NOT ALLOWED

SYS@racdbdg>alter database open;

Database altered.

SYS@racdbdg>

--- 验证 主库插入数据

SYS@racdbdg>select count(*) from t;

  COUNT(*)
----------
	 8

SYS@racdbdg>insert into t values(9);

1 row created.

SYS@racdbdg>commit;

Commit complete.

SYS@racdbdg>

-- 备库查询
SYS@racdb2>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       +FRA
Oldest online log sequence     0
Next log sequence to archive   0
Current log sequence	       0
SYS@racdb2>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       +FRA
Oldest online log sequence     0
Next log sequence to archive   0
Current log sequence	       0
SYS@racdb2>select count(*) from t;

  COUNT(*)
----------
	 9

SYS@racdb2>

SYS@racdb1>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       +FRA
Oldest online log sequence     23
Next log sequence to archive   0
Current log sequence	       23
SYS@racdb1>

SYS@racdbdg>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /u01/archivelog
Oldest online log sequence     22
Next log sequence to archive   23
Current log sequence	       23
SYS@racdbdg>


从上面可以看到,切换成功了 。


从alert log中看到的一些信息。说明,在搭建的时候,要考虑sid

Archived Log entry 91 added for thread 2 sequence 16 ID 0x396d1acf dest 1:
Fri Jan 19 15:44:15 2018
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';
Fri Jan 19 15:45:43 2018
Thread 1 cannot allocate new log, sequence 23
Checkpoint not complete
  Current log# 1 seq# 22 mem# 0: /u01/app/oracle/oradata/racdbdg/group_1.257.965769287
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
LGWR: Standby redo logfile selected for thread 1 sequence 23 for destination LOG_ARCHIVE_DEST_2
Thread 1 advanced to log sequence 23 (LGWR switch)
  Current log# 2 seq# 23 mem# 0: /u01/app/oracle/oradata/racdbdg/group_2.258.965769287
Fri Jan 19 15:45:45 2018
Archived Log entry 94 added for thread 1 sequence 22 ID 0x396d1acf dest 1:



END  20180119





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值