使用SQL Apply实现滚动升级

OS:Oracle Linux 6.6 x64
DB:Oracle 12.1.0.1.0 -> 12.1.0.2.0

参考:http://docs.oracle.com/database/121/SBYDB/rollup.htm#SBYDB4884

当前已经搭建好物理DataGuard,主库是prod,备库是db。

前提:

保护模式只能是最高性能或最高可用;LOG_ARCHIVE_DEST_N的参数不能有MANDATORY。

一些准备工作:两端都启用归档、闪回、强制日志、补充日志,并打开所有PDB。

点击(此处)折叠或打开

  1. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

Step 1:prod上创建保证还原点

点击(此处)折叠或打开

  1. #FLASHBACK_ON
  2. SQL> SHUTDOWN IMMEDIATE;
  3. SQL> STARTUP MOUNT;
  4. SQL> ALTER DATABASE FLASHBACK ON;
  5. SQL> ALTER DATABASE OPEN;

  6. #创建保证还原点
  7. CREATE RESTORE POINT pre_upgrade GUARANTEE FLASHBACK DATABASE;
Step 2:从物理备库转换为逻辑备库
参考附件。
2.1备库:

点击(此处)折叠或打开

  1. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2.2 主库:

点击(此处)折叠或打开

  1. EXECUTE DBMS_LOGSTDBY.BUILD;
2.3 备库:

点击(此处)折叠或打开

  1. alter system set LOG_ARCHIVE_DEST_1=
      'LOCATION=USE_DB_RECOVERY_FILE_DEST
       DB_UNIQUE_NAME=dg' scope=spfile;
    #重启到mount
  2. ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;
  3. ALTER DATABASE OPEN;
  4. EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', 'FALSE');
  5. EXECUTE DBMS_LOGSTDBY.APPLY_SET('MAX_EVENTS_RECORDED', -
      DBMS_LOGSTDBY.MAX_EVENTS);
    EXECUTE DBMS_LOGSTDBY.APPLY_SET('RECORD_UNSUPPORTED_OPERATIONS', 'TRUE');
  6. ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

未完待续。










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