签到成功

知道了

CNDBA社区CNDBA社区

Oracle 12c 新特性 --- Data Guard使用DBMS_ROLLING进行滚动升级

2017-08-29 00:48 3626 0 原创 Oracle 12c Data Guard
作者: leo

概念

http://www.cndba.cn/leo1990/article/2188
http://www.cndba.cn/leo1990/article/2188http://www.cndba.cn/leo1990/article/2188

Active Data Guard provides several new PL/SQL packages and DDL commands to automate the previous manual steps of performing a database rolling upgrade to a new Oracle patch set, database release, or to perform other planned maintenance. The process starts with a primary and physical standby database at the previous version and ends with both primary and physical standby database at the new version. The automation includes handling the switchover of production to the new version. It also performs extensive validation at every step of the process. If problems are encountered users can choose to either correct the error and resume the upgrade or roll back to the original state of the configuration.
Active Data Guard提供了几个新的PL / SQL包和DDL命令,以自动化执行数据库滚动升级到新Oracle补丁集、数据库发布或执行其他计划维护的前手动步骤。这个过程从上一个版本的主和物理备用数据库开始,并在新版本中以主和物理备用数据库结束。自动化包括处理新版本的生产转换。它还在过程的每一步执行广泛的验证。如果遇到问题,用户可以选择纠正错误并恢复升级,或者回滚到配置的原始状态。

Rolling upgrade using Active Data Guard reduces management effort and improves the reliability of performing database rolling upgrades. Users benefit from lower administrative cost and higher availability by reducing downtime for planned maintenance.

使用Active Data Guard进行滚动升级可以减少管理工作,提高执行数据库滚动升级的可靠性。用户受益于较低的管理成本和更高的可用性,减少了计划维护的停机时间。

http://www.cndba.cn/leo1990/article/2188

实验 http://www.cndba.cn/leo1990/article/2188

http://www.cndba.cn/leo1990/article/2188
http://www.cndba.cn/leo1990/article/2188

环境说明:

 1)DG 环境是单实例主备库,一主一备
 2)主库unique_name pdbcndba_p,备库unique_name pdbcndba_s
 
1. 先决条件
   1. Compatible Parameter must be set to 12.1 and above.
   2. Flashback must be enabled on Primary and Physical Standby.
   SQL>select flashback_on from v$database;
   3. If DG configuration has DG broker enabled, it must be disabled during the process of ROLLING
   UPGRADE.
   4. On Primary and all the Standby DBs Remote destination (LAD)
   VALID_FOR=(ONLINE/ALL_LOGFILES,PRIMARY_ROLE) must be set to avoid REDO shipping errors
   during the process of rolling upgrade. In fact REDO shipping errors will cause issues in
   DBMS_ROLLING.
   5. REMOTE log shipping must be set on primary and all the standby databases with valid_for clause
   else switchover will fail. If Dg Broker enabled then LAD will not be set on Standby. After disabling
   DG broker LAD must be set manually on Standby.
   6. STANDBY_FILE_MANAGEMENT and DB_FILE_NAME_CONVERT should be set properly on
   primary and physical standby databases to avoid any error before logical standby conversion.
   SQL>show parameter standby
   SQL>show parameter convert
   7. FAL_SERVER must be set to pull the logs in case of GAP.
   SQL>show parameter fal
   8. Protection mode must be either maximize performance or maximize availability.
   9. Use SPFILE.
   10. Target Standby database must be in mount mode before START_PLAN.
--根据先决条件调整 DG 环境配置
1.1 开启主备库闪回
[leo@www.cndba.cn admin]$ sqlplus "/as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Wed Aug 23 15:37:47 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select flashback_on from V$database;

FLASHBACK_ON
------------------
NO

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>  startup mount
ORACLE instance started.

Total System Global Area 1560281088 bytes
Fixed Size		    2924784 bytes
Variable Size		  939527952 bytes
Database Buffers	  603979776 bytes
Redo Buffers		   13848576 bytes
Database mounted.
SQL> alter database flashback on;
select flashback_on from V$database;
Database altered.

SQL> select flashback_on from V$database;

FLASHBACK_ON
------------------
YES

SQL> alter database open;

Database altered.

SQL> show parameter recovery

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest		     string	 /u01/app/oracle/fast_recovery_area
db_recovery_file_dest_size	     big integer 4560M
recovery_parallelism		     integer	 0


1.2 修改主备库参数

--修改主库参数
--另外之前的LOG_ARCHIVE_DEST_1是valid for (ALL_LOGFILES,ALL_ROLES), 需要修改为(ONLINE_LOGFILES,ALL_ROLES)
SQL> alter system set log_archive_dest_1='location=/u01/archive valid_for=(ONLINE_LOGFILES,all_roles) db_unique_name=pdbcndba_p' scope=both;

System altered.
--注意:LOG_ARCHIVE_DEST_3只在主数据库转换成逻辑备用角色时生效
SQL> alter system set LOG_ARCHIVE_DEST_3='LOCATION=/u01/archivelog_logical VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pdbcndba_p' scope=both;

System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both; 

System altered.

--修改备库参数
--另外之前的LOG_ARCHIVE_DEST_1是valid for (ALL_LOGFILES,ALL_ROLES), 需要修改为(ONLINE_LOGFILES,ALL_ROLES)
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pdbcndba_s' scope=both;  

System altered.

SQL> alter system set LOG_ARCHIVE_DEST_3='LOCATION=/u01/archivelog_logical VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pdbcndba_s' scope=both; 

System altered.

SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;  

System altered.

SQL> alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both; 

System altered.

1.3 STANDBY_FILE_MANAGEMENT and DB_FILE_NAME_CONVERT 查看参数是否配置,没有配置要配置

SQL> show parameter standby

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest		     string	 ?/dbs/arch
standby_file_management 	     string	 AUTO
SQL> show parameter convert

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string	 /u01/app/oracle/oradata/cndba,
						  /u01/app/oracle/oradata/cndba
log_file_name_convert		     string	 /u01/app/oracle/oradata/cndba,
						  /u01/app/oracle/oradata/cndba
pdb_file_name_convert		     string

1.4 参数FAL_SERVER 要配置
SQL> show parameter fal

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
fal_client			     string
fal_server			     string	 pdbcndba_s
1.5 DG 要处于maximize performance 或者 maximize availability 模式
SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PRIMARY	      MAXIMUM PERFORMANCE  READ WRITE

1.6 执行存储过程START_PLAN 之前 备库数据库处于mount 状态
 2 升级步骤
总的来说,它包括三个DBMS_ROLLING和升级步骤。甲骨文内部执行了65个滚动
在完全升级过程中全面升级指令。
   2.1. Start
   2.2. Upgrade Leading Group
   2.3. Switchover
   2.4. Start the Trailing Group in new ORACLE_HOME
   2.4. Finish
 2.1 Start 

调用DBMS_ROLLING.START_PLAN程序配置未来的主要和物理标准,以保护未来的主。
DBMS_ROLLING.START_PLAN程序是滚动升级的正式开始。START_PLAN过程的目标是配置临时的逻辑备用数据库和任何指定保护它的物理备用数据库。在调用时,START_PLAN程序执行升级计划中的所有指令,并使用START_PLAN的PHASE value 。执行的指令的类型包括:

      * Backing up the control file for each database to a trace file
      * Creating flashback database guaranteed restore points
      * Building a LogMiner dictionary at the primary database
      * Recovering the designated physical standby into a transient logical standby database
      * Loading the LogMiner dictionary into the logical standby database
      * Configuring LGS databases with the transient logical standby database
 2.1.1 Init Plan 
--将备库启动到mount 状态
[leo@www.cndba.cn ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Fri Aug 25 12:06:59 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> shutdown immediate                     
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1560281088 bytes
Fixed Size		    2924784 bytes
Variable Size		  939527952 bytes
Database Buffers	  603979776 bytes
Redo Buffers		   13848576 bytes
Database mounted.

--主库执行dbms_rolling.init_plan 存储过程
[leo@www.cndba.cn dbs]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Fri Aug 25 10:33:35 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  exec dbms_rolling.init_plan('pdbcndba_s');

PL/SQL procedure successfully completed.

SQL>  select revision, status, phase from dba_rolling_status;   

  REVISION       STATUS	    PHASE
---------- ------------ --------------
	 0            READY	  BUILD PENDING


2.1.2调整升级参数(可选) 
可参考下面语句进行参数调整
SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(name=>'SWITCH_LGM_LAG_WAIT',value=>'300');

SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(name=>'ACTIVE_SESSIONS_TIMEOUT',value=>'3000');

SQL> col scope for a30
SQL> col curval for a50 
SQL> set line 500
SQL> col curval for a50 
SQL>  select scope, name, curval from dba_rolling_parameters order by scope, name; 

SCOPE			                NAME				            CURVAL
------------------------------ -------------------------------- --------------------------------------------------
pdbcndba_p		               INVOLVEMENT			            FULL
pdbcndba_p		               MEMBER				            NONE
pdbcndba_s		               INVOLVEMENT			            FULL
pdbcndba_s		               MEMBER				            TRAILING
			                   ACTIVE_SESSIONS_TIMEOUT		    3600
			                   ACTIVE_SESSIONS_WAIT		        0
			                   BACKUP_CONTROLFILE		        rolling_change_backup.f
			                   DICTIONARY_LOAD_TIMEOUT		    3600
			                   DICTIONARY_LOAD_WAIT		        0
			                   DICTIONARY_PLS_WAIT_INIT 	    300
			                   DICTIONARY_PLS_WAIT_TIMEOUT	    3600

SCOPE			               NAME				                CURVAL
------------------------------ -------------------------------- --------------------------------------------------
			                   EVENT_RECORDS			        10000
			                   FAILOVER 			            0
			                   GRP_PREFIX			            DBMSRU_
			                   IGNORE_BUILD_WARNINGS		    1
			                   IGNORE_LAST_ERROR		        0
			                   LAD_ENABLED_TIMEOUT		        600
			                   LOG_LEVEL			            INFO
			                   READY_LGM_LAG_TIME		        600
			                   READY_LGM_LAG_TIMEOUT		    60
			                   READY_LGM_LAG_WAIT		        0
			                   SWITCH_LGM_LAG_TIME		        600

SCOPE			               NAME				                CURVAL
------------------------------ -------------------------------- --------------------------------------------------
			                   SWITCH_LGM_LAG_TIMEOUT		    60
			                   SWITCH_LGM_LAG_WAIT		        1
			                   SWITCH_LGS_LAG_TIME		        60
			                   SWITCH_LGS_LAG_TIMEOUT	        60
			                   SWITCH_LGS_LAG_WAIT		        0
			                   UPDATED_LGS_TIMEOUT		        10800
			                   UPDATED_LGS_WAIT 		        1
			                   UPDATED_TGS_TIMEOUT		        10800
			                   UPDATED_TGS_WAIT 		        1

31 rows selected.

2.1.3 BUILD_PLAN

SQL> exec dbms_rolling.build_plan; 

PL/SQL procedure successfully completed.

SQL> select revision, status, phase from dba_rolling_status; 

  REVISION STATUS	    PHASE
---------- ------------ --------------
	     1 READY	    START PENDING

SQL> col DBUN for a20
SQL> col ROLE for a20
SQL> col open_mode for a20
SQL> col engine_status for a20
SQL> col update_progress for a20
SQL> select dbun,role,open_mode,engine_status,update_progress from dba_rolling_databases; 

DBUN		         ROLE		          OPEN_MODE	           ENGINE_STATUS	    UPDATE_PROGRESS
-------------------- -------------------- -------------------- -------------------- --------------------
pdbcndba_p	         PRIMARY		      OPEN READ WRITE      NOT APPLICABLE	    NOT STARTED
pdbcndba_s	         PHYSICAL		      MOUNTED	           STOPPED		        NOT STARTED

SQL> col target for a35
SQL> col descroption for a40
SQL> set line 1000 
SQL> SELECT instid, target, phase, description FROM DBA_ROLLING_PLAN;

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	 1 pdbcndba_p			       START	      Verify database is a primary
	 2 pdbcndba_p			       START	      Verify MAXIMUM PROTECTION is disabled
	 3 pdbcndba_s			       START	      Verify database is a physical standby
	 4 pdbcndba_s			       START	      Verify physical standby is mounted
	 5 pdbcndba_p			       START	      Verify server parameter file exists and is modifiable
	 6 pdbcndba_s			       START	      Verify server parameter file exists and is modifiable
	 7 pdbcndba_p			       START	      Verify Data Guard Broker configuration is disabled
	 8 pdbcndba_s			       START	      Verify Data Guard Broker configuration is disabled
	 9 pdbcndba_p			       START	      Verify flashback database is enabled
	10 pdbcndba_p			       START	      Verify available flashback restore points
	11 pdbcndba_s			       START	      Verify flashback database is enabled

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	12 pdbcndba_s			       START	      Verify available flashback restore points
	13 pdbcndba_s			       START	      Stop media recovery
	14 pdbcndba_s			       START	      Drop guaranteed restore point DBMSRU_INITIAL
	15 pdbcndba_s			       START	      Create guaranteed restore point DBMSRU_INITIAL
	16 pdbcndba_p			       START	      Drop guaranteed restore point DBMSRU_INITIAL
	17 pdbcndba_p			       START	      Create guaranteed restore point DBMSRU_INITIAL
	18 pdbcndba_s			       START	      Start media recovery
	19 pdbcndba_s			       START	      Verify media recovery is running
	20 pdbcndba_p			       START	      Verify user_dump_dest has been specified
	21 pdbcndba_p			       START	      Backup control file to rolling_change_backup.f
	22 pdbcndba_s			       START	      Verify user_dump_dest has been specified

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	23 pdbcndba_s			       START	      Backup control file to rolling_change_backup.f
	24 pdbcndba_p			       START	      Get current redo branch of the primary database
	25 pdbcndba_s			       START	      Wait until recovery is active on the primary's redo branch
	26 pdbcndba_s			       START	      Stop media recovery
	27 pdbcndba_p			       START	      Execute dbms_logstdby.build
	28 pdbcndba_s			       START	      Convert into a transient logical standby
	29 pdbcndba_s			       START	      Open database
	30 pdbcndba_s			       START	      Get redo branch of transient logical standby
	31 pdbcndba_s			       START	      Get reset scn of transient logical redo branch
	32 pdbcndba_s			       START	      Configure logical standby parameters
	33 pdbcndba_s			       START	      Start logical standby apply

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	34 pdbcndba_s			       START	      Enable compatibility advance despite presence of GRPs
	35 pdbcndba_p			       START	      Log pre-switchover instructions to events table
	36 pdbcndba_s			       START	      Record start of user upgrade of pdbcndba_s
	37 pdbcndba_s			       SWITCH	      Verify database is in OPENRW mode
	38 pdbcndba_s			       SWITCH	      Record completion of user upgrade of pdbcndba_s
	39 pdbcndba_s			       SWITCH	      Scan LADs for presence of pdbcndba_p destination
	40 pdbcndba_s			       SWITCH	      Test if pdbcndba_p is reachable using configured TNS service
	41 pdbcndba_p			       SWITCH	      Enable log file archival to pdbcndba_s
	42 pdbcndba_s			       SWITCH	      Start logical standby apply
	43 pdbcndba_s			       SWITCH	      Archive all current online redo logs
	44 pdbcndba_s			       SWITCH	      Wait until apply lag has fallen below 600 seconds

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	45 pdbcndba_p			       SWITCH	      Log post-switchover instructions to events table
	46 pdbcndba_p			       SWITCH	      Switch database to a logical standby
	47 pdbcndba_s			       SWITCH	      Wait until end-of-redo has been applied
	48 pdbcndba_p			       SWITCH	      Archive all current online redo logs
	49 pdbcndba_s			       SWITCH	      Switch database to a primary
	50 pdbcndba_p			       SWITCH	      Enable compatibility advance despite presence of GRPs
	51 pdbcndba_p			       SWITCH	      Synchronize plan with new primary
	52 pdbcndba_p			       FINISH	      Verify only a single instance is active
	53 pdbcndba_p			       FINISH	      Verify database is mounted
	54 pdbcndba_p			       FINISH	      Flashback database
	55 pdbcndba_p			       FINISH	      Convert into a physical standby

    INSTID TARGET			       PHASE	      DESCRIPTION
---------- ----------------------------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	56 pdbcndba_s			       FINISH	      Verify database is open
	57 pdbcndba_s			       FINISH	      Save the DBID of the new primary
	58 pdbcndba_s			       FINISH	      Save the logminer session start scn
	59 pdbcndba_p			       FINISH	      Wait until transient logical redo branch has been registered
	60 pdbcndba_p			       FINISH	      Start media recovery
	61 pdbcndba_p			       FINISH	      Wait until apply/recovery has started on the transient branch
	62 pdbcndba_p			       FINISH	      Wait until upgrade redo has been fully recovered
	63 pdbcndba_p			       FINISH	      Prevent compatibility advance if GRPs are present
	64 pdbcndba_s			       FINISH	      Prevent compatibility advance if GRPs are present
	65 pdbcndba_p			       FINISH	      Drop guaranteed restore point DBMSRU_INITIAL
	66 pdbcndba_s			       FINISH	      Drop guaranteed restore point DBMSRU_INITIAL

66 rows selected.

 2.1.4 START PLAN

SQL> exec dbms_rolling.start_plan();

PL/SQL procedure successfully completed.

---------------Alert log of pdbcndba_p(主库)---------------

ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';
ARC0: RFS network connection re-established at host 'pdbcndba_s'
ARC0: RFS destination opened for reconnect at host 'pdbcndba_s'
Fri Aug 25 17:37:08 2017
Drop guaranteed restore point PRE_UPGRADE
Guaranteed restore point PRE_UPGRADE dropped
Created guaranteed restore point PRE_UPGRADE
Fri Aug 25 17:43:04 2017
RTS(6538): executing rolling upgrade instruction 1 from plan revision 1
Fri Aug 25 17:43:04 2017
RTS(6538): completed instruction 10 from plan revision 1
Fri Aug 25 17:43:04 2017
RTS(6538): executing rolling upgrade instruction 16 from plan revision 1
Drop guaranteed restore point DBMSRU_INITIAL
Guaranteed restore point DBMSRU_INITIAL dropped
Fri Aug 25 17:43:04 2017
RTS(6538): completed instruction 16 from plan revision 1
Fri Aug 25 17:43:04 2017
RTS(6538): executing rolling upgrade instruction 17 from plan revision 1
Created guaranteed restore point DBMSRU_INITIAL
Fri Aug 25 17:43:04 2017
RTS(6538): completed instruction 17 from plan revision 1
Fri Aug 25 17:43:10 2017
RTS(6538): executing rolling upgrade instruction 20 from plan revision 1
Fri Aug 25 17:43:10 2017
RTS(6538): completed instruction 20 from plan revision 1
Fri Aug 25 17:43:10 2017
RTS(6538): executing rolling upgrade instruction 21 from plan revision 1
alter database backup controlfile to 'rolling_change_backup.f' reuse
Completed: alter database backup controlfile to 'rolling_change_backup.f' reuse
Fri Aug 25 17:43:13 2017
RTS(6538): completed instruction 21 from plan revision 1
Fri Aug 25 17:43:17 2017
RTS(6538): executing rolling upgrade instruction 24 from plan revision 1
Fri Aug 25 17:43:17 2017
RTS(6538): completed instruction 24 from plan revision 1
Fri Aug 25 17:43:18 2017
RTS(6538): executing rolling upgrade instruction 27 from plan revision 1
alter database add supplemental log data (primary key, unique index) columns
Fri Aug 25 17:43:18 2017
SUPLOG: Previous supplemental logging attributes at scn = 4561914
SUPLOG:  minimal = OFF, primary key = OFF
SUPLOG:  unique = OFF, foreign key = OFF, all column = OFF
SUPLOG:  procedural replication = OFF
Fri Aug 25 17:43:18 2017
SUPLOG: New supplemental logging attributes at scn = 4561914
SUPLOG:  minimal = ON, primary key = ON
SUPLOG:  unique = ON, foreign key = OFF, all column = OFF
SUPLOG:  procedural replication = OFF
Completed: alter database add supplemental log data (primary key, unique index) columns
alter database add supplemental log data for procedural replication
Fri Aug 25 17:43:18 2017
SUPLOG: Previous supplemental logging attributes at scn = 4561922
SUPLOG:  minimal = ON, primary key = ON
SUPLOG:  unique = ON, foreign key = OFF, all column = OFF
SUPLOG:  procedural replication = OFF
Fri Aug 25 17:43:18 2017
SUPLOG: New supplemental logging attributes at scn = 4561922
SUPLOG:  minimal = ON, primary key = ON
SUPLOG:  unique = ON, foreign key = OFF, all column = OFF
SUPLOG:  procedural replication = ON
Completed: alter database add supplemental log data for procedural replication
Fri Aug 25 17:43:19 2017
Logminer Bld: Build started
Fri Aug 25 17:43:19 2017
ALTER SYSTEM SWITCH ALL LOGFILE start (cndba)
Fri Aug 25 17:43:19 2017
LGWR: Failed to archive log 2 thread 1 sequence 14 (3113)
Fri Aug 25 17:43:19 2017
Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
Fri Aug 25 17:43:19 2017
Thread 1 advanced to log sequence 15 (LGWR switch)
  Current log# 3 seq# 15 mem# 0: /u01/app/oracle/oradata/cndba/redo03.log
Fri Aug 25 17:43:19 2017
ALTER SYSTEM SWITCH ALL LOGFILE complete (cndba)
Fri Aug 25 17:43:19 2017
Archived Log entry 404 added for thread 1 sequence 14 ID 0xcf6712c dest 1:
Fri Aug 25 17:43:19 2017
Fri Aug 25 17:43:19 2017

---------------Alert log of pdbcndba_s (备库)---------------

RVWR started with pid=29, OS id=6264 
Fri Aug 25 13:58:55 2017
Created guaranteed restore point PRE_UPGRADE
Fri Aug 25 14:04:56 2017
RTS(6412): completed instruction 14 from plan revision 1
Fri Aug 25 14:04:56 2017
RTS(6412): executing rolling upgrade instruction 15 from plan revision 1
Created guaranteed restore point DBMSRU_INITIAL
Fri Aug 25 14:04:56 2017
RTS(6412): completed instruction 15 from plan revision 1
Fri Aug 25 14:04:56 2017
RTS(6412): executing rolling upgrade instruction 18 from plan revision 1
alter database recover managed standby database disconnect
WARNING: There are no standby redo logs.
Standby redo logs should be configured for real time apply. Real time apply will be ignored.
Fri Aug 25 14:04:56 2017
Attempt to start background Managed Standby Recovery process (cndba)
Starting background process MRP0
Fri Aug 25 14:04:56 2017
MRP0 started with pid=32, OS id=6414 
Fri Aug 25 14:04:56 2017
MRP0: Background Managed Standby Recovery process started (cndba)
...
Completed: alter database recover managed standby database disconnect
Fri Aug 25 14:05:02 2017
RTS(6412): completed instruction 22 from plan revision 1
Fri Aug 25 14:05:05 2017
RTS(6412): executing rolling upgrade instruction 23 from plan revision 1
alter database backup controlfile to 'rolling_change_backup.f' reuse
Completed: alter database backup controlfile to 'rolling_change_backup.f' reuse
...
RTS(6412): executing rolling upgrade instruction 26 from plan revision 1
alter database recover managed standby database cancel
Fri Aug 25 14:05:09 2017
MRP0: Background Media Recovery cancelled with status 16037
Fri Aug 25 14:05:09 2017
Errors in file /u01/app/oracle/diag/rdbms/pdbcndba_s/cndba/trace/cndba_mrp0_6414.trc:
ORA-16037: user requested cancel of managed recovery operation
Recovery interrupted!
Fri Aug 25 14:05:09 2017
Errors in file /u01/app/oracle/diag/rdbms/pdbcndba_s/cndba/trace/cndba_mrp0_6414.trc:
ORA-16037: user requested cancel of managed recovery operation
Fri Aug 25 14:05:09 2017
MRP0: Background Media Recovery process shutdown (cndba)
Fri Aug 25 14:05:10 2017
Managed Standby Recovery Canceled (cndba)
Completed: alter database recover managed standby database cancel
Fri Aug 25 14:05:10 2017
RTS(6412): completed instruction 26 from plan revision 1
Fri Aug 25 14:05:56 2017
RFS[1]: Assigned to RFS process (PID:6426)
RFS[1]: Opened log for thread 1 sequence 14 dbid 215559030 branch 952960462
Fri Aug 25 14:05:56 2017
RFS[2]: Assigned to RFS process (PID:6428)
RFS[2]: Opened log for thread 1 sequence 15 dbid 215559030 branch 952960462
Fri Aug 25 14:05:56 2017
Archived Log entry 27 added for thread 1 sequence 14 rlc 952960462 ID 0xcf6712c dest 2:
Fri Aug 25 14:05:56 2017
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Assigned to RFS process (PID:6430)
RFS[3]: No standby redo logfiles created
RFS[3]: Opened log for thread 1 sequence 17 dbid 215559030 branch 952960462
Fri Aug 25 14:05:59 2017
Archived Log entry 28 added for thread 1 sequence 15 rlc 952960462 ID 0xcf6712c dest 2:
RFS[1]: Opened log for thread 1 sequence 16 dbid 215559030 branch 952960462
Fri Aug 25 14:06:00 2017
Archived Log entry 29 added for thread 1 sequence 16 rlc 952960462 ID 0xcf6712c dest 2:
Fri Aug 25 14:06:02 2017
Archived Log entry 30 added for thread 1 sequence 17 rlc 952960462 ID 0xcf6712c dest 2:
RFS[3]: No standby redo logfiles created
RFS[3]: Opened log for thread 1 sequence 18 dbid 215559030 branch 952960462
Fri Aug 25 14:06:03 2017
RTS(6412): executing rolling upgrade instruction 28 from plan revision 1
alter database recover to logical standby keep identity
Fri Aug 25 14:06:03 2017
Media Recovery Start: Managed Standby Recovery (cndba)
Fri Aug 25 14:06:03 2017
Serial Media Recovery started
Managed Standby Recovery not using Real Time Apply
Fri Aug 25 14:06:04 2017
Media Recovery Log /u01/archivelog_logical/1_14_952960462.dbf
Fri Aug 25 14:06:05 2017
Media Recovery Log /u01/archivelog_logical/1_15_952960462.dbf
Resize operation completed for file# 1, old size 819200K, new size 829440K
Resize operation completed for file# 1, old size 829440K, new size 839680K
Fri Aug 25 14:06:16 2017
Resize operation completed for file# 8, old size 276480K, new size 286720K
Fri Aug 25 14:06:17 2017
Media Recovery Log /u01/archivelog_logical/1_16_952960462.dbf
Fri Aug 25 14:06:22 2017
Media Recovery Log /u01/archivelog_logical/1_17_952960462.dbf
Fri Aug 25 14:06:22 2017
Incomplete Recovery applied until change 4563713 time 08/25/2017 17:44:09
Fri Aug 25 14:06:22 2017
Media Recovery Complete (cndba)
Killing 4 processes (PIDS:6424,6426,6428,6430) (all RFS) in order to disallow current and future RFS connections. Requested by OS process 6412
Begin: Standby Redo Logfile archival
End: Standby Redo Logfile archival
RESETLOGS after incomplete recovery UNTIL CHANGE 4563713 time 08/25/2017 17:44:09
Resetting resetlogs activation ID 217477420 (0xcf6712c)
Online log /u01/app/oracle/oradata/cndba/redo01.log: Thread 1 Group 1 was previously cleared
Online log /u01/app/oracle/oradata/cndba/redo02.log: Thread 1 Group 2 was previously cleared
Online log /u01/app/oracle/oradata/cndba/redo03.log: Thread 1 Group 3 was previously cleared
Standby became primary SCN: 4563711
Fri Aug 25 14:06:25 2017
Setting recovery target incarnation to 6
Fri Aug 25 14:06:25 2017
RECOVER TO LOGICAL STANDBY: Complete - Database mounted as logical standby
Completed: alter database recover to logical standby keep identity
Fri Aug 25 14:06:25 2017
RTS(6412): completed instruction 28 from plan revision 1
Fri Aug 25 14:06:25 2017
RTS(6412): executing rolling upgrade instruction 29 from plan revision 1
alter database open
Ping without log force is disabled

SQL>  select revision, status, phase from dba_rolling_status; 

  REVISION STATUS	    PHASE
---------- ------------ --------------
	 1     READY	SWITCH PENDING

SQL> col dbun for a20
SQL>col role for a20
SQL>col engine_status for a20
SQL>col update_progress for a20 
SQL> select dbun, role, engine_status,update_progress from dba_rolling_databases; 

DBUN		         ROLE		          ENGINE_STATUS        UPDATE_PROGRESS
-------------------- -------------------- -------------------- --------------------
pdbcndba_p	         PRIMARY		      NOT APPLICABLE       NOT STARTED
pdbcndba_s	         LOGICAL		      RUNNING	           NOT STARTED

--主库查询
SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PRIMARY	      MAXIMUM PERFORMANCE  READ WRITE

--备库查询,可以看到物理备库转换成逻辑备库
SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  LOGICAL STANDBY  MAXIMUM PERFORMANCE  READ WRITE
 2.2使用DBUA或手动方式进行升级逻辑备库

DG  环境 Oracle 12c 单实例 从12.1.0.2.0 升级到 12.1.0.2.4 示例

在START_PLAN过程完成之后,您必须在未来的主数据库和维护未来主数据库的标准数据库中手动升级Oracle数据库软件。这包括以下步骤:
   *升级临时逻辑(LGM)的Oracle数据库软件和主要的组标准(LGS)。
   *在LGS数据库中启动media recovery 。
   *通过手动或使用数据库升级助理(DBUA)来升级临时逻辑备用数据库。
   *重新打开读/写模式中的transient logical standb。
参考文档:
http://www.cndba.cn/dave/article/214
--升级之后 检查数据库库版本
SQL> select PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION from registry$sqlpatch;

  PATCH_ID ACTION	   STATUS	   ACTION_TIME								       DESCRIPTION
---------- --------------- --------------- --------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
  20831110 APPLY	   SUCCESS	   25-AUG-17 07.47.02.557722 PM 					       Database Patch Set Update : 12.1.0.2.4 (20831110)

2.3 Switchover

SQL>  execute dbms_rolling.switchover;

PL/SQL procedure successfully completed.

--------- Primary alert log--------------

RTS(6538): executing rolling upgrade instruction 46 from plan revision 1
Fri Aug 25 23:46:12 2017
ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY
LOGSTDBY: Ensuring no active hot backups.
LOGSTDBY: Enabling database guard to prevent new transactions.
...
Fri Aug 25 23:46:15 2017
ALTER SYSTEM enable restricted session;
LOGSTDBY: DBMS_ROLLING.SWITCHOVER: Waiting for txns in-flight at scn 0x0000.0046994e [4626766] to complete
LOGSTDBY: DBMS_ROLLING.SWITCHOVER: All in-flight txns at scn 0x0000.0046994e [4626766] completed
...
Fri Aug 25 23:46:22 2017
Completed: ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY
...
ALTER SYSTEM SET _allow_compatibility_adv_w_grp=TRUE SCOPE=BOTH;

----------stdby alert log-----------------

RTS(4272): executing rolling upgrade instruction 49 from plan revision 1
alter database commit to switchover to primary
Fri Aug 25 20:08:20 2017
ALTER DATABASE SWITCHOVER TO PRIMARY (cndba)
Fri Aug 25 20:08:20 2017
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY (cndba)
...
Completed: alter database commit to switchover to primary


--原备库查询,可以看到原备库切换成主库
SQL> select db_unique_name,database_role,open_mode from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- --------------------
pdbcndba_s                     PRIMARY          READ WRITE

1 row selected.

--原主库查询,原主库切换成逻辑备库
SQL> select db_unique_name,database_role,open_mode from v$database;

DB_UNIQUE_NAME		           DATABASE_ROLE	OPEN_MODE
------------------------------ ---------------- --------------------
pdbcndba_p		               LOGICAL STANDBY	READ WRITE


SQL> col dbun for a20
SQL> col role for a20
SQL> col engine_status for a20
SQL> col update_progress for a20 

SQL> set line 300
SQL> select dbun, role, engine_status,update_progress from dba_rolling_databases;

DBUN		         ROLE		          ENGINE_STATUS        UPDATE_PROGRESS
-------------------- -------------------- -------------------- --------------------
pdbcndba_p	         LOGICAL		      STOPPED	           NOT STARTED
pdbcndba_s	         PRIMARY		      NOT APPLICABLE       STARTED


2.4 升级原主库 ,跟2.2 步骤一样
参考文档:
http://www.cndba.cn/dave/article/214
注意:
切换后,启动Transient Logical(旧产品)和其他(TG)备用在新ORACLE_HOME数据库。
此时逻辑备用和所有TG备用数据库必须在mount模式,非常重要的。

--升级之后 查看版本
SQL> select PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION from registry$sqlpatch;

  PATCH_ID ACTION	   STATUS	   ACTION_TIME								       DESCRIPTION
---------- --------------- --------------- --------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
  20831110 APPLY	   SUCCESS	   25-AUG-17 07.47.02.557722 PM 					       Database Patch Set Update : 12.1.0.2.4 (20831110)

2.5 Finish

--原主库启动到mount状态
SQL> shutdown immediate 
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1560281088 bytes
Fixed Size                  2924784 bytes
Variable Size             939527952 bytes
Database Buffers          603979776 bytes
Redo Buffers               13848576 bytes
Database mounted.

--在原备库执行finish_plan操作
SQL> execute dbms_rolling.finish_plan;

PL/SQL procedure successfully completed.

---------------Alert log of pdbcndba_p---------------

RTS(16898): executing rolling upgrade instruction 55 from plan revision 1
alter database convert to physical standby
Sat Aug 26 00:52:30 2017
ALTER DATABASE CONVERT TO PHYSICAL STANDBY (cndba)
LOGSTDBY: Cleared controlfile of logical standby state.
...
Physical Standby Database mounted.
CONVERT TO PHYSICAL STANDBY: Complete - Database mounted as physical standby
Completed: alter database convert to physical standby
...
Drop guaranteed restore point DBMSRU_INITIAL
Sat Aug 26 01:01:14 2017
Media Recovery Log /u01/archivelog_logical/1_26_952956384.dbf
Sat Aug 26 01:01:16 2017
Guaranteed restore point DBMSRU_INITIAL dropped
RTS(16898): completed instruction 65 from plan revision 1

SQL> select db_unique_name,database_role,open_mode from v$database;

DB_UNIQUE_NAME		           DATABASE_ROLE	OPEN_MODE
------------------------------ ---------------- --------------------
pdbcndba_s		               PRIMARY		    READ WRITE

SQL> select db_unique_name,database_role,open_mode from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- --------------------
pdbcndba_p                    PHYSICAL STANDBY MOUNTED

1 row selected.

3 验证滚动升级是否成功
3.1 将新备库(原主库)数据库启动到open,并启动MRP 进程 

[oracle@dg1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Aug 26 01:18:53 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show pdbs

    CON_ID CON_NAME			              OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	     2 PDB$SEED			              MOUNTED
	     3 PDBCNDBA			              MOUNTED

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10456: cannot open standby database; media recovery session may be in progress

SQL>  alter database recover managed standby database cancel;

Database altered.

SQL> alter database open;
 
Database altered.

SQL> show pdbs

    CON_ID             CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2                 PDB$SEED			  READ ONLY  NO
	 3                 PDBCNDBA			  MOUNTED

SQL> alter pluggable database all open;

Pluggable database altered.

SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PHYSICAL STANDBY MAXIMUM PERFORMANCE  READ ONLY

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Database altered.

SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PHYSICAL STANDBY MAXIMUM PERFORMANCE  READ ONLY WITH APPLY

3.2 新主库(原备库)往test 表插入数据
[oracle@dg1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Aug 26 08:57:49 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> conn test/test@pdbcndba
Connected.

SQL> select *from test;

	 I
----------
	10
	20
	30
	40


SQL> insert into test values(50);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test;

	 I
----------
	10
	50
	20
	30
	40


3.3 新备库(原主库)查看数据是同步的
[oracle@dg1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Aug 26 08:57:49 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> conn test/test@pdbcndba
Connected.

SQL> select * from test;

	 I
----------
	10
	50
	20
	30
	40
	
至此 DG 滚动升级完成
	
4 新主库执行switchover,还原初始环境,将新备库还原成原主库,新主库还原成原备库(此步骤可以根据业务及停机时间,是否要还原初始状态)

4.1新主库执行switchover
[leo@www.cndba.cn ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Fri Aug 25 23:09:59 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> conn /as sysdba
Connected.
SQL> ALTER DATABASE SWITCHOVER TO pdbcndba_p verify;

Database altered.

SQL> ALTER DATABASE SWITCHOVER TO pdbcndba_p;

Database altered.

4.2 启动备库
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 1560281088 bytes
Fixed Size		    2924784 bytes
Variable Size		  939527952 bytes
Database Buffers	  603979776 bytes
Redo Buffers		   13848576 bytes
Database mounted.
Database opened.
SQL> alter pluggable database all open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME			              OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	     2 PDB$SEED			              READ ONLY  NO
	     3 PDBCNDBA			              READ ONLY  NO
SQL> alter pluggable database all open;

Pluggable database altered.

SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PHYSICAL STANDBY MAXIMUM PERFORMANCE  READ ONLY


SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Database altered.

SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PHYSICAL STANDBY MAXIMUM PERFORMANCE  READ ONLY WITH APPLY
4.3 查看新备库数据
SQL> conn test/test@pdbcndba
Connected.
SQL> select * from test;

	 I
----------
	10
	50
	20
	30
	40


4.4 新主库执行
[leo@www.cndba.cn ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Aug 26 02:51:55 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> alter database open;

Database altered.

SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PRIMARY	      MAXIMUM PERFORMANCE  READ WRITE

SQL> show pdbs

    CON_ID CON_NAME			              OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	     2 PDB$SEED			              READ ONLY  NO
	     3 PDBCNDBA			              MOUNTED
--原主库被还原
SQL> select protection_mode,database_role,protection_level,open_mode from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL	   OPEN_MODE
-------------------- ---------------- -------------------- --------------------
MAXIMUM PERFORMANCE  PRIMARY	      MAXIMUM PERFORMANCE  READ WRITE

SQL> alter pluggable database all open;

Pluggable database altered.
4.5 在新主库(原主库)插入一条数据
SQL> conn /as sysdba
Connected.
SQL> conn test/test@pdbcndba
Connected.
SQL> select * from test;

	 I
----------
	10
	50
	20
	30
	40

SQL> insert into test values(60);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test;

	 I
----------
	10
	50
	60
	20
	30
	40

6 rows selected.
 4.6 备库验证数据

SQL> select * from test;

	 I
----------
	10
	50
	60
	20
	30
	40

6 rows selected.

参考文件http://www.cndba.cn/leo1990/article/2188

http://docs.oracle.com/database/121/SBYDB/dbms_rolling_upgrades.htm#SBYDB5214http://www.cndba.cn/leo1990/article/2188http://www.cndba.cn/leo1990/article/2188

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
leo

leo

关注

坚持你的坚持

  • 202
    原创
  • 0
    翻译
  • 39
    转载
  • 16
    评论
  • 访问:675334次
  • 积分:1270
  • 等级:核心会员
  • 排名:第8名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ