您的位置:首页 > 其它

【DATAGUARD】物理dg的switchover切换(五)

2015-07-27 15:29 253 查看
【DATAGUARD】物理dg的switchover切换(五)

一.1  BLOG文档结构图

 

 

一.2  前言部分

 

一.2.1  导读

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 物理dg的switchover切换演练过程 ② 物理dg管理和维护的一些sql   注意:本篇thread 1的最大归档日志号为thread 2的最大归档日志号为IP地址: 192.168.59.130 192.168.59.130 OS版本及2.6.32-504.16.2.el6.x86_64 RHEL6.5 64位,blog了,看了大神们一直在坚持写dg,顺便演示failover的切换。    

一.3  相关知识点扫盲

1.角色 Oracle 数据库中含有两种角色。 用户角色:定义了一组权限的集合,该角色可以分配给用户,也可以分配给其他角色。 数据库角色:在备库中数据库扮演什么样的角色,primary还是standby。 v$database.DATABASE_ROLE标识了数据库的运行角色。 处于备库环境中,数据库有两种类型:phsical standby、logical standby。 2.角色管理服务 一个数据库运行在如下互相排斥的角色中。 Primary role:一个数据库运行在primary role,那么log transport services传递重做日志到备库。 Standby role:一个数据库运行在standby role,那么log apply services应用归档日志到备库。 角色管理服务允许用户动态地在主、备库中进行角色切换。 用户可以使用角色管理服务,进行主、备库的计划中的角色切换,这个叫switchover,或者是非计划中的角色切换,叫failover。 3.Switchover&Failover 切换是在主数据库与其备数据库之间进行角色反转,切换确保不丢失数据。这是对于主系统计划维护的典型操作。在切换期间,主数据库转换到备角色,备数据库转换到主角色。转换发生不需要重建任何数据库。 (1)Switchover 用到的场景:计划中的角色转换或用户操作系统和硬件的维护等。 (2)Failover 故障转移是当主数据库不可用时执行的。故障转移只有在主数据库灾难故障的情况下执行,并且故障转移导致备数据库转换到主角色。用到的场景:非计划中的角色切换,一般在紧急情况下使用。根据保护模式的不同,可能会没有或者很少的数据损失。 (3)角色转换决策树 角色转换(switchover&failover)的最终目的是尽快地使主库在线,而同时尽量减少数据损失或者是实现无数据损失。尽量选择宕机时间最短,同时数据损失最小的策略。总之在失败切换前,应该先考虑修复主数据库或者进行无数据损失的角色转换。 即使使用无数据损失的备库方案,修复主库可能会比切换到备库更快点。如果修复了主库,那么就不需要修改客户端的连接。但是如果修复工作导致了任何的数据损失,那么可能需要重新创建所有的备用数据库。 通常情况下,最合适切换的备库为已经应用了最多的归档日志的备用数据库。        

一.4  实验部分

 

一.4.1  实验目标

    ① 主库和物理switchover切换 ② 还原为最初始的状态  

一.4.2  实验过程

 

一.4.2.1  主库oradg11g的参数设置检查

  这里主要有fal_server、standby_file_management、log_filename_convert是否合理 ② standbylog file 是否已经创建   [oracle@rhel6_lhr ~]$ echo $ORACLE_SID oradg11g [oracle@rhel6_lhr ~]$ [oracle@rhel6_lhr ~]$ sqlplus / as sysdba   SQL*Plus: Release 11.2.0.3.0 Production on 星期日 7月 26 17:33:53 2015   Copyright (c) 1982, 2011, Oracle.  All rights reserved.     连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options   17:33:53 SQL> col name format a25 17:33:55 SQL> col VALUE format a20 17:33:55 SQL> SELECT a.NAME,a.VALUE 17:33:55   2  FROM   v$parameter a 17:33:55   3  WHERE  a.NAME LIKE '%file_name_convert' 17:33:55   4  OR     a.NAME LIKE 'fal%' 17:33:55   5  OR     a.NAME LIKE 'standby_file%';   NAME                      VALUE ------------------------- -------------------- db_file_name_convert      oradgphy, oradg11g log_file_name_convert     oradgphy, oradg11g fal_client                oradg11g fal_server                oradgphy standby_file_management   AUTO   已用时间:  00: 00: 00.01 17:33:56 SQL> 20:32:09 SQL> set line 9999 pagesize 9999 20:36:47 SQL> col  db_id  format a15 20:36:47 SQL> select  GROUP#, DBID db_id, THREAD#, SEQUENCE#, BYTES,  USED, ARCHIVED, STATUS, FIRST_CHANGE#,  NEXT_CHANGE#,LAST_CHANGE# from v$standby_log ;       GROUP# DB_ID              THREAD#  SEQUENCE#      BYTES       USED ARC STATUS     FIRST_CHANGE# NEXT_CHANGE# LAST_CHANGE# ---------- --------------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------ ------------          4 UNASSIGNED               1          0   52428800          0 YES UNASSIGNED          5 UNASSIGNED               1          0   52428800          0 YES UNASSIGNED          6 UNASSIGNED               0          0   52428800          0 YES UNASSIGNED          7 UNASSIGNED               0          0   52428800          0 YES UNASSIGNED   已用时间:  00: 00: 00.02 20:36:47 SQL> select * from v$logfile;       GROUP# STATUS  TYPE    MEMBER                                                                                                                                                                                     IS_ ---------- ------- ------- --------------------------------------------------- ---          3         ONLINE  /u01/app/oracle/oradata/oradg11g/redo03.log                                                                                                                                                NO          2         ONLINE  /u01/app/oracle/oradata/oradg11g/redo02.log                                                                                                                                                NO          1         ONLINE  /u01/app/oracle/oradata/oradg11g/redo01.log                                                                                                                                                NO          4         STANDBY /u01/app/oracle/oradata/oradg11g/standby_redo04.log                                                                                                                                        NO          5         STANDBY /u01/app/oracle/oradata/oradg11g/standby_redo05.log                                                                                                                                        NO          6         STANDBY /u01/app/oracle/oradata/oradg11g/standby_redo06.log                                                                                                                                        NO          7         STANDBY /u01/app/oracle/oradata/oradg11g/standby_redo07.log                                                                                                                                        NO   已选择7行。   已用时间:  00: 00: 00.00 20:37:00 SQL> ! ls  /u01/app/oracle/oradata/oradg11g/standby* /u01/app/oracle/oradata/oradg11g/standby_redo04.log  /u01/app/oracle/oradata/oradg11g/standby_redo06.log /u01/app/oracle/oradata/oradg11g/standby_redo05.log  /u01/app/oracle/oradata/oradg11g/standby_redo07.log   20:37:11 SQL>  

一.4.2.2  主库oradg11g执行切换

17:35:45 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   READ WRITE          PRIMARY          TO STANDBY           oradg11g   已用时间:  00: 00: 00.01 17:35:46 SQL> alter database commit to switchover to physical standby with session shutdown;   数据库已更改。   已用时间:  00: 00: 06.22 17:36:14 SQL> shutdown immediate ORA-01092: ORACLE instance terminated. Disconnection forced 17:36:35 SQL> ORA-24324: 未初始化服务句柄 ORA-01041: 内部错误, hostdef 扩展名不存在 17:36:35 SQL> exit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开 [oracle@rhel6_lhr ~]$ sqlplus / as sysdba   SQL*Plus: Release 11.2.0.3.0 Production on 星期日 7月 26 17:36:39 2015   Copyright (c) 1982, 2011, Oracle.  All rights reserved.   已连接到空闲例程。   17:36:39 SQL> startup  mount; ORACLE 例程已经启动。   Total System Global Area  325685248 bytes Fixed Size                  2228064 bytes Variable Size             192938144 bytes Database Buffers          125829120 bytes Redo Buffers                4689920 bytes 数据库装载完毕。 17:36:52 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   MOUNTED             PHYSICAL STANDBY RECOVERY NEEDED      oradg11g   已用时间:  00: 00: 00.01 17:37:04 SQL>   告警日志: Sun Jul 26 17:36:07 2015 alter database commit to switchover to physical standby with session shutdown ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY [Process Id: 37669] (oradg11g) Sun Jul 26 17:36:07 2015 Thread 1 advanced to log sequence 127 (LGWR switch)   Current log# 1 seq# 127 mem# 0: /u01/app/oracle/oradata/oradg11g/redo01.log Sun Jul 26 17:36:07 2015 Stopping background process CJQ0 Stopping background process QMNC All dispatchers and shared servers shutdown CLOSE: killing server sessions. Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37415 user 'grid' program 'oracle@rhel6_lhr' Active process 37413 user 'grid' program 'oracle@rhel6_lhr' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' Active process 37483 user 'oracle' program 'oracle@rhel6_lhr (W000)' CLOSE: all sessions shutdown successfully. Waiting for all non-current ORLs to be archived... Waiting for the ORL for thread 1 sequence 126 to be archived... Sun Jul 26 17:36:11 2015 Archived Log entry 349 added for thread 1 sequence 126 ID 0x5441e6d9 dest 1: ORL for thread 1 sequence 126 has been archived... All non-current ORLs have been archived. Waiting for all FAL entries to be archived... All FAL entries have been archived. Waiting for potential Physical Standby switchover target to become synchronized... Active, synchronized Physical Standby switchover target has been identified Switchover End-Of-Redo Log thread 1 sequence 127 has been fixed Switchover: Primary highest seen SCN set to 0x0.0x1a1f6f ARCH: Noswitch archival of thread 1, sequence 127 ARCH: End-Of-Redo Branch archival of thread 1 sequence 127 ARCH: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2 ARCH: Standby redo logfile selected for thread 1 sequence 127 for destination LOG_ARCHIVE_DEST_2 Archived Log entry 350 added for thread 1 sequence 127 ID 0x5441e6d9 dest 1: ARCH: Archiving is disabled due to current logfile archival Primary will check for some target standby to have received alls redo Final check for a synchronized target standby. Check will be made once. LOG_ARCHIVE_DEST_2 is a potential Physical Standby switchover target Active, synchronized target has been identified Target has also received all redo Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/oradg11g/oradg11g/trace/oradg11g_ora_37669.trc Clearing standby activation ID 1413605081 (0x5441e6d9) The primary database controlfile was created using the 'MAXLOGFILES 16' clause. There is space for up to 13 standby redo logfiles Use the following SQL commands on the standby database to create standby redo logfiles that match the primary database: ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 52428800; Archivelog for thread 1 sequence 127 required for standby recovery Switchover: Primary controlfile converted to standby controlfile succesfully. Switchover: Complete - Database shutdown required Completed: alter database commit to switchover to physical standby with session shutdown Sun Jul 26 17:36:15 2015 Process (ospid 26918) is suspended due to switchover to physical standby operation.     Sun Jul 26 17:36:33 2015 Performing implicit shutdown abort due to switchover to physical standby Shutting down instance (abort) License high water mark = 7 USER (ospid: 37669): terminating the instance Instance terminated by USER, pid = 37669 Sun Jul 26 17:36:35 2015 Instance shutdown complete ORA-1092 : opitsk aborting process Sun Jul 26 17:36:44 2015 Starting ORACLE instance (normal) ****************** Large Pages Information *****************   Total Shared Global Region in Large Pages = 0 KB (0%)   Large Pages used by this instance: 0 (0 KB) Large Pages unused system wide = 0 (0 KB) (alloc incr 4096 KB) Large Pages configured system wide = 0 (0 KB) Large Page size = 2048 KB   RECOMMENDATION:   Total Shared Global Region size is 314 MB. For optimal performance,   prior to the next instance restart increase the number   of unused Large Pages by atleast 157 2048 KB Large Pages (314 MB)   system wide to get 100% of the Shared   Global Region allocated with Large pages *********************************************************** LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 Picked latch-free SCN scheme 3 Autotune of undo retention is turned on. IMODE=BR ILAT =27 LICENSE_MAX_USERS = 0 SYS auditing is disabled Starting up: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options. ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1 System name:    Linux Node name:      rhel6_lhr Release:        2.6.32-504.16.2.el6.x86_64 Version:        #1 SMP Tue Apr 21 08:37:59 PDT 2015 Machine:        x86_64 VM name:        VMWare Version: 6 Using parameter settings in server-side spfile /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileoradg11g.ora System parameters with non-default values:   processes                = 150   sga_target               = 312M   control_files            = "/u01/app/oracle/oradata/oradg11g/control01.ctl"   control_files            = "/u01/app/oracle/flash_recovery_area/oradg11g/control02.ctl"   db_file_name_convert     = "oradgphy"   db_file_name_convert     = "oradg11g"   log_file_name_convert    = "oradgphy"   log_file_name_convert    = "oradg11g"   db_block_size            = 8192   compatible               = "11.2.0.0.0"   log_archive_dest_1       = "LOCATION=USE_DB_RECOVERY_FILE_DEST db_unique_name=oradg11g valid_for=(ALL_LOGFILES,ALL_ROLES)"   log_archive_dest_2       = "SERVICE=tns_oradgphy LGWR ASYNC db_unique_name=oradgphy valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)"   log_archive_dest_3       = "SERVICE=tns_oradglg LGWR ASYNC db_unique_name=oradglg valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)"   log_archive_dest_4       = "SERVICE=tns_oradgss LGWR ASYNC db_unique_name=oradgss valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)"   log_archive_dest_state_1 = "ENABLE"   log_archive_dest_state_2 = "ENABLE"   log_archive_dest_state_3 = "defer"   log_archive_dest_state_4 = "defer"   fal_client               = "oradg11g"   fal_server               = "oradgphy"   log_archive_config       = "DG_CONFIG=(oradg11g,oradgphy,oradglg,oradgss)"   log_archive_max_processes= 6   db_recovery_file_dest    = "/u01/app/oracle/flash_recovery_area"   db_recovery_file_dest_size= 4122M   standby_file_management  = "AUTO"   undo_tablespace          = "UNDOTBS1"   remote_login_passwordfile= "EXCLUSIVE"   db_domain                = ""   dispatchers              = "(PROTOCOL=TCP) (SERVICE=oradg11gXDB)"   audit_file_dest          = "/u01/app/oracle/admin/oradg11g/adump"   audit_trail              = "DB"   db_name                  = "oradg11g"   db_unique_name           = "oradg11g"   open_cursors             = 300   pga_aggregate_target     = 78M   diagnostic_dest          = "/u01/app/oracle" Sun Jul 26 17:36:45 2015 PMON started with pid=2, OS id=37709 Sun Jul 26 17:36:45 2015 PSP0 started with pid=3, OS id=37711 Sun Jul 26 17:36:46 2015 VKTM started with pid=4, OS id=37713 at elevated priority VKTM running at (1)millisec precision with DBRM quantum (100)ms Sun Jul 26 17:36:46 2015 GEN0 started with pid=5, OS id=37717 Sun Jul 26 17:36:46 2015     这一步容易出现问题,注意下边的问题: alter database commit to switchover to physical standby with session shutdown; 稍等。。。。等待数据库挂掉后再启动到mount,千万别shutdown immediate,应该用shutdown abort,等待告警日志中出现如下提示再进行下一步操作,否则可能导致switchover切换失败,主库将不可用 --Switchover: Primary controlfile converted to standby controlfile succesfully. --Switchover: Complete - Database shutdown required --Completed: alter database commit to switchover to physical standby with session shutdown --Sun Jul 26 17:36:15 2015 --Process (ospid 26918) is suspended due to switchover to physical standby operation.      

一.4.2.3  备库oradgphy执行切换

[oracle@rhel6_lhr admin]$ echo $ORACLE_SID oradgphy [oracle@rhel6_lhr admin]$ sqlplus / as sysdba   SQL*Plus: Release 11.2.0.3.0 Production on 星期日 7月 26 17:40:24 2015   Copyright (c) 1982, 2011, Oracle.  All rights reserved.     连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options   17:40:24 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY           oradgphy   已用时间:  00: 00: 00.01 17:40:28 SQL> alter database commit to switchover to primary with session shutdown;   数据库已更改。   已用时间:  00: 00: 02.07 17:40:44 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   MOUNTED             PRIMARY          NOT ALLOWED          oradgphy   已用时间:  00: 00: 00.01 17:40:56 SQL> 17:42:47 SQL> alter database open;   数据库已更改。   已用时间:  00: 00: 01.88 17:43:04 SQL>   告警日志: Sun Jul 26 17:40:42 2015 alter database commit to switchover to primary with session shutdown ALTER DATABASE SWITCHOVER TO PRIMARY (oradgphy) Maximum wait for role transition is 15 minutes. Switchover: Media recovery is still active Role Change: Canceling MRP - no more redo to apply Sun Jul 26 17:40:44 2015 MRP0: Background Media Recovery cancelled with status 16037 Errors in file /u01/app/oracle/diag/rdbms/oradgphy/oradgphy/trace/oradgphy_pr00_28229.trc: ORA-16037: user requested cancel of managed recovery operation Managed Standby Recovery not using Real Time Apply Recovery interrupted! Sun Jul 26 17:40:44 2015 MRP0: Background Media Recovery process shutdown (oradgphy) Role Change: Canceled MRP All dispatchers and shared servers shutdown CLOSE: killing server sessions. CLOSE: all sessions shutdown successfully. Sun Jul 26 17:40:44 2015 SMON: disabling cache recovery Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/oradgphy/oradgphy/trace/oradgphy_ora_37868.trc SwitchOver after complete recovery through change 1711983 Online log /u01/app/oracle/oradata/oradgphy/redo01.log: Thread 1 Group 1 was previously cleared Online log /u01/app/oracle/oradata/oradgphy/redo02.log: Thread 1 Group 2 was previously cleared Online log /u01/app/oracle/oradata/oradgphy/redo03.log: Thread 1 Group 3 was previously cleared Standby became primary SCN: 1711981 AUDIT_TRAIL initialization parameter is changed back to its original value as specified in the parameter file. Switchover: Complete - Database mounted as primary Completed: alter database commit to switchover to primary with session shutdown Sun Jul 26 17:41:14 2015 idle dispatcher 'D000' terminated, pid = (17, 1)  

一.4.2.4  新备库oradg11g开启实时应用

[oracle@rhel6_lhr ~]$ echo $ORACLE_SID oradg11g [oracle@rhel6_lhr ~]$ sqlplus / as sysdba   SQL*Plus: Release 11.2.0.3.0 Production on 星期日 7月 26 17:45:47 2015   Copyright (c) 1982, 2011, Oracle.  All rights reserved.     连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options   17:45:47 SQL>  select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   MOUNTED             PHYSICAL STANDBY RECOVERY NEEDED      oradg11g   已用时间:  00: 00: 00.01 17:45:53 SQL> alter database recover managed standby database using current logfile disconnect;   数据库已更改。   已用时间:  00: 00: 06.02 17:46:13 SQL> alter database recover managed standby database cancel;   数据库已更改。   已用时间:  00: 00: 01.48 17:46:16 SQL> alter database open;   数据库已更改。   已用时间:  00: 00: 00.56 17:46:21 SQL> alter database recover managed standby database using current logfile disconnect;   数据库已更改。   已用时间:  00: 00: 06.02 17:46:35 SQL>  

一.4.2.5  测试切换后的情况

  17:47:42 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_ --------- ------------ -------------------- ---------------- -------------------- ---------- ORADG11G  ARCHIVELOG   READ WRITE           PRIMARY          TO STANDBY           oradgphy   已用时间:  00: 00: 00.00 17:47:54 SQL> create table test as select * from scott.emp;   表已创建。   已用时间:  00: 00: 00.86 17:48:21 SQL> select count(1) from test;     COUNT(1) ----------         14   已用时间:  00: 00: 00.00 17:50:27 SQL> 17:50:27 SQL> conn sys/lhr@tns_oradg11g as sysdba 已连接。 17:50:42 SQL> select count(1) from test;     COUNT(1) ----------         14   已用时间:  00: 00: 00.01 17:50:46 SQL> conn sys/lhr@tns_oradgphy as sysdba 已连接。 17:51:08 SQL> drop table test;   表已删除。   已用时间:  00: 00: 01.14 17:51:13 SQL> conn sys/lhr@tns_oradgphy as sysdba 已连接。 17:51:17 SQL> conn sys/lhr@tns_oradg11g as sysdba 已连接。 17:51:21 SQL> select count(1) from test; select count(1) from test                      * 第 1 行出现错误: ORA-00942: 表或视图不存在     已用时间:  00: 00: 00.00 17:51:24 SQL>

一.4.2.6  切换回原来最初的状态

新主库oradg11g操作: 20:28:46 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY           oradg11g   已用时间:  00: 00: 00.01 20:31:20 SQL> alter database commit to switchover to primary with session shutdown;   数据库已更改。   已用时间:  00: 00: 02.07 20:31:32 SQL> alter database open;   数据库已更改。   已用时间:  00: 00: 00.34 20:31:38 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   READ WRITE           PRIMARY          RESOLVABLE GAP       oradg11g   已用时间:  00: 00: 00.00     oradgphy 操作: 20:30:54 SQL> alter database recover managed standby database using current logfile disconnect;   数据库已更改。   已用时间:  00: 00: 06.04 20:32:23 SQL> alter database recover managed standby database cancel;   数据库已更改。   已用时间:  00: 00: 01.01 20:32:36 SQL> alter database open;   数据库已更改。   已用时间:  00: 00: 00.21 20:32:42 SQL> alter database recover managed standby database using current logfile disconnect;     数据库已更改。   已用时间:  00: 00: 06.02 20:32:53 SQL> 20:32:53 SQL>  select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;   NAME      LOG_MODE     OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME --------- ------------ -------------------- ---------------- -------------------- ------------------------------ ORADG11G  ARCHIVELOG   READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED          oradgphy   已用时间:  00: 00: 00.00 20:33:21 SQL>   OK,切换完成。      

一.4.3  实验总结

  切换过程中尤其注意主库执行abort掉,或者我们手动的dg环境不可用从而变为了rman备份比较稳妥一些。    

一.5  总结

  进行Dataguard switchover和failover是非常常见的运维需求,在实际场景下,我们尽可能选择稳妥完全的策略进行操作,SQL命令还是我们比较好的选择,多操作几次就熟悉了。      

一.6  About Me

  ........................................................................................................................................................................................... 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用 ITPUB BLOG:http://blog.itpub.net/26736162 本文地址:http://blog.itpub.net/26736162/viewspace-1753111/ 本文pdf版:http://yunpan.cn/QCwUAI9bn7g7w  提取码:af2d QQ:642808185 若加QQ请注明你所正在读的文章标题 创作时间地点:2015-07-26 09:00~ 2015-07-27 19:00 于唐镇金唐公寓宿舍 <版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任!> ...........................................................................................................................................................................................    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: