移轉 Oracle RAC

若要將 Oracle Cloud Infrastructure Classic 伺服器的 Oracle RAC 資料庫移轉至 Oracle Cloud Infrastructure Database 系統,您可以使用 Oracle Data Guard。您必須將 Oracle Cloud Infrastructure Classic 上的資料庫設定為主要資料庫 (來源資料庫),然後將它移轉到虛擬機器系統上的 Oracle Cloud Infrastructure 上的待命資料庫 (目標資料庫)。

設定主要 (來源) 資料庫

若要設定主要資料庫 (來源資料庫),您需要設定 Oracle Data Guard,並修改待命資料庫 (目標資料庫) 的 listener.oratnsnames.ora 檔案。

設定待命資料庫的主要資料庫

在此組態中,您可以設定主要 (來源) 資料庫使用 Oracle Data Guard。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 在待命資料庫 (目標資料庫) 上,以資料庫軟體擁有者 Oracle 連線。
    sudo su - oracle
  3. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 以具有管理員權限的使用者身分登入資料庫執行處理。分隔符號分隔),例如:
    sqlplus / as sysoper
  5. 確定資料庫處於 ARCHIVELOG 模式。
    ARCHIVE LOG LIST
  6. 如果 Database log mode 的輸出是 No Archive Mode,而 Automatic archival 的輸出是 Disabled,則請執行下列動作:
    1. 結束 SQL*Plus
      SQL> exit
    2. 關閉資料庫。
      srvctl stop database -db db_unique_name
    3. 以掛載模式重新啟動資料庫
      srvctl start database -db db_unique_name -o mount
    4. 以具有管理員權限的使用者身分登入資料庫執行處理。分隔符號分隔),例如:
      sqlplus / as sysoper
    5. 啟用存檔日誌模式。
      ALTER DATABASE ARCHIVELOG;
    6. 確定資料庫目前處於存檔日誌模式。
      ARCHIVE LOG LIST
      「資料庫」日誌模式的輸出應為 Archive Mode,而 Automatic archival 的輸出則為「已啟用」。
    7. 開啟資料庫。
      ALTER DATABASE OPEN;
  7. SYSDBA 管理員權限連線。
    CONNECT / AS SYSDBA
  8. 對多用戶環境執行下列動作:
    1. 檢查 PDBS 的狀態。
      SHOW PDBS
    2. 如果 PDBS 未開啟,則會開啟。
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. 確定資料庫為強制記錄日誌模式。分隔符號分隔),例如:
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. 如有必要,請啟用 force logging
    ALTER DATABASE FORCE LOGGING;
  11. 請檢查組態。
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    FORCE_LOGGING 資料欄應該是 YES
  12. 使用 SHOW PARAMETER 命令檢查下列資料庫參數:
    1. DB_NAMEDB_UNIQUE_NAME:請確定這些名稱與目標資料庫上使用的名稱不同。
    2. REMOTE_LOGIN_PASSWORDFILE:此參數必須設為 EXCLUSIVE

新增靜態服務至主要資料庫 listener.ora 檔案

在此段落中,您必須將新的靜態監聽器新增至 listener.or a 然後重新啟動監聽器。

  1. 請使用 SSH 登入主要 (來源) 資料庫的第一個節點。
  2. 在命令行中,以 grid user 身分連線。
    sudo su - grid
  3. 修改/u01/app/12。2。0。1/grid/network/admin/listener.ora 檔案,以包括靜態監聽器。下列範例顯示用於一個靜態監聽器的格式:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. 停止監聽器。

    注意:

    停止和啟動靜態監聽器會影響資料庫連線的數秒。
    srvctl stop listener -l LISTENER
  5. 重新啟動監聽器。
    srvctl start listener -l LISTENER
  6. 檢查監聽器狀態。
    lsnrctl status
  7. 驗證輸出中有狀態為 UNKNOWN 的項目。
  8. 針對主要資料庫的第二個節點 (來源資料庫) 重複之前的步驟。

設定主要資料庫參數

設定主要 (來源) 資料庫並將靜態服務加到主要資料庫 listener.ora 檔案後,您可以在主要資料庫設定 Oracle Data Guard 參數。

  1. 請使用 SSH 登入主要資料庫 (來源資料庫) 的第一個 RAC 節點。
  2. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。
    sqlplus / as sysdba
    Enter password: password
  3. 啟用自動待命檔案管理。
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. 設定存檔延遲目標。
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. 識別 Oracle Broker 組態檔名稱和位置。下列敘述句視資料庫儲存體的類型而定。
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. 啟用資料庫的 Oracle Broker DMON 處理作業。
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (選擇性) 設定 DB_BLOCK_CHECKINGDB_BLOCK_CHECKSUM 參數。
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (選擇性) 將日誌緩衝區設為 256 mb。
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. DB_LOST_WRITE_PROTECT 參數設為 TYPICAL
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. 啟用資料庫倒溯功能。DB_FLASHBACK_RETENTION_TARGET 的最小建議值為 120 分鐘。
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. 根據線上重做日誌新增待命重做日誌。您可以使用下方查詢來決定 Orl 的數目與大小 (位元組)。待命重做日誌的大小必須與線上重做日誌相同,但是您必須新增一或多個超過線上重做日誌的待命重做日誌。在下列範例中,有 4 個線上重做日誌存在,因此您至少必須新增五個待命重做日誌。換句話說,就每個繫線來說,您必須指定目前重做日誌加上至少一個,然後使用與原始重做日誌相同的大小。
    1. 執行下列查詢以判斷 Oracle 重做日誌的數目和大小 (位元組)。
      SELECT GROUP#, BYTES FROM V$LOG;
      輸出應該與下列類似。
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. 如果是第一個繫線,請指定目前的重做日誌以及一個以上的重做日誌,並使用與目前重做日誌相同的大小。分隔符號分隔),例如:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. 請指定目前的重做日誌再加上一個繫線,然後使用與目前重做日誌相同的大小。分隔符號分隔),例如:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. 確認您建立了正確數目的待命重做日誌。
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      輸出如下:
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

設定待命 (目標) 資料庫

若要設定待命 (目標) 資料庫,您必須刪除待命資料庫,然後修改 oratablistener.ora 以及 tnsnames.ora 檔案。

新增資料庫執行處理的項目

更新 Oracle RAC 節點上的/etc/oratab檔,並依照下列方式為您的資料庫執行處理新增項目:

  1. 請使用 SSH 登入要移轉之來源資料庫 (主要資料庫) 的第一個節點。
  2. 更新 /etc/oratab:執行下列動作,將資料庫執行處理 ID 新增至資料庫項目:
    1. 編輯 /etc/oratab
      sudo vi /etc/oratab
    2. 使用下列格式新增資料庫項目:
      $ORACLE_SID:$ORACLE_HOME:N
      節點 1 範例:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      節點 2 範例:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. 執行 oraenv 命令檔以設定資料庫的環境變數,例如 $ ORACLE_HOME
    . oraenv
  4. 重複第二個 Oracle RAC 節點的先前步驟。

刪除待命 (目標) 資料庫

  1. 使用 SSH 登入待命 (目標) 伺服器。
  2. 切換至屬於資料庫擁有者的 oracle 使用者。
  3. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。
    sqlplus / as sysdba
    Enter password: password
  4. 將資料庫解除叢集,如下所示:
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. 結束 SQL*Plus:
     exit
  6. 使用 srvctl 停止資料庫:
    srvctl stop database -db database_unqiue_name
  7. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。
    sqlplus / as sysdba
    Enter password: password
  8. 以限制模式啟動並掛載資料庫:
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. 刪除待命資料庫:
     drop database;
    Database dropped.

新增靜態服務至待命資料庫 listener.ora 檔案

將靜態服務新增至待命資料庫 (來源資料庫) listener.ora 檔案後,您必須重新啟動監聽器。

  1. 請使用 SSH 登入待命資料庫 (來源資料庫) 伺服器的第一個 Oracle RAC 節點。
  2. 在命令行,以 grid 使用者身分連線。
    sudo su - grid
  3. $ ORACLE_HOME/network/admin/listener.ora 檔案修改成包括 static listener。下列範例顯示用於某個 static listener 的格式:
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. 使用 srvctl 公用程式來停止監聽器。
    srvctl stop listener -l LISTENER
  5. 重新啟動 listener
    srvctl start listener -l LISTENER
  6. 檢查 listener 狀態。
    lsnrctl status

    注意:

    輸出是狀態為 UNKNOWN 的新監聽器
  7. 針對第二個 Oracle RAC 節點重複這些步驟。

將「主要資料庫」的 TDE 公事包複製到待命資料庫

您可以使用安全複製協定 (SCP),手動將 TDE 公事包檔案從主要資料庫 (來源資料庫) 系統複製到待命資料庫 (目標資料庫) 系統。

壓縮 TDE 公事包

您必須在主要資料庫 (來源資料庫) 中執行此作業。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 在命令行,以資料庫軟體擁有者 oracle 身分連線。
    sudo su - oracle
  3. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 若要找出公事包位置,請以 SYSDBA 管理員權限登入主要資料庫 (來源資料庫) 執行處理。
    sqlplus / as sysdba
  5. 查詢 V$ENCRYPTION_WALLET 動態檢視的 WRL_PARAMETER 資料欄,找出公事包所在的目錄。
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. 結束 SQL*Plus。
    exit
  7. 移至公事包檔案所在的目錄。分隔符號分隔),例如:
    cd /u02/app/oracle/admin/source_db_unique_name
  8. 您可以使用 tar 命令壓縮 TDE 公事包。分隔符號分隔),例如:
    tar cvf tde_wallet.tar ./tde_wallet
    便會顯示與下列類似的輸出:
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
複製公事包目錄的 TDE 公事包和設定權限

備份 TDE 公事包檔案之後,您必須建立公事包的目錄並設定此目錄的權限。

  1. 公事包 tar 檔案複製到 tmp 目錄。例如:
    cp tde_wallet.tar /tmp/
  2. 離開即可成為 OPC 使用者。
    $ exit
  3. 將您本機主機的私密金鑰複製到主要資料庫。
    依照預設,私密金鑰不會儲存在資料庫中
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. 使用 SCP,將主要資料庫 (來源資料庫) 的公事包檔案複製到 /opt/oracle/dcs/commonstore/wallets/tde/ $ ORACLE_UNQNAME 目錄的待命資料庫 (目標資料庫)。分隔符號分隔),例如:
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    便會顯示與下列類似的輸出:
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. 使用 SSH 登入目標資料庫伺服器。
  6. 以資料庫軟體擁有者 oracle 身分登入。
    sudo su - oracle
  7. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  8. 若要尋找公事包位置,請顯示 sqlnet.ora 的內容:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. ENCRYPTION_WALLET_LOCATION 參數會顯示公事包的位置。例如:
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. 移至目標公事包目錄。分隔符號分隔),例如:
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. 檢查是否在此目錄中正確公事包。
    ls target_db_unique_name
  12. 備份公事包檔案。分隔符號分隔),例如:
    mv target_db_unique_name target_db_unique_name.old
  13. 建立儲存公事包的目錄。分隔符號分隔),例如:
    mkdir target_db_unique_name
  14. 檢查公事包目錄的權限。
    ls -ld target_db_unique_name
  15. 如有需要,請授予資料庫軟體擁有者 Oracle 讀取、寫入以及執行權限。
    chmod 700 target_db_unique_name
  16. 請再次檢查權限。
    ls -ld target_db_unique_name
  17. 將公事包 tar 檔案複製到目前的目錄。
    cp /tmp/tde_wallet.tar .
  18. 檢查權限。
    ls -rlt
    便會顯示與下列類似的輸出:
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
完成 TDE 公事包處理作業

您必須解壓縮 TDE 公事包檔案 tar,然後將其內容移至待命資料庫 (目標資料庫) 的公事包目錄中。

  1. 在待命資料庫 (目標資料庫) 上,確定您位在正確的公事包目錄中。分隔符號分隔),例如:
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. 擷取 tar 檔案。
    tar xvf tde_wallet.tar
    輸出如下:
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. tde_wallet 內容移至待命資料庫 (目標資料庫) 上的公事包目錄。
    mv ./tde_wallet/* ./target_db_unique_name
  4. 移除待命資料庫 (目標資料庫) 的 tde_wallet 內容。
    rm -rf ./tde_wallet

設定待命初始化參數檔並以 NOMOUNT 模式啟動執行處理

設定待命初始化檔案之後,就可以在 NOMOUNT 模式重新啟動資料庫。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 以資料庫軟體擁有者 oracle 身分登入。
    sudo su - oracle
  3. 執行設定 $ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 移至 dbs 目錄。
    cd $ORACLE_HOME/dbs
  5. 建立名稱為 init_ < SID > .ora 的暫時初始化參數檔,其中 < SID > 是目標資料庫 SID,如下所示:
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. 備份現有的密碼檔 (若有的話)。例如:
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. 建立新的密碼檔案。分隔符號分隔),例如:
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. 將叢集中的密碼檔案變更為 non-ASM 密碼檔:
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. 以具有 sysdba 管理員權限的使用者身分連線待命資料庫 (目標資料庫) 執行處理。例如:
    sqlplus / as sysdba 
  10. 關閉資料庫。分隔符號分隔),例如:
    shutdown immediate
  11. 使用 NOMOUNT 初始化參數檔,在 init<sid>.ora 模式下重新啟動資料庫。
    startup force nomount PFILE=?/dbs/init<sid>.ora

從作用中資料庫複製待命資料庫的目標資料庫

您可以執行命令檔來複製待命資料庫 (目標資料庫)。如果主要資料庫 (來源資料庫) 很大,您可以配置額外的通道來改善其效能。對於新安裝的資料庫,一個通道通常會在幾分鐘後執行資料庫複製。請確定在執行 Oracle Recovery Manager (Oracle RMAN) 複製作業之後,未發生任何錯誤。如果發生錯誤,請使用初始化參數檔 (而非 spfile) 重新啟動資料庫,就會在 $ORACLE_HOME/dbs 目錄底下產生此資料庫,作為 Oracle RMAN 複製處理作業的一部分。

  1. 以資料庫軟體擁有者 oracle 身分連線待命資料庫 (目標資料庫)。
    su - oracle
  2. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  3. 建立 dup.rcv
    vi dup.rcv
    更新所需變數時貼上命令檔的內容。
  4. NOMOUNT 模式使用待命資料庫 (目標資料庫) 連線至 Oracle RMAN
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. 執行下列命令檔,複製作用中資料庫之待命資料庫的目標資料庫。下列範例顯示 dup.rcv 命令檔,此命令檔必須是使用者建立的,而且是以 My Oracle Support 注意事項 2369137為基礎。RMAN 作用中重複執行至 RMAN-06217 -- PUSH & PULL 方法說明 (文件 ID 2369137.1)。在此範例中,已自訂 dup.rcv 命令檔將檔案系統的複製 (影像複本) 推送至 Oracle Automatic Storage Management (Oracle ASM)。其他選項(例如從檔案系統到Oracle Automatic Storage Management Cluster File System ,或Oracle ASM至Oracle ASM )則需要變更檔案目的地參數和檔案名稱轉換參數。
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

後續 Oracle Recovery Manager 複製步驟

完成「Oracle 復原管理程式 (Oracle RMAN)」複製作業之後,您應該在待命資料庫 (目標資料庫) 上執行這些清除作業。

更新密碼檔

請依照下述更新密碼檔案:

  1. 將密碼檔移回ASM:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. 離開至 opc 使用者:
    [oracle@oci_node1 ~]$ exit
  3. 切換至 grid 使用者:
    [opc@oci_node1 ~]$ sudo su - grid
  4. 切換至 ASMCMD 提示:
    [grid@oci_node1 ~]$ asmcmd
  5. 複製 ASMCMD 中的密碼:
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    注意:

    命令可能會在 ASM 與資料庫版本不同時顯示錯誤。可忽略錯誤,因為註冊問題已在此程序稍後修正。

  6. 導覽至+ DATA/< OCI_DB_UNIQUE_NAME >/PASSWORD/目錄,找出要在步驟9中使用的system_generated_id。
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. 結束 ASMCMDgrid 使用者:
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. 切換至 Oracle 使用者:
    [opc@oci_node1 ~]$ sudo su - oracle
  9. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  10. 將叢集中的密碼檔案修改為 ASM
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
啟用 Oracle Flashback

您應該啟用 Oracle Flashback。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 以資料庫軟體擁有者 oracle 身分登入。
    sudo su - oracle
  3. 以具有 SYSOPER 管理員權限的使用者身分登入資料庫執行處理。分隔符號分隔),例如:
    sqlplus / as sysoper
    Enter password: password
  4. 啟用 Oracle Flashback。
    ALTER DATABASE FLASHBACK ON;
  5. 以具有 SYSDBA 管理員權限的使用者身分連線。
    CONNECT / AS SYSDBA
  6. 設定倒溯保留目標。
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
將 spfile 檔案移至 Oracle Automatic Storage Management

您應該將 spfile 檔案移至 Oracle Automatic Storage Management。

  1. 使用 SSH 連線待命資料庫 (目標資料庫) 伺服器。
  2. 以具有 SYSOPER 管理員權限的使用者身分登入資料庫執行處理。
  3. 建立 spfile 檔案並將其移至 Oracle Automatic Storage Management。
    1. 建立 pfile。
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. 結束 SQL*Plus:
      SQL> exit
    3. 編輯 pfile:
      vi /tmp/init<sid>.ora
    4. 從檔案中刪除下列行:
      *.instance_name=<sid_for_node1>
    5. 為每個節點新增下列行:
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. 以管理員使用者身分登入 SQL*Plus。分隔符號分隔),例如:
      sqlplus sys / as sysdba
      Password: password
    7. 關閉資料庫
      shutdown immediate
    8. 使用您剛建立的 initdb_name.ora 檔案,以 MOUNT 模式重新啟動資料庫。
      startup mount pfile='/tmp/init<sid>.ora';
    9. 建立 spfile 檔案。
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. 結束 SQL*Plus。
  5. 身為 grid 使用者,請使用 asmcmd 命令尋找 Oracle Automatic Storage Management 上的 spfile 檔案。
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    便會顯示與下列類似的輸出:
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    記下您需要在下一個工作中執行的 ASM 名稱 (spfile。262.973010033)。
將 inittarget_db_name .ora 檔案變更為參照 spfile 檔案

您可以修改 init<sid>.ora 檔案以參照 spfile 檔案。

  1. 使用 SSH 連線待命資料庫 (目標資料庫) 伺服器。
  2. 以資料庫軟體擁有者 oracle 身分登入。
    su - oracle
  3. 執行 oraenv 命令檔以設定 $ORACLE_HOME 環境變數。
    . oraenv
  4. 移至 $ORACLE_HOME/dbs 目錄。
    cd $ORACLE_HOME/dbs
  5. 確定 init<sid>.ora 檔案在此目錄中。
    ls *.ora
  6. 變更 inittarget_db_name.ora 檔案以參照 spfile 檔案。分隔符號分隔),例如:
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    在此輸出中,spfile.262.973010033 是您在上一個工作中將 spfile 檔案移至 Oracle Automatic Storage Management 時所產生的檔案名稱。
    便會顯示與下列類似的輸出:
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
在掛載模式修改並啟動待命資料庫

您可以使用 srvctl 來修改和啟動待命資料庫 (目標資料庫)。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 以資料庫軟體擁有者 oracle 身分登入。
    su - oracle
  3. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 使用 srvctl,MOUNT 模式修改並啟動待命資料庫 (目標資料庫)。分隔符號分隔),例如:
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. 以具有 SYSOPER 管理員權限的使用者身分登入資料庫執行處理。
    sqlplus / as sysoper
  6. 關閉資料庫,
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. 啟動掛載資料庫
    STARTUP MOUNT
  8. 更改 cluster_database 參數
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. 關閉資料庫
    SHUTDOWN IMMEDIATE
  10. 結束 SQL*Plus。
    EXIT
  11. 使用 srvctlMOUNT 模式啟動資料庫。
    srvctl start database -db target_db_unique_name -o mount
  12. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。
    sqlplus / as sysdba
  13. 查詢 V$DATABASE 動態檢視以確保資料庫處於 MOUNT 模式。
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    #Output 如下所示:
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
設定主要資料庫的資料庫和日誌檔名稱轉換參數

您必須在主要資料庫 (來源資料庫) 上設定資料庫的轉換參數和日誌檔名稱。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 切換至 Oracle 使用者:
    sudo su - oracle
  3. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。分隔符號分隔),例如:
    sqlplus / as sysdba
    Enter password: password
  4. 檢查 CONVERT 參數。
    SHOW PARAMETER CONVERT
    便會顯示與下列類似的輸出:
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    VALUE 資料欄應該是空的 (空值)。如果有值,請記下移轉完成之後的這個值。移轉完成後,這些值會設為空值。
  5. 使用此輸出的資訊來設定 DB_FILE_NAME_CONVERT 參數。

    注意:

    請注意,在此步驟中,SOURCE_DB_NAME 應為大寫。
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. 設定 LOG_FILE_NAME_CONVERT 參數。分隔符號分隔),例如:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. 重新啟動資料庫。
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
在待命資料庫設定資料庫和日誌檔名稱轉換參數

您必須在待命資料庫 (目標資料庫) 設定資料庫的轉換參數和日誌檔名稱。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 切換至 Oracle 使用者:
    sudo su - oracle
  3. 以具有 SYSDBA 管理員權限的使用者身分登入資料庫執行處理。例如:
    sqlplus / as sysdba
    Enter password: password
  4. 檢查 CONVERT 數。
    SHOW PARAMETER CONVERT
    便會顯示與下列類似的輸出:
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    VALUE 資料欄應該是空的 (空值)。如果有值,請記下移轉完成之後的這個值。移轉完成後,這些值會設為空值。
  5. 使用此輸出的資訊來設定DB_FILE_NAME_CONVERT參數。分隔符號分隔),例如:

    注意:

    請注意,在此步驟中,SOURCE_DB_NAME 應為大寫。
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. 設定 LOG_FILE_NAME_CONVERT 參數。分隔符號分隔),例如:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. 重新啟動資料庫。
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

使用 Oracle Data Guard 中介設定資料庫

您可以使用 dbmgrl 公用程式,使用 Oracle Data Guard 中介設定主要資料庫 (來源資料庫) 或待命資料庫 (目標資料庫)。

  1. 請使用 SSH 登入主要資料庫 (來源資料庫) 或待命資料庫 (目標資料庫) 伺服器。
  2. 啟動 dgmgrl 命令行公用程式:
    dgmgrl
  3. 以主要或待命資料庫系統的使用者 SYS 身分連線。例如,登入 TNS 名稱為 OCIC-ORCL 的主要資料庫:
    connect sys@ocic-orcl
    Enter password: password
  4. 使用 dbmgrl 公用程式,建立主要和待命資料庫的 Oracle Data Guard 組態和識別。分隔符號分隔),例如:
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. 啟用組態。
    enable configuration
  6. 顯示待命資料庫上的 Oracle Data Guard 組態。
    show configuration
    便會顯示與下列類似的輸出:
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

驗證主要資料庫和待命資料庫上的 Oracle Data Guard 中介

您可以使用 SQL*Plus 來驗證主要資料庫 (來源資料庫) 和待命資料庫 (目標資料庫) 上的 Oracle Data Guard 中介。

驗證主要資料庫上的 Oracle Data Guard 中介

您可以使用 SQL*Plus 來驗證主要資料庫 (來源資料庫) 上的 Oracle Data Guard Broker。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 以具有 SYSDBA 管理員權限的使用者身分連線。例如,TNS 名稱為 OCIC-ORCL 的主要資料庫:
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. 查詢 V$DATABASE 動態檢視。
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. 便會顯示與下列類似的輸出:
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    在輸出中,DATABASE_ROLE 應為 PRIMARYOPEN_MODE 應為 READ WRITE

驗證待命資料庫上的 Oracle Data Guard 中介

您可以使用 SQL*Plus 驗證待命資料庫 (目標資料庫) 上的 Oracle Data Guard Broker。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 以具有 SYSDBA 管理員權限的使用者身分連線。
  3. 查詢 V$DATABASE 動態檢視。
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    便會顯示與下列類似的輸出:
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    輸出應該將DATABASE_ROLE顯示為 PHYSICAL STANDBY,將 OPEN_MODE 顯示為 MOUNTED
  4. 確定 Oracle Data Guard 處理作業已在待命資料庫中起始。
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    便會顯示與下列類似的輸出:
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    輸出應該指示處理作業只有很少或沒有延遲的情況下執行。如果 MRP0 適用的 DELAY_MINS,則會同步化資料庫。
  5. 檢查 LOG_ARCHIVE_DEST 參數。
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    便會顯示與下列類似的輸出:
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    log_archive_dest_10          string
    log_archive_dest_11          string
    log_archive_dest_12          string
    log_archive_dest_13          string
    log_archive_dest_14          string
    log_archive_dest_15          string
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    輸出應該與 log_archive_dest_2 的輸出類似,並且服務指向待命資料庫 (目標資料庫),在此範例中為 oci-orcl
  6. 檢查 LOG_ARCHIVE_CONFIG 參數。
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    便會顯示與下列類似的輸出:
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. 檢查 FAL_SERVER 參數。
    SHOW PARAMETER FAL_SERVER
    便會顯示與下列類似的輸出:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. 檢查 LOG_ARCHIVE_FORMAT 參數。
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    便會顯示與下列類似的輸出:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

完成主要資料庫驗證

您可以使用 dgmrgl 來完成主要資料庫 (來源資料庫) 上的 Oracle Data Guard 中介驗證。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 在主要資料庫 (來源資料庫) 的「待命資料庫」主題上驗證 Oracle Data Guard 中介中,重複步驟 5 到 8。
  3. 啟動 dgmgrl 命令行公用程式:
    dgmgrl
  4. 以主要或待命資料庫系統的使用者 SYS 身分連線。例如,登入 TNS 名稱為 OCIC-ORCL 的主要資料庫:
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. 檢查 Oracle Data Guard 組態。
    show configuration verbose
    便會顯示與下列類似的輸出:
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. 檢查待命資料庫 (目標資料庫) 的狀態。分隔符號分隔),例如:
    show database verbose target_db_unique_name
    完成這些步驟之後,您必須依照兩個方向執行切換作業來測試 Oracle Data Guard 組態是否如預期般運作。

執行移轉

若要完成移轉,您必須執行從主要資料庫 (來源資料庫) 到待命資料庫 (目標資料庫) 的切換作業。

  1. 使用 SSH 登入主要資料庫 (來源資料庫) 伺服器。
  2. 啟動 dgmgrl 命令行公用程式。
    dgmgrl 
  3. 從主要資料庫系統或待命資料庫系統以 SYS 身分連線。例如,若要登入 TNS 名稱為 OCIC-ORCL 的主要資料庫:
    connect sys@ocic-orcl
    Enter password: password
  4. 請檢查組態。
    show configuration verbose
  5. 在組態詳細資訊輸出中,檢查「資料庫狀態」設定值是否顯示 SUCCESS
  6. 檢查主要資料庫 (來源資料庫) 的組態。
    show database verbose source_db_unique_name
    資料庫詳細資訊輸出應該顯示此角色為主要角色,且 StaticConnectIdentifier 的設定與 DGConnectIdentifier. 相同
  7. 執行切換作業至待命資料庫 (目標資料庫)。
    switchover to target_db_unique_name
    輸出應指示切換作業是在兩個資料庫之間進行。
  8. 執行顯示組態以驗證沒有錯誤或警告:
    show configuration;

移轉後步驟

完成將 Oracle 資料庫從 Oracle Cloud Infrastructure Compute Classic 伺服器移轉至使用「虛擬機器資料庫」系統的 Oracle Cloud Infrastructure 伺服器後,您應該驗證移轉,然後移除主要資料庫 (來源資料庫) 的組態。

測試待命資料庫的 Oracle Data Guard 組態

在此階段,目標資料庫現在是主要資料庫。來源資料庫現在是待命資料庫。

您可以透過在來源資料庫執行切換作業,測試目標資料庫的 Oracle Data Guard 連線。此切換作業會讓目標資料庫再次取得待命角色。此測試的目的在於目標資料庫沒有作用時,您可以返回原始組態。

  1. 使用 SSH 登入待命資料庫 (目標資料庫) 伺服器。
  2. 啟動 dgmgrl 公用程式。分隔符號分隔),例如:
    dgmgrl sys@target_db
    Enter password: password
  3. 執行切換作業至來源資料庫,讓目標資料庫具備待命角色。
    switchover to source_db_unique_name;
    輸出應指示切換作業是在兩個資料庫之間進行。
  4. (選擇性) 若要避免對新的待命資料庫進行變更、直到判斷新的主要資料庫為完全功能、請暫時停用 Redo Apply 功能。
    edit database source_db_unique_name set state = 'APPLY-OFF';
    如果您執行其他切換作業、讓目標資料庫現在是待命資料庫、您可以執行 APPLY-OFF 作業、避免來源資料庫更新。這可讓目標資料庫啟用服務,並在新組態中發生邏輯失敗時,將來源資料庫保持為時間點備份。
  5. (選擇性) 若要重新啟動套用功能:
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. 結束 dgmgrl
    exit
  7. 執行切換作業至目標資料庫,讓來源資料庫成為待命角色。
    switchover to target_db_unique_name;
    輸出應指示切換作業是在兩個資料庫之間進行。
  8. 測試新主要資料庫的連線。例如,在匯出目標唯一名稱之後,以 SYS 身分連線並從加密的表格空間選取。在此範例中,HR.EMPLOYEES 表格已加密。
    exit
  9. 測試新主要資料庫的連線。例如,在匯出目標唯一名稱之後,以 SYS 身分連線,然後從加密的表格空間選取。在此範例中,HR.EMPLOYEES 表格已加密。
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

清除待命資料庫

完成並測試移轉之後,您可以從待命資料庫 (目標資料庫) 移除 Oracle Data Guard 組態。您不需要移除原始來源資料庫。待命資料庫在此階段是新的來源資料庫。

  1. 請使用 SSH 登入待命資料庫 (目標資料庫) 伺服器並登入 Oracle Data Guard dgmgrl utility
  2. 請檢查組態。
    show configuration
  3. 如果組態未顯示 Protection Mode: MaxPerformance,則設定 Oracle Data Guard 以使用 MaxPerformance 保護模式。
    edit configuration set protection mode as maxperformance
  4. 停用後移除組態。
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. 以具有 SYSDBA 管理員權限的使用者身分連線資料庫執行處理。例如:
    sqlplus / as sysdba
  6. 檢查 DG_BROKER_CONFIG_FILE 參數。
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    輸出應該會列出此組態的相關資料和復原檔案,一般名稱為 dg_broker_config_file1dg_broker_config_file2
  7. 啟動另一個終端機視窗,然後以網格使用者的身分登入 asmcmd
  8. 移除您核取 DG_BROKER_CONFIG_FILE 參數時所列的 Oracle Data Guard 組態檔。
  9. 返回執行 SQL*Plus 的視窗。
  10. 執行下列 ALTER SYSTEM 敘述句:
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. 檢查下列參數:
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. 如果先前的任一參數已設定,請將參數重設為使用空白值。例如,對於 STANDBY_ARCHIVE_DEST
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. 重新啟動資料庫。
    SHUTDOWN IMMEDIATE
    STARTUP
  14. 從主要資料庫 (來源資料庫) 刪除待命日誌。
    1. 尋找新主要資料庫 (之前為目標資料庫) 上之待命資料庫重做日誌的群組編號。
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. 移除待命日誌。分隔符號分隔),例如:
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (選擇性) 變更 DB_BLOCK_CHECKSUMDB_BLOCK_CHECKING 參數。
    預設值為 DB_BLOCK_CHECKSUM=TYPICALDB_BLOCK_CHECKING=FALSE
  16. 結束 SQL*Plus。
    EXIT