設定未來的次要資料庫

Oracle Cloud Infrastructure (OCI) 中建立第一個實體待命資料庫之後,您將在另一個區域中建立第二個實體待命資料庫。第二個資料庫是雲端災害復原環境中的資料庫。

Oracle Data Guard 串聯待命功能,第二個待命資料庫會從第一個待命資料庫 (而非直接從內部部署主要資料庫) 收到其 redo,減少來自內部部署主機網站的網路流量。它也會建立最終將成為主要 redo 傳輸路由的內容。

目前有限制,使我們無法利用 OCI 工具建立和完全管理未來的災害復原資料庫。Oracle Data Guard Association 雲端服務目前無法註冊現有的待命資料庫關係,也無法管理待命資料庫組態。因此,例如無法使用 Oracle Managed Disaster Recovery Cloud Service。

由於兩個待命資料庫都是使用以 OCI 為基礎的預留位置資料庫所建立,因此 OCI 控制層可以管理每個資料庫的修補程式和其他生命週期活動。

建立預留位置資料庫

使用 OCI 主控台,在不同的區域 (建議) 或在相同區域的不同可用性網域中建立新的預留位置資料庫。

請依照此處的步驟,請勿使用 OCI 或 dbaascli 等工具刪除預留位置資料庫。
  1. 選取 Oracle Public Cloud 上的 Exadata 。選擇要部署資料庫的 Oracle Exadata Database Service on Dedicated Infrastructure 服務。

    請遵循這些限制:

    • 資料庫本位目錄的軟體版本、版本以及修正程式層次必須與來源相同。
    • DB_NAME 必須與主要資料庫和第一個待命資料庫相同。
    • DB_UNIQUE_NAME 可以保留空白或指定,但必須與內部部署主要資料庫和第一個實體待命資料庫不同。
    • 佈建此資料庫時不要設定自動備份。
    • 啟動設定此資料庫時,請勿指定 PDB 名稱。
  2. 擷取連鎖待命組態資料。
    1. oracle 作業系統使用者身分登入代管剛建立之預留位置資料庫的其中一個資料庫節點。
    2. 來源此資料庫的環境。
    3. 使用您的 DB_UNIQUE_NAME 執行下列命令:
    $ srvctl config database -db DB_UNIQUE_NAME
    儲存此組態資料,您將在以下幾個步驟中使用。
  3. 關閉預留位置資料庫。
    $ srvctl stop database -db cascade standby placeholder database -stopoption immediate
  4. 以 grid 作業系統使用者身分登入。使用 asmcmd 命令,清空 +DATAC1/DB_UNIQUE_NAME 下目錄中的檔案:
    1. DATAFILE
    2. ONLINELOG
    3. 所有 PDB GUID/DATAFILE
    4. +DATAC1/DB_UNIQUE_NAME/CONTROLFILE 下的所有控制檔
    5. 步驟 1 中擷取之組態資料中所指定的密碼檔
  5. +RECOC1/DB_UNIQUE_NAME 下,移除 ARCHIVELOGAUTOBACKUPFLASHBACKLOG 目錄中的檔案。
  6. 請勿移除 spfile

準備資料庫回復

設定新 Oracle 本位目錄,以準備回復資料庫。

  • 調整每個環境上的 tnsnames.ora 檔案,以瞭解其他每個資料庫。驗證環境之間的通訊。
  • 從第一個待命資料庫複製密碼檔。
  • 從第一個待命資料庫複製通透資料加密 (TDE) 公事包。
  • 調整連鎖待命資料庫的資料庫參數。

設定串接待命資料庫的 TNS

調整每個環境上的 tnsnames.ora 檔案,以瞭解其他每個資料庫。驗證環境之間的通訊。

無論連線的執行處理為何,「資料保全中介」都必須能夠與組態中的每個資料庫通訊。Oracle Zero Downtime Migration 已對初始待命關係執行此組態。您必須將連鎖待命資料庫新增至組態:
  • 將連鎖待命資料庫的 TNS 連線字串加到內部部署主要資料庫和第一個待命資料庫之所有 Oracle Real Application Clusters (Oracle RAC) 執行處理所使用的 tnsnames.ora 檔案
  • 將內部部署主要資料庫和第一個 OCI 待命資料庫的 TNS 連線字串新增至串聯待命資料庫之所有 Oracle RAC 執行處理所使用的 tnsnames.ora 檔案。
這些 TNS 項目必須使用 SCAN IP 位址,而非 SCAN 名稱。以下為 Oracle Zero Downtime Migration 為第一個待命資料庫建立的相容 TNS 項目範例:
CDBHCM_iad1dx =
          (DESCRIPTION =
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  1>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  2>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  3>)) (PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = CDBHCM_iad1dx)
              (FAILOVER_MODE =
                  (TYPE = select)
                  (METHOD = basic)
              )
              (UR=A)
             )
          )

您必須以 oracle 作業系統使用者的身分登入每個資料庫伺服器,以搜尋您的環境,然後將目錄變更為 $TNS_ADMIN

  1. 針對內部部署主要和第一個 OCI 待命資料庫的每個 Oracle RAC 執行處理,編輯 tnsnames.ora 檔案並新增串聯待命資料庫 TNS 連線字串。
  2. 對於每個 OCI 連鎖待命資料庫的 Oracle RAC 執行處理,請編輯 tnsnames.ora 檔案,並為內部部署主要資料庫和第一個 OCI 待命資料庫新增 TNS 連線字串。
  3. 測試是否可使用 tnsping 公用程式搭配新增的連線字串別名,從串聯待命資料庫偵測第一個待命資料庫。
    $ tnsping CDBHCM_iad1dx
    這應該傳回延遲時間為毫秒的確定。如果未傳回確定,請檢查相應的錯誤和位址。
  4. 使用 SQL*Plus 測試將連鎖待命資料庫代管至第一個待命資料庫 (CDBHCM_iad1dx) 的每個資料庫伺服器的連線。您需要主要資料庫的 SYS 密碼。
    $ sqlplus sys/<password>@CDBHCM_iad1dx as sysdba
    更正所有錯誤並重複,直到您可以順利連線為止。

複製密碼檔

從第一個待命資料庫複製密碼檔。

  1. 以 oracle 作業系統使用者身分登入代管您第一個待命資料庫 (CDBHCM_iad1dx) 的其中一個伺服器。
  2. 請使用 srvctl 來判斷此資料庫的密碼檔所在位置,然後將它複製到 /tmp 目錄。
    若要判斷公事包根目錄位置,請以 sysdba 身分執行下列作業:
    $ srvctl config database -db first standby db name
  3. 尋找表示「密碼檔:」並記錄其位置的行 (Oracle Automatic Storage Management (Oracle ASM) 路徑)。
  4. 成為 Grid OS 使用者,並使用 asmcmd 命令將密碼檔複製到 /tmp 目錄:
    $ asmcmd -p
    asmcmd> cd +DATAC1/path from step 3
    asmcmd> cp <password file name> /tmp/password file name
  5. 使用 scp 或透過在 OCI 內傳輸檔案的任何方式,將密碼檔傳輸至其中一個串聯待命資料庫伺服器上的暫存位置。
  6. 以 Grid OS 使用者的身分登入用來放置密碼檔的連鎖待命資料庫伺服器。使用上述重疊待命組態資料中指定的位置,將密碼檔複製到 Oracle ASM
    $ asmcmd -p --privilege sysdba
    asmcmd> pwcopy –dbuniquename cascade standby db unique name /tmp/password-file-name +ASM Diskgroup/path/password-file-name -f
    例如,
    asmcmd> pwcopy –dbuniquename CDBHCM_phx5s   /tmp/password file name +DATAC1/CDBHCM_phx5s/PASSWORD/orapwCDBHCM_phx5s -f 
  7. 驗證每個資料庫都可以連線到所有其他資料庫,以確保所有 TNS 連線字串都正確設定。修正下列連線嘗試失敗的任何連線錯誤。
    1. 從內部部署 (主要) 資料庫:
      $ sqlplus sys/password@first standby db as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    2. 從第一個實體待命資料庫:
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    3. 從階層式實體待命資料庫:
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@first standby db as sysdba
    請勿繼續進行,直到所有連線嘗試都成功為止。

複製 TDE Wallet

從第一個待命資料庫複製通透資料加密 (TDE) 公事包。在 Oracle Exadata Database Service on Dedicated Infrastructure 上,雲端工具用於儲存 TDE 公事包的位置位於 Oracle Advanced Cluster File System (Oracle ACFS) 上,叢集中的所有資料庫伺服器皆共用。
  1. oracle 作業系統使用者身分登入代管您第一個待命資料庫 (CDBHCM_iad1dx) 的其中一個伺服器,並將目錄變更為公事包根目錄位置。
    若要判斷公事包根目錄位置,請以 sysdba 身分執行下列作業:
    $ sqlplus / as sysdba
    SQL> show wallet_root
    $ cd wallet root location from “show wallet_root” above
  2. 移至公事包根目錄位置並壓縮 tde 目錄。
    tde 目錄位於步驟 1 中指定的目錄下,通常是 /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root
    $ zip -r CDBHDM_tde_wallet.zip  tde
  3. 將此 ZIP 檔案傳輸至將代管連鎖資料庫 (CDBHCM_phx5s) 的其中一個資料庫伺服器到暫存位置 (例如 /tmp)。
    使用 scp 或透過任何方式在 OCI 內傳輸檔案。
  4. oracle 作業系統使用者身分登入將代管連鎖資料庫 (CDBHCM_phx5s) 的資料庫伺服器,並將目錄變更為公事包根目錄位置。

    位置必須與先前的位置相同,因為 DB_NAME 相同 (CDBHCM)。

    $ cd /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root
  5. 將現有的 TDE 目錄移至其他名稱。
    $ mv tde tde_date
  6. 將包含步驟 2 中建立之 TDE 公事包 (CDBHDM_tde_wallet.zip) 的 ZIP 檔案移至下列路徑:/var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root.
    DB_NAME 取代為您的資料庫名稱。
  7. CDBHDM_tde_wallet.zip 檔案解壓縮。
    $ unzip CDBHDM_tde_wallet.zip

這會使用第一個實體待命資料庫的公事包檔案建立新的 tde 子目錄。

調整串聯待命資料庫的資料庫參數

完成串接待命資料庫的組態。

  1. oracle OS 使用者身分登入代管第一個待命資料庫 (CDBHCM_iad1dx) 的其中一個伺服器,然後來源環境。
    $ . ./CDBHCM.env
  2. 從第一個待命資料庫建立 pfile,以作為調整串聯待命資料庫上參數的參照。
    $ cd $ORACLE_HOME/dbs
    $ sqlplus / as sysdba
    SQL> create pfile=’tmp_CDBHCM_iad1dx_init.ora’ from spfile;
  3. 登入將代管連鎖待命資料庫 (CDBHCM_phx5s) 的其中一個資料庫伺服器,然後來源環境:
    $ . ./CDBHCM.env
  4. 在一個執行處理上啟動 NOMOUNT
    $ sqlplus / as sysdba
    SQL> startup nomount
  5. 對階層式資料庫的資料庫參數進行下列調整,參照上述步驟 2 的資料庫參數清單:
    SQL> alter system set control_files=’’ sid=’*’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 1>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 2>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance N>’ scope=spfile;
    SQL> alter system set sga_target=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
    SQL> alter system set log_buffer=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
  6. 調整 PeopleSoft 特定的參數。
    SQL> alter system set “_gby_hash_aggregation_enabled”=false sid=’*’ scope=spfile;
    SQL> alter system set “_ignore_desc_in_index”=true sid=’*’ scope=spfile;
    SQL> alter system set “_unnest_subquery”=true sid=’*’ scope=spfile;
    SQL> alter system set nls_length_semantics='CHAR' sid=’*’ scope=spfile;

    附註:

    請勿變更下列參數:
    • DB_NAME
    • DB_UNIQUE_NAME
    • WALLET_ROOT
  7. 關閉並重新啟動執行處理上的 NOMOUNT,以實行變更。
    $ sqlplus / as sysdba
    SQL> shutdown immediate
    SQL> startup nomount

將資料庫回復至串聯待命資料庫

將資料庫從第一個實體待命資料庫回復至連鎖待命足跡。使用 Oracle Recovery Manager (RMAN) 命令 RESTORE FROM SERVICE 回復控制檔和資料檔。

  1. 如果未啟動連鎖待命資料庫的執行處理,請在 NOMOUNT 中啟動它:
    $ sqlplus / as sysdba 
    $ SQL> startup nomount
  2. 使用 RMAN 將控制檔和資料檔從第一個待命資料庫回復至連鎖待命資料庫。

    附註:

    您可能需要調整「裝置類型磁碟」的 RMAN 通道數目,如此才不會飽和網路。如果需要變更,請在執行「從服務回復資料庫」命令之前執行。您可以使用下列指令執行此操作,並視需要取代 N:
    RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM N; 
    $ rman target / nocatalog
    RMAN> restore standby controlfile from service ‘first standby db name’;
    RMAN> alter database mount;
    RMAN> restore database from service ‘first standby db name’ section size 8G;
    RMAN> shutdown immediate;
    RMAN> exit
  3. 重新啟動所有執行處理,並使用 srvctl 掛載連鎖待命資料庫。
    $ srvctl start database -db cascade standby db unique name -startoption mount
  4. 使用下列命令檔建立並清除所有線上和待命日誌檔。
    $ sqlplus “/ as sysdba”
    SQL> set pagesize 0 feedback off linesize 120 trimspool on
    SQL> spool /tmp/clearlogs.sql
    SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile;
    SQL> spool off
  5. 在執行前檢查產生的 clearlogs.sql 命令檔。這會讓資料庫執行處理為所有繫線建立並清除線上和待命日誌檔。然後執行命令檔。
    SQL> @/tmp/clearlogs.sql

設定連鎖待命資料庫的資料保全中介

您已經在 Oracle Zero Downtime Migration 的內部部署主要資料庫與第一個 OCI 待命資料庫之間設定「資料保全中介」,現在會將連鎖待命資料庫新增至組態。

串聯待命資料庫和內部部署資料庫不會彼此直接通訊。必要時,其 redo 會透過第一個內部部署待命資料庫出貨:

  • 當內部部署資料庫為主要資料庫時,redo 會從內部部署主要資料庫傳送至第一個待命資料庫或透過第一個待命資料庫傳送到串聯待命資料庫:
    • OCI 第一個待命資料庫的內部部署主要資料庫
    • OCI 第一個待命資料庫至 OCI 連鎖待命資料庫
  • 當第一個待命資料庫是主要角色時,redo 會從該資料庫直接傳送至內部部署和串聯待命資料庫:
    • OCI 主要到內部部署待命資料庫
    • OCI 主要與 OCI 連鎖待命資料庫
  • 如果連鎖待命資料庫成為此組態的主要資料庫,則會將重做從該資料庫傳送至 OCI 第一個待命資料庫,或透過 OCI 傳送至內部部署資料庫:
    • OCI 第一個待命資料庫至內部部署待命資料庫
    • OCI 將主要串連至 OCI 第一個待命資料庫
  1. 在代管連鎖待命資料庫的資料庫伺服器上設定「資料保全中介」。以 oracle 作業系統使用者的身分登入代管串聯待命資料庫的其中一個資料庫伺服器,並來源環境。
    $ sqlplus / as sysdba
    SQL> alter system set dg_broker_config_file1=’+DTAC1/cascade standby db/DG/dr1 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_config_file2=’+RECOC1/cascade standby db/DG/dr2 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_start=TRUE sid=’*’ scope=both;
  2. 登入主要或第一個實體待命資料庫,並建立環境的來源。將新的連鎖待命資料庫加到現有的「資料保全中介」組態。
    $ dgmgrl 
    DGMGRL>  connect sys/password
    DGMGRL> show configuration
    DGMGRL> add database 'cascade standby db’
     as connect identifier is cascade standby db;
  3. 新增 redo routes
    DGMGRL> edit database on-premises db set property redoroutes='(LOCAL : first standby db ASYNC)';
    DGMGRL> edit database first standby db set property redoroutes='(LOCAL : on-premises db ASYNC, cascade standby db ASYNC)(on-premises db : cascade standby db ASYNC)(cascade standby db : on-premises db ASYNC)';
    DGMGRL> edit database cascade standby db set property redoroutes='(LOCAL : first standby db ASYNC)';
  4. 啟用新的連鎖待命資料庫。
    DGMGRL> enable database cascade standby db;
  5. 啟用連鎖資料庫之後,就會開始透過第一個待命資料庫接收內部部署主要資料庫所產生的 redo。從「資料保全中介」內部顯示組態:
    DGMGRL> show configuration lag
    Configuration - zdm_psfthcm_dg
      Protection Mode: MaxPerformance
      Members:
      CDBHCM_sca6dp  - Primary database
        CDBHCM_iad1dx - Physical standby database 
                          Transport Lag:      0 seconds (computed 0 seconds ago)
                          Apply Lag:          0 seconds (computed 1 second ago)
          CDBHCM_phx5s - Physical standby database (receiving current redo)
                            Transport Lag:      1 second (computed 1 second ago)
                            Apply Lag:          2 seconds (computed 1 second ago)
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 47 seconds ago)

定義未來待命資料庫的角色型資料庫服務

新增 PeopleSoft 應用程式在 OCI 次要資料庫填入 PRIMARY 角色時將使用的角色型資料庫服務。

  1. 為處理程序排程程式新增以角色為基礎的資料庫服務。
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_BATCH -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3
  2. 為線上使用者新增以角色為基礎的資料庫服務。
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_ONLINE -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3