本章主要介绍DG的switchover切换,当用方法论来统筹知识和经验的时候,操作笔记的价值并不大,不过新手可以借鉴
PRIMARY:
主库是处于open状态,有业务访问,v$database视图中的switchover_status字段为sessions active
由primary切换到standby需要数据库为open状态,若v$database视图中的switchover_status字段为sessions active,执行切换命令时,带上with session shutdown选项即可
SQL> select database_role,switchover_status from v$database;
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdown abort;
SQL> startup mount;
SQL> alter database recover managed standby database disconnect from session/using current logfile disconnect from session;
SQL> select database_role,switchover_status from v$database;
PHYSICAL STANDBY:
确认是否可以切换为主库,如果switchover_status为recovery needed或switchover latent,需要apply完所有归档日志才能切换
如果是sessions active则带上with session shutdown选项。apply完所有日志后,即可切换为primary,然后打开数据库
查看alert.log可以看到备库做了哪些动作:接收主库日志,接收到主库End-Of-REDO的信号,apply完所有日志,清空online redo log以便打开数据库,切换为primary,打开数据库
SQL> select database_role,switchover_status from v$database;
SQL> alter database recover managed standby database disconnect from session; #结束备库归档apply
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;
SQL> select database_role,switchover_status from v$database;
------------------------------------------------------------------------------------------------------------------------------------------
以上过过程中,由于主库断开所有session并归档,传输日志到备库,发给备库End-Of-REDO的信号,因此正常switchover时,是不会丢失数据的。
切换完成后可以在主库归档,验证一下是否切换成功,备库是否能正常接收日志。
------------------------------------------------------------------------------------------------------------------------------------------
switchover 主备切换演练,操作笔记
PRIMARY:
SQL> show user
USER is "SYS"
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL>
PHYSICAL STANDBY:
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
40 YES
41 YES
42 YES
44 YES
45 YES
43 YES
46 YES
47 YES
48 YES
49 IN-MEMORY
SQL> alter database recover managed standby database cancel;
Database altered.
此时,DG运行正常,接下来进行switchover切换
-------------------------------------------------------------------------------
PRIMARY:
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
SQL> alter database commit to switchover to physical standby;
Database altered.
注:若这边发现switchover_status状态为sessions active,则切换到physical standby时需要加上with session shutdown
执行完切换命令后,关闭数据库,重新启动数据库到mount状态,接受日志传输,开启日志应用
SQL> shutdown immediate
SQL> startup mount;
ORACLE instance started.
Total System Global Area 409194496 bytes
Fixed Size 2228864 bytes
Variable Size 339742080 bytes
Database Buffers 62914560 bytes
Redo Buffers 4308992 bytes
Database mounted.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY RECOVERY NEEDED
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED
SQL>
-------------------------------------------------------------------------------
PHYSICAL STANDBY:
当主库已经将database_role从PRIMARY切换至PHYSICAL STANDBY,此时查看备库的database_role和switchover_status
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY
SQL> alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
-------------------------------------------------------------------------------
验证笔记
原备库:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
beiku OPEN
SQL>
SQL>
SQL>
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
原主库
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
zhuku MOUNTED
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APPLIED
57 YES
56 YES
58 YES
59 YES
60 YES
61 YES
62 YES
63 YES
DG已经运行正常
至此,单节点DG的switchover切换已经完成,failover切换可能在后续的章节中介绍
PRIMARY:
主库是处于open状态,有业务访问,v$database视图中的switchover_status字段为sessions active
由primary切换到standby需要数据库为open状态,若v$database视图中的switchover_status字段为sessions active,执行切换命令时,带上with session shutdown选项即可
SQL> select database_role,switchover_status from v$database;
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdown abort;
SQL> startup mount;
SQL> alter database recover managed standby database disconnect from session/using current logfile disconnect from session;
SQL> select database_role,switchover_status from v$database;
PHYSICAL STANDBY:
确认是否可以切换为主库,如果switchover_status为recovery needed或switchover latent,需要apply完所有归档日志才能切换
如果是sessions active则带上with session shutdown选项。apply完所有日志后,即可切换为primary,然后打开数据库
查看alert.log可以看到备库做了哪些动作:接收主库日志,接收到主库End-Of-REDO的信号,apply完所有日志,清空online redo log以便打开数据库,切换为primary,打开数据库
SQL> select database_role,switchover_status from v$database;
SQL> alter database recover managed standby database disconnect from session; #结束备库归档apply
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;
SQL> select database_role,switchover_status from v$database;
------------------------------------------------------------------------------------------------------------------------------------------
以上过过程中,由于主库断开所有session并归档,传输日志到备库,发给备库End-Of-REDO的信号,因此正常switchover时,是不会丢失数据的。
切换完成后可以在主库归档,验证一下是否切换成功,备库是否能正常接收日志。
------------------------------------------------------------------------------------------------------------------------------------------
switchover 主备切换演练,操作笔记
PRIMARY:
SQL> show user
USER is "SYS"
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL>
PHYSICAL STANDBY:
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
40 YES
41 YES
42 YES
44 YES
45 YES
43 YES
46 YES
47 YES
48 YES
49 IN-MEMORY
SQL> alter database recover managed standby database cancel;
Database altered.
此时,DG运行正常,接下来进行switchover切换
-------------------------------------------------------------------------------
PRIMARY:
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
SQL> alter database commit to switchover to physical standby;
Database altered.
注:若这边发现switchover_status状态为sessions active,则切换到physical standby时需要加上with session shutdown
执行完切换命令后,关闭数据库,重新启动数据库到mount状态,接受日志传输,开启日志应用
SQL> shutdown immediate
SQL> startup mount;
ORACLE instance started.
Total System Global Area 409194496 bytes
Fixed Size 2228864 bytes
Variable Size 339742080 bytes
Database Buffers 62914560 bytes
Redo Buffers 4308992 bytes
Database mounted.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY RECOVERY NEEDED
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED
SQL>
-------------------------------------------------------------------------------
PHYSICAL STANDBY:
当主库已经将database_role从PRIMARY切换至PHYSICAL STANDBY,此时查看备库的database_role和switchover_status
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY
SQL> alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
-------------------------------------------------------------------------------
验证笔记
原备库:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
beiku OPEN
SQL>
SQL>
SQL>
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
原主库
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
zhuku MOUNTED
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APPLIED
57 YES
56 YES
58 YES
59 YES
60 YES
61 YES
62 YES
63 YES
DG已经运行正常
至此,单节点DG的switchover切换已经完成,failover切换可能在后续的章节中介绍
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30310891/viewspace-1729973/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30310891/viewspace-1729973/