DG之物理Standby的switchover转换
Primary:
ORCLPRE >select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE 有会话在连接
ORCLPRE >alter database commit to switchover to physical standby with session shutdown;
alter database commit to switchover to physical standby with session shutdown
*
ERROR at line 1:
ORA-16416: Switchover target is not synchronized with the primary
在Standby端启动REDO应用:
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
之后转到Primary:重新执行命令,将Primary转换为Standby
ORCLPRE >alter database commit to switchover to physical standby with session shutdown;
Database altered.
ORCLPRE >shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
ORCLPRE >startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 75499764 bytes
Database Buffers 88080384 bytes
Redo Buffers 2973696 bytes
Database mounted.
转到Standby:
SQL> conn sys/safe as sysdba
Connected.
SQL> set sqlprompt "ORCLPDG >"
ORCLPDG >select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
ORCLPDG >alter database commit to switchover to primary; Standby转换为Primary
Database altered.
完成转换后打开数据库:
ORCLPDG >alter database open;
alter database open
*
ERROR at line 1:
ORA-01507: database not mounted
ORCLPDG >startup
ORA-01081: cannot start already-running ORACLE - shut it down first
ORCLPDG >shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
ORCLPDG >startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
验证新的Primary:
ORCLPDG >show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string orclpdg
ORCLPDG >select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
36
ORCLPDG >alter system switch logfile;
System altered.
ORCLPDG >select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
37
ORCLPDG >
验证新的Standby:
ORCLPRE >show parameter db_unique_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string orclpre
ORCLPRE >select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
37
新的Standby测试:
新的Standby启动REDO应用:
ORCLPRE >alter database recover managed standby database disconnect from session;
Database altered.
ORCLPRE >alter database recover managed standby database cancel;
Database altered.
ORCLPRE >alter database open;
Database altered.
ORCLPRE >select * from scott.test;
ID
----------
1
2
3
4
5
测试是否可以传入数据:
新的Primary:
SQL> insert into scott.test values(6);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select * from scott.test;
ID
----------
1
2
3
4
5
6
6 rows selected.
新的Standby端:
ORCLPRE >alter database recover managed standby database disconnect from session;
Database altered.
ORCLPRE >alter database recover managed standby database cancel;
Database altered.
ORCLPRE >alter database open;
Database altered.
ORCLPRE >select * from scott.test;
ID
----------
1
2
3
4
5
6
6 rows selected.
switchover转换成功……