Oracle 11g DataGuard主备切换

Oracle 11g DataGuard主备切换

1.检查主备的环境
dg1节点:

SQL> archive log list;
Database log mode            Archive Mode
Automatic archival            Enabled
Archive destination          /u01/oradata/tong/archive
Oldest online log sequence      59
Next log sequence to archive    61
Current log sequence          61
SQL>


dg2节点:
SQL> archive log list;
Database log mode            Archive Mode
Automatic archival            Enabled
Archive destination          /u01/oradata/tong/archive
Oldest online log sequence      60
Next log sequence to archive    0
Current log sequence          61
SQL>


2.查看主备的角色
dg1节点(primary角色):

SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
TO STANDBY          PRIMARY
SQL>


dg2节点(standby角色):
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED          PHYSICAL STANDBY
SQL>


3.在主库上执行切换命令(primary节点)
SQL> alter database commit to switchover to physical standby; --将primary角色转换为standby角色
Database altered.
SQL> shutdown immediate              --关闭数据库,启动到mount状态
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount


Total System Global Area  830930944 bytes
Fixed Size                  2217912 bytes
Variable Size            545261640 bytes
Database Buffers          281018368 bytes
Redo Buffers                2433024 bytes
Database mounted.
SQL> select switchover_status,database_role from v$database;    --查看目前primary角色的状态
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
TO PRIMARY          PHYSICAL STANDBY
SQL>


4.在备库上执行(standby节点)
SQL> select switchover_status,database_role from v$database;    --查看standby备库角色的状态
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
TO PRIMARY          PHYSICAL STANDBY
SQL> alter database commit to switchover to primary;      --将备库的角色修改为primary
Database altered.
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
NOT ALLOWED          PRIMARY
SQL> alter database open;          --打开数据库
Database altered.
SQL>


5.在备库上执行(standby节点)

SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
RECOVERY NEEDED      PHYSICAL STANDBY
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;      --修改以前主库为日志应用
Database altered.
SQL>


6.测试主备节点是否切换成功
dg2节点(primary角色):


SQL> select * from tt;
  A
----------
  1
  3
  4
  5
  6
  7
6 rows selected.
SQL> insert into tt values(8);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from tt where a=8;
  A
----------
  8
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> archive log list;
Database log mode        Archive Mode
Automatic archival        Enabled
Archive destination        /u01/oradata/tong/archive
Oldest online log sequence    78
Next log sequence to archive  80
Current log sequence        80
SQL>

dg1节点(standby角色):
SQL> archive log list;
Database log mode        Archive Mode
Automatic archival        Enabled
Archive destination        /u01/oradata/tong/archive
Oldest online log sequence    79
Next log sequence to archive  0
Current log sequence        80
SQL> alter database  recover managed standby database cancel; 
Database altered.
SQL> alter database open read only;
Database altered.
SQL> select * from tt;
  A
----------
    1
    3
    4
    5
    6
    7
    8
7 rows selected.
SQL>

相关推荐