ITPub博客

首页 > 数据库 > Oracle > DG物理standby,failover步骤

DG物理standby,failover步骤

原创 Oracle 作者:panpong 时间:2014-09-09 10:06:34 0 删除 编辑

DG物理standby,failover步骤

       环境为11gR2,oracle linux 6.4;物理standby,单实例;假设primary(db20)异常关闭数据库,需要切换物理standby(db66)为新primary 数据库;

步骤1:检查归档日志是否缺失

       如果异常的primary数据库还能够mount上,则启动到mount状态,然后执行SQL,补发日志;

       SQL> ALTER SYSTEM FLUSH REDO TO target_db_name;

target_db_name 为db_unique_name,log_archive_dest_n中指定的;如果执行成功,则可以保证数据无丢失;

       如果异常主库不能mount,则需要拷贝备库缺失的归档日志到备库,然后注册;

               SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

 

步骤2:备库停止redo应用

       db66:

       SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

步骤3:手动完成所有redo应用

       SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

如果执行没有报任何错误,则执行步骤4;如果报错并不能够解决,则执行activate,    SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

然后执行步骤6;

 

步骤4:查询备库状态

       SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

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

TO PRIMARY

1 row selected

如果SWITCHOVER_STATUS 为TO PRIMARY 或 SESSIONS ACTIVE值,为正常状态,可以switchover为primary;

 

步骤5:切换到主库

       SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

 

步骤6:打开新主库到open

       SQL> ALTER DATABASE OPEN;

       打开新主库;备份新主库,然后启动其他物理备库已经停止的日志应用;

 

打开新主库是报错:

SQL> startup open

ORACLE instance started.

 

Total System Global Area  839282688 bytes

Fixed Size                  2233000 bytes

Variable Size             637537624 bytes

Database Buffers          192937984 bytes

Redo Buffers                6574080 bytes

Database mounted.

ORA-03113: end-of-file on communication channel

Process ID: 12427

Session ID: 191 Serial number: 3

 

查看alert日志文件,如下:

Error 12514 received logging on to the standby

LGWR: Error 12514 verifying archivelog destination LOG_ARCHIVE_DEST_2

Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED

LGWR: Continuing...

LGWR: Minimum of 1 applicable standby database required

Errors in file /u01/app/oracle/diag/rdbms/db66/oradb/trace/oradb_lgwr_12367.trc:

ORA-16072: a minimum of one standby database destination is required

LGWR (ospid: 12367): terminating the instance due to error 16072

System state dump requested by (instance=1, osid=12367 (LGWR)), summary=[abnormal instance termination].

System State dumped to trace file /u01/app/oracle/diag/rdbms/db66/oradb/trace/oradb_diag_12357.trc

Dumping diagnostic data in directory=[cdmp_20140228172732], requested by (instance=1, osid=12367 (LGWR)), summary=[abnormal instance termination].

Instance terminated by LGWR, pid = 12367

       通过上面的内容,发现报错在归档日志位置LOG_ARCHIVE_DEST_2,这个参数设置DG下primary数据库的日志传送;由于原来的DG是maximize protect模式,而在failover后,原primary无法达到,则报错;修改DG的保护模式为maximize availability即可

SQL> alter database set standby database to maximize availability;

 

Database altered.

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM AVAILABILITY RESYNCHRONIZATION

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16976507/viewspace-1266120/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
数据库工程师,熟悉Oracle,Postgresql,MySQL等主流关系型数据库运维,调优,一直活跃在运维一线。了解Python,Django,简单自动化运维系统开发。

注册时间:2009-03-06

  • 博文量
    142
  • 访问量
    392355