Oracle 12c 新特性 --- Data Guard使用DBMS_ROLLING进行滚动升级
作者:
leo
概念
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进行滚动升级可以减少管理工作,提高执行数据库滚动升级的可靠性。用户受益于较低的管理成本和更高的可用性,减少了计划维护的停机时间。
实验
环境说明:
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://docs.oracle.com/database/121/SBYDB/dbms_rolling_upgrades.htm#SBYDB5214
版权声明:本文为博主原创文章,未经博主允许不得转载。