【逻辑DG滚动升级一】ORACLE11204 逻辑DG滚动升级至12C---生产端前期准备

 


说明

1.1 概述

本文的环境为Linux 11.2.0.4 单机 + 物理dg ,通过将物理dg临时转换为逻辑dg ,然后利用sql apply来降低升级过程中的停机时间,主要步骤如下

 

1. 生产库创建强制闪回点

2. 将物理dg转换为逻辑dg

3. 将逻辑dg升级至12c,数据和生产同步

4. 第一次主备切换,逻辑dg变为生产,接管业务

5. 原生产闪回至逻辑dg升级开始的时候

6. 用12c软件将原生产库启动到mount,并转换为物理standby,同步数据

7. 第二次主备切换
从以上过程可以看出,停机时间仅仅在于第一步创建强制闪回点的时间和两次dg切换的时间,如果不需要切换回原生产主机,则只需要第一次切换就行。

生产端前期准备

2.1 生产创建回退方案

  生产库创建闪回点

SQL> STARTUP MOUNT;

SQL> CREATE RESTORE POINT pre_upgrade GUARANTEE FLASHBACK DATABASE;

需要提前设置好闪回空间

 

为了回退需要,还要备份控制文件和 redo

[oracle@backup ~]$ cp /oracle/ora11204/oradata/orcl/*.ctl /oracle/ora11204/oradata/orcl/redo* /oracle/ora11204/bak/

 

为了使用 sql apply ,主库必须运行在最大可用或者最大性能模式。

SQL> alter database set standby database to maximize availability;

SQL> ALTER DATABASE OPEN;

 

2.2 生产开启附加日志

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

 

2.3 dg 端设置一个额外的目录存放逻辑dg 产生的归档

SQL> alter system set log_archive_dest_3='LOCATION=/oracle/ora11204/arch/std VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)';

SQL> alter system set log_archive_dest_state_3=enable;

 

 

2.4 主库检查包含不受sql apply 支持的数据类型的表

查看数据库中不支持的表:

SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED;

(会列出业务用户不支持的表)

 

--SELECT * FROM DBA_LOGSTDBY_EDS_SUPPORTED;

 

查看数据库中不支持的内部用户:

SQL> SELECT OWNER FROM DBA_LOGSTDBY_SKIP WHERE STATEMENT_OPT = 'INTERNAL SCHEMA';

 

备注:

 

在生产库上通过如下命令捕捉不受 sql apply 支持的事务,记录到DBA_LOGSTDBY_EVENTS 表中。

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET( ' MAX_EVENTS_RECORDED',  DBMS_LOGSTDBY.MAX_EVENTS);

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('RECORD_UNSUPPORTED_OPERATIONS', 'TRUE');

 

 

2.5 生成sql apply 需要的数据字典

从主库上获取备库所需的数据字典信息 (可在备库启动到 mount 状态执行)

 sql> exec dbms_logstdby.build

logmnr 根据这个将 redo 转换为逻辑 dg sql


请使用浏览器的分享功能分享到微信等