使用SQL Apply實現滾動升級

hooca發表於2016-06-20
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;

未完待續。










來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2120543/,如需轉載,請註明出處,否則將追究法律責任。

相關文章