設定 DR 拓樸

設定災害復原 (DR) 拓樸。可使用程序檔來簡化程序。

下載命令檔

從 GitHub 儲存庫取得最新的設定命令檔。

注意:

將所有下載的文稿放在同一個資料夾內 。
  1. 前往 GitHub 儲存區域。
  2. 下載 maa/fmw-wls-with-adb-dr 目錄中的所有命令檔。
  3. 下載 maa/app_dr_common 目錄中的所有命令檔。
    這些程序檔會相互呼叫。儘管特定作業正在某個時間點執行,下載整個目錄並將所有命令檔放置在相同的資料夾中。主要與次要網站都需要有指令碼。
  4. 依照本文件中的指示,針對您執行的每個作業,讀取每個命令檔中所需的變數。

下載的檔案包含可執行下列工作的指令碼:

  1. 設定資料來源的 TNS 別名
  2. 設定初始 DR 組態
  3. 設定進行中的複製
  4. 變更 Oracle WebLogic ServerOracle SOAOracle Fusion Middleware 系統的公事包。
每個命令檔都針對 DR 設定與災害保護系統的生命週期,提供自動化的機制。下表提供公用程式的摘要:
指令碼名稱 描述
fmwadb_config_replica.sh 在網站之間複製組態。
fmwadb_dr_prim.sh 準備 DR 設定的主要網站。
fmwadb_dr_stby.sh 準備供 DR 設定使用的次要網站。
fmwadb_rest_api_listabds.sh 依據 ADB ID 和租用戶資訊取得 Autonomous Database 角色。
fmwadb_switch_db_conn.sh 以新的 ADBS WALLET 取代現有的連線資訊。
fmw_change_to_tns_alias.sh 將 Oracle WebLogic 資料來源和 jps config 檔案使用的連線字串取代為 tns 別名。
fmw_dec_pwd.sh 解密 Oracle WebLogic 加密的密碼。
fmw_enc_pwd.sh 使用 Oracle WebLogic 加密來加密密碼。
fmw_get_connect_string.sh 傳回 Oracle WebLogic、Oracle SOAOracle Fusion Middleware 資料來源所使用的連線字串。
fmw_get_ds_property.sh 傳回特定資料來源特性的值。

準備虛擬前端的主要中間層

如果主要中間層尚未設定虛擬前端名稱,請執行下列動作,準備進行災害復原 (DR) 組態。

  1. 將虛擬前端名稱和 IP 新增至所有主要中間層主機的 /etc/hosts 檔案。
    無論是透過網域名稱系統 (DNS) 進行的從屬端解析為何,每個網站都應該將前端名稱解析為本機負載平衡器。以 root 使用者身分編輯 /etc/hosts 檔案,並將主要負載平衡器公用 IP 對應至虛擬前端完整網域名稱 (FQDN)。在所有主要 Oracle WebLogic 主機中重複此動作。例如:
    [oracle@wlsociprefix-wls-0 ~]$ more /etc/hosts
    (...)
    # Front-end virtual name
    111.111.111.111 mywebapps.example.com

    注意:

    進行切換或容錯移轉時,不得更改主要 Oracle WebLogic 主機的 /etc/hosts 檔案。主要 Oracle WebLogic 主機一律會以其前端 IP 解析虛擬前端名稱。在進行切換和容錯移轉程序期間所需的 DNS 更新,會在用戶端使用的 DNS 或主機檔案中執行。

  2. 將前端名稱設定為叢集前端。
    1. 登入您執行處理的「Oracle WebLogic 主控台」。
    2. 依序瀏覽至環境叢集,然後選取叢集。
    3. 依序前往 ConfigurationHTTP
    4. 將「前端」主機設為前端 FQDN。
      例如,mywebapps.example.com。
    5. 確定已使用值正確設定 HTTP 和 HTTPS 的前端連接埠。
    6. 按一下儲存,然後按一下啟用
  3. 重新啟動叢集以實作變更。

修改主要資料來源和 JPS 組態以使用 TNS 別名

在 Java 資料庫連線 (JDBC) URL 中使用通透網路子字串 (TNS) 別名,透過使用遠端可重新整理複製在主要複製和待命資料庫之間移動,協助重新設定 Oracle WebLogic Server for Oracle Cloud Infrastructure 資料來源。

注意:

Oracle SOA Suite on Marketplace 執行處理 (版本 23.1.1 (2023 年 2 月) 或更新版本) 已立即設定 TNS 別名方法。在此情況下,您可以略過此任務。

使用 TNS 別名時,資料來源和 jps 檔案必須在 Oracle Fusion Middleware 組態檔中包含變數 oracle.net.tns_admin

  1. 使用 grep 命令來搜尋 Oracle Fusion Middleware 組態檔中的 oracle.net.tns_admin 變數。
    [oracle@soarefr-soa-0 ~]$ grep oracle.net.tns_admin ${DOMAIN_HOME}/config/fmwconfig/jps-config.xml 
    <property name="oracle.net.tns_admin" value="/u01/data/domains/soarefr_domain/config/atp"/>
    
    [oracle@soarefr-soa-0 ~]$ grep oracle.net.tns ${DOMAIN_HOME}/config/jdbc/opss-datasource-jdbc.xml  -A1 | grep value 
    <value>/u01/data/domains/soarefr_domain/config/atp</value>
    [oracle@soarefr-soa-0 ~]$
    反映在 jps-config.xml (和資料來源) 中的目錄必須可供使用,並且可從 WebLogic Server 網域中的所有節點存取。
    • Oracle SOA Suite on Marketplace 中,此目錄位於 $DOMAIN_HOME/config/atp 目錄下 (23.1.1 版之前) 或 $DOMAIN_HOME/config/tnsadmin 目錄下 (適用於 23.1.1 版或更新版本),且當受管理伺服器啟動時,會自動由 WebLogic Server 複製到所有其他節點。

      注意:

      如果您的主要 Oracle SOA Suite on Marketplace 早於 23.1.1,建議您將資料夾移至 $DOMAIN_HOME/config/tnsadmin 目錄,使其與待命資料庫保持一致。
    • Oracle WebLogic Server for Oracle Cloud Infrastructure 中,此伺服器位於 $DOMAIN_HOME/atpwallet 下。

      注意:

      如果公事包不在 DOMAIN_HOME/config 目錄下,Oracle WebLogic Server 基礎架構將不會自動將公事包目錄內容變更複製到其他節點。在這些情況下,您必須變更公事包目錄 (並更新必要的資料來源組態),或在更新後手動將其複製到其他節點。
    • 在其他組態中,您可以將該目錄放在共用儲存體上。
    在所有情況下,必須由 WebLogic Server 網域的所有不同成員連線相同的 tns_admin 目錄。此目錄將包含具有不同別名的 tnsnames.ora 檔案,用於在 Oracle Autonomous Database 中建立的不同服務。

    以下是 Oracle Autonomous Database Serverless 組態的 tnsnames.ora 檔案範例和 Oracle Fusion Middleware 組態。

    [oracle@soarefr-soa-0 ~]$ cat 
    $DOMAIN_HOME}}/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    WLS 資料來源會動態使用 tnsnames.ora 檔案的修改。這表示您可以更改 tnsnames.ora 檔案 (例如指向其他服務),而不需要重新啟動資料來源。

  2. 若要修改標準資料來源組態,以在 Oracle SOA Suite on Marketplace 或使用 Autonomous Database 的 Oracle WebLogic Server for Oracle Cloud Infrastructure 系統中使用 TNS 別名,請使用 fmw_change_to_tns_alias.sh 命令檔。

    別名應該用於 $DOMAIN_HOME/config/jdbc 下的所有資料來源檔案,以及 $DOMAIN_HOME/config/fmwconfig 下的 jps config 檔案中。

    注意:

    此命令檔只會變更連線字串和 tns_admin 特性。如果您新增其他自訂資料來源,則這些資料來源也必須使用 TNS 別名,就像 Oracle WebLogic 的內部別名、Oracle SOA Suite on Marketplace 以及 Oracle Fusion Middleware
    Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 使用 Oracle Autonomous Database 佈建時,資料庫公事包的組態會包含在資料來源中 (信任存放區位置、金鑰存放區位置等等)。fmw_change_to_tns_alias.sh 程序檔不會修改這些參數,而且無論是否使用 TNS 別名都有效。公事包目錄是由 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 在佈建時建立,並且已經包含 tnsnames.ora 檔案。您也可以從 OCI 中的自治式資料庫 UI 取得 Oracle Autonomous Database 公事包。

    注意:

    Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 使用的 Oracle Autonomous Database 公事包會在佈建時下載至管理伺服器節點。您可以從 Oracle Autonomous Database UI 重新下載主要和待命系統的公事包,以及更新 $DOMAIN_HOME/config/jdbc 目錄和 jps config 底下 $DOMAIN_HOME/config/fmwconfig 檔案中的公事包密碼,以更新主要和待命系統的公事包。針對主要資料庫、待命資料庫和可重新整理複製項公事包使用相同的密碼,將有助於操控兩個網站中的資料來源組態;不過,下方提供的命令檔將能夠處理不同的密碼。請使用 fmwadb_switch_db_conn.sh 程序檔,以新的公事包更新系統。

    佈建主要系統時,您選擇 (在佈建畫面中) 其中一個 Oracle Autonomous Database 服務層次。以相同的服務層級執行 fmw_change_to_tns_alias.sh 程序檔。Oracle Autonomous Database 中資料庫服務的服務層次包括:低、中、高 Tp、緊急。以下是將 Oracle Fusion Middleware 變更為 TNS 別名的範例:

    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/fmwconfig/jps-config.xml
    <property name="jdbc.url" value="jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))"/>
    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml
    <url>jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))</url>
     
    NOTICE the "low" label in g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com, that is the service flag that will allow you identify the tns alias that needs to be used
     
    [oracle@soarefr-soa-0 good]$ cat $DOMAIN_HOME/config/atp/tnsnames.ora | grep low | awk -F '=' '{print $1}'
    soaadb1_low
     
    [oracle@soarefr-soa-0 good]$ ./fmw_change_to_tns_alias.sh soaadb1_low                                                                                          
    Getting variables from current datasource ...............
    An existing tns_admin property was found in /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml and will be used
    Found soaadb1_low  as tns_alias
    No modifications will be required in /u01/data/domains/soarefr_domain/config/atp/tnsnames.ora
    *******************WILL USE THESE SETTINGS********************
    **************************************************************
    TNS admin:........................./u01/data/domains/soarefr_domain/config/atp
    TNS alias:........................ soaadb1_low
    Current connect string:............(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    Current jps connect string:........(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    Current tnsnames.ora:..............
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    **************************************************************
    Taking backup of existing config...
    ************** Replacing DB connect information **************
    Replacing jdbc url in config/jdbc files...
    Replacing jdbc url in config/fmwconfig files...
    Replacement complete!
     
    [oracle@soarefr-soa-0 ~]$ grep url $DOMAIN_HOME/config/fmwconfig/jps-config.xml
    <property name="jdbc.url" value="jdbc:oracle:thin:@soaadb1_low "/>
    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml
        <url>jdbc:oracle:thin:@soaadb1_low </url>
    <property name="jdbc.url" value="jdbc:oracle:thin:@soaadb1_low "/>
    [oracle@soarefr-soa-0 ~]$
  3. 重新啟動網域中的所有 Oracle WebLogic 伺服器,以使用命令檔所執行的變更。

在次要區域中建立 VCN 和子網路

如果您尚未建立 VCN,請在待命區域中建立 CIDR 不與主要區域 CIDR 衝突的 VCN。例如,如果主要 VCN 使用 10.1.0.0/16,則次要 VCN 可以使用 10.2.0.0/16。

  1. 在次要區域中建立 VCN 和子網路。
    您可以建立雲端堆疊以佈建一組相關的雲端服務。
  2. 確定安全清單允許層之間的適當通訊。

    請檢查下列通訊:

    • 從 OCI 負載平衡器到 WebLogic 伺服器
    • 從 WebLogic 伺服器到資料庫
    • 從 WebLogic 伺服器到共用儲存體

    此外,也包含必要的規則,以在管理伺服器節點建立後,透過動態路由閘道 (DRG) 進行通訊。

設定主要與次要 VCN 之間的 DRG

災害復原設定需要主要和次要的 Oracle WebLogic Server 管理節點彼此通訊,才能透過 Oracle Cloud Infrastructure File Storage 副本來接收網域組態。因此,您必須在中間層 VCN 之間建立動態路由閘道 (DRG)。

  1. 在中間層 VCN 之間建立 DRG。
  2. 確認新 DRG 出現在您所選區間或區域的動態路由閘道頁面上。
    DR 設定程序檔會驗證可建立所需的連線。
  3. 在主要和待命 VCN 中設定適當的路由和安全規則,以允許中間層之間的 SSH 連線。
  4. 確認您可以建立從主要 Oracle WebLogic Administration Server 節點至次要 Oracle WebLogic Administration Server 節點的 SSH 連線。
    例如,如果 10.2.1.104 是次要「管理伺服器」節點的 IP,請從主要「管理伺服器」節點執行下列作業。
    [opc@soarefr-soa-0 ~]$ ssh -i KeySOAMAA.ppk opc@10.2.1.104
    Last login: Wed Dec 14 16:59:15 2022 from 10.2.0.83
    [opc@soarefr-soa-0 ~]$

在次要區域中建立 Oracle Autonomous Data Guard 待命資料庫

為現有的主要 Oracle Autonomous Database 建立待命資料庫。

  1. 針對 Oracle Autonomous Database Serverless,在次要區域中建立待命 Oracle Autonomous Database Serverless
    1. 在 OCI 主控台中,按一下左側導覽功能表中的 Oracle Database ,即可瀏覽至主要 Oracle Autonomous Database
    2. Autonomous Database 詳細資訊頁面的「資源」底下,按一下災害復原,然後按一下新增對等資料庫
    3. 使用您先前建立的 VCN 和專用子網路。
  2. 針對 Oracle Autonomous Database on Dedicated Exadata Infrastructure
    1. 在 OCI 主控台中,瀏覽至您的「自治式容器資料庫」詳細資訊頁面,然後在「資源」區段中選取自治式資料保全關聯資源。
    2. 按一下啟用 Autonomous Data Guard
    3. 輸入對等自治式 VM 叢集資訊、保護模式以及自動容錯移轉選項。輸入所有必要資訊之後,請按一下啟用自治式資料保全
      在此工作流程中,會建立新的待命自治式容器資料庫,其中包含所選自治式 VM 叢集中的所有待命自治式資料庫。

準備用於 DR 設定的待命 Autonomous Database

此作業取決於您是使用「快照待命」還是「遠端可重新整理複製」方法。

如需「快照待命」方法,請參閱將待命轉換為快照待命

如需「遠端可重新整理複製」方法,請參閱 Create a Remote Refreshable Clone in the Secondary Region

將待命資料庫轉換成快照待命資料庫

使用「快照待命」方法,將待命自治式資料庫轉換成「快照待命」。

  1. 從 Oracle Cloud Infrastructure 主控台左側導覽功能表,按一下 Autonomous Database
  2. 在次要區域中,選取待命 Autonomous Database。
  3. 其他動作下拉式清單中,按一下轉換成快照待命資料庫
  4. 如果您使用的是專用基礎架構,請選取使用主要資料庫服務

注意:

Oracle 專用 Exadata 基礎架構中的「快照待命」未在 7 天內轉換成實體待命時,「快照待命」會自動轉換成實體待命。

Oracle Autonomous Database Serverless 中的「快照待命」未在 2 天內轉換成實體待命時,會自動將「快照待命」轉換成實體待命。

在次要區域中建立遠端可重新整理複製項

使用「遠端可重新整理複製項」方法,從遠端區域中的現有主要 Oracle Autonomous Database Serverless 建立可重新整理複製項。

  1. 從現有的主要 Oracle Autonomous Database Serverless 建立可重新整理複製項。
    將可重新整理複製項放在 VCN 內的次要 (遠端) 區域,以及先前建立的專用子網路。

    注意:

    您不能使用與主要資料庫相同的資料庫名稱,因為「實體待命資料庫」已經使用該名稱。
  2. 使用 Private Endpoint Access Only 來存取資料庫。

    建立之後,可重新整理複製項將維持連線狀態且為唯讀模式。無法針對 Oracle WebLogic ServerOracle SOAOracle Fusion Middleware 系統,將其轉換為讀寫 (與主要資料庫中斷連線)。

  3. 中斷可重新整理複製項與主要自治式資料庫的連線,並將其轉換成讀取 / 寫入模式。

    注意:

    遠端可重新整理複製項在 24 小時內不能繼續保持中斷連線。例如,建立指向遠端可重新整理複製資料庫的次要中間層時,您不能花超過 24 小時的時間。
    1. 從 Oracle Cloud Infrastructure 左側導覽功能表,按一下 Autonomous Database
    2. 選取可重新整理複製項名稱。
    3. 選取來源資料庫,然後按一下中斷連線

佈建次要系統

佈建次要 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 或其他使用 Oracle Fusion Middleware (系統) 指向次要資料庫 (用於「快照待命」方法) 或可重新整理複製項 (用於遠端可重新整理複製項方法) 的中間層 Oracle Cloud Infrastructure (OCI) 服務。

  1. 依照標準子網路、CIDR、安全規則及執行處理前置碼建議進行災害復原。

    「堆疊名稱」可以不同,但您必須使用與主要位置相同的資源名稱前置碼。Oracle 建議您在主要和待命位置上使用完全相同的容量和運算組態,以實現理想的容錯移轉 / 切換行為。

    請確定要在次要位置啟動設定的 Oracle WebLogic Server for OCI 版本和修正程式層次與主要網站中執行的版本相符。

    如果您需要更多詳細資訊,請參閱 Oracle WebLogic Server for Oracle Cloud Infrastructure Disaster RecoverySOA Suite on Oracle Cloud Infrastructure Marketplace Disaster Recovery 之 "Provision SOA Suite on Secondary Site" 小節中,摘要列出 DR 設定之啟動設定精靈選項的表格。

  2. 根據標準佈建程序建立次要中間層系統。
  3. 檢查標準 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace ,或任何其他使用 Oracle Fusion Middleware URL (例如主控台、soa-infra 等) 的中間層 Oracle Cloud Infrastructure (OCI) 服務,以驗證是否已正確建立系統。
  4. 驗證之後,停止待命資料庫中的 Oracle WebLogic 處理作業:受管理伺服器、管理伺服器以及節點管理程式。
  5. 如果您使用遠端可重新整理複製項,可以將它重新連線至來源。如果您使用快照待命資料庫,可以再次將其轉換為實體待命資料庫。
    在 DR 設定完成之前,請勿嘗試以次要方式啟動 Oracle WebLogic 處理作業。

修改次要的 TNS 別名連線字串

將次要系統中使用的別名修改為與主要系統相同的別名。

就像在主要系統中一樣,您應該在 $DOMAIN_HOME/config/jdbc 底下的所有資料來源檔案中以及 $DOMAIN_HOME/config/fmwconfig 底下的 jps config 檔案中使用通透網路子字串 (TNS) 別名。次要 (待命) 系統中使用的別名將與主要系統中的別名相同,因為會從包含先前建立之別名的主要來源複製資料來源。

此作業取決於您是使用「快照待命」還是「遠端可重新整理複製」方法。

修改次要之快照待命方法的 TNS 別名連線字串

對於「快照待命」方法,tnsnames.ora 檔案中的別名應該與主要別名相同 (雖然連線字串將指向待命資料庫的位址)。您不需要修改這些變更。

  1. 如果 tnsnames.ora 檔案中的字串是雙重的 (其中包含本機和遠端自治式資料庫主機),則 Oracle 建議您將它們修改為僅指向本機資料庫。
    這可能是您在專用基礎架構上使用 Oracle Autonomous Database 時所發生。您只需要變更一次,因為組態複製和其他週期作業不會更改待命資料庫的 tnsnames.ora 檔案。

    以下為 tnsnames.ora 檔案中項目的雙重範例:

    adbd1_tp=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST= host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_tp.atp.oraclecloud.com)))
    
    adbd1_medium=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_medium.atp.oraclecloud.com)))
    
    adbd1_tpurgent=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_tpurgent.atp.oraclecloud.com)))
    …
  2. 如果您有雙重項目,請移除遠端資料庫的 ADDRESS,將它們修改為只指向本機 Autonomous Database

    次要中的 tnsnames.ora 檔案應該只包含待命資料庫的 ADDRESS。例如:

    adbd1_tp=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST= host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_tp.atp.oraclecloud.com)))
    
    adbd1_medium=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_medium.atp.oraclecloud.com)))
    
    adbd1_tpurgent=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_tpurgent.atp.oraclecloud.com)))
    …

修改遠端可重新整理複製方法的次要 TNS 別名連線字串

對於「遠端可重新整理複製」方法,請將次要系統中使用的別名修改為與主要系統中相同的別名。

次要 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 或 Oracle Fusion Middleware 系統建立的 tnsnames.ora 檔案會包含以遠端可重新整理複製項名稱為基礎的別名。例如,如果建立名稱為 soaadb1rc2 的遠端可重新整理複製項,則 tnsnames.ora 檔案 (在佈建期間建立的公事包目錄中) 將包含下列別名: soaadb1rc2_highsoaadb1rc2_lowsoaadb1rc2_mediumsoaadb1rc2_tpsoaadb1rc2_tpurgent。若要簡化組態,您應在主要和次要系統中的 tnsnames.ora 檔案中使用相同的別名,因此請修改 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 或 Oracle Fusion Middleware 網域已設定 (遠端可重新整理複製) 的 TNS 別名,以使用與主要相同的別名。您可以從 $tns_admin/tsnames.ora 檔案取得主要別名。系統會為不同的服務建立不同的別名,而所有別名都會推斷資料庫名稱的前置碼。請注意,您只要修改別名名稱而非服務。請勿在檔案中進行全域搜尋並取代,因為這樣可能會同時改變 tnsnames.ora 檔案中連線字串的服務名稱。

  • 修改次要系統的 tnsnames.ora 檔案,以使用與主系統相同的別名。

    以下為 primary 系統中含有 Oracle Autonomous Database Serverless 之 Oracle Fusion Middleware 組態的範例 tnsnames.ora 檔案。

    [oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    以下為 Secondary with Refreshable Clone 中含有 Oracle Autonomous Database Serverless 之 Oracle Fusion Middleware 組態的範例 tnsnames.ora 檔案。

    oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    rcsoaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    由於這是一次性作業,因此變更可重新整理複製項別名的最簡單方式是編輯檔案。您可以修改使用中服務層次的別名,或修改它們的所有別名以保持一致。

    注意:

    每次使用新的可重新整理複製項進行測試或驗證,並使用新的公事包時,都必須執行此操作。

    以下為 2ary with Refreshable Clone using the Primary's alias 中含有 Oracle Autonomous Database Serverless 之 Oracle Fusion Middleware 組態的範例 tnsnames.ora 檔案。

    [oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

與主要系統相同,$DOMAIN_HOME/config/jdbc 下的所有資料來源檔案和 $DOMAIN_HOME/config/fmwconfig 下的 jps 組態檔皆使用選擇的別名。預期與主要系統 (lowmidhightptpurgent) 的遠端可重新整理複製項搭配選擇相同的服務層級。因為別名與資料來源會從主要系統複製而來,所以您不需要在次要系統中執行 fmw_change_to_tns_alias.sh 程序檔。災害復原設定將處理所需的取代。

如果您有其他別名指向主要 tnsnames.ora 檔案中的其他資料庫,請相應地將它們新增到次要系統的 tnsnames.ora 檔案中。

更新主要和待命中間層中的主機名稱別名和前端位址

次要中的 WebLogic 網域配置會在 DR 設定完成後成為主要 WebLogic 網域的副本。 因此,主要 Oracle WebLogic 伺服器 (主要主機的主機名稱) 作為監聽位址的主機名稱在次要位置中必須是有效的,但會對應至次要 IP。

主要和待命資料庫中都必須使用相同的前端位址。在一般作業期間,這個前端主機名稱會對應至主要 Oracle Cloud Infrastructure (OCI) 負載平衡器的 IP。從次要 (切換或容錯移轉之後) 執行時,此前端主機名稱將會對應至次要 OCI 負載平衡器的 IP。

注意:

有切換或容錯移轉時,不得更改中間層主機的 /etc/hosts 檔案。中層主機一律會以其前端 IP 解析虛擬前端名稱。在進行切換和容錯移轉程序期間所需的 DNS 更新,會在用戶端使用的 DNS 或主機檔案中執行。

您可以使用下列方式實行此主機別名:

  • 將主機名稱當作別名新增至 Oracle WebLogic Server for OCI 運算執行處理的 /etc/hosts 檔案
  • 在次要 OCI VCN 中使用專用 DNS 檢視

使用 /etc/hosts 檔案

主要 Oracle WebLogic Server 所使用的主機名稱會新增至次要 Oracle WebLogic Server 主機的 /etc/hosts 檔案,指向次要 Oracle WebLogic Server 主機的 IP 位址。 當主要和次要 Oracle Cloud Infrastructure (OCI) 網站上的 DNS 伺服器相同,且主要和次要網站使用分開的 DNS 伺服器時,此模式才有效。/etc/hosts 檔案中的項目優先順序高於 DNS 解析,因為這是 /etc/nsswitch.conf 檔案之指令「主機」中立即定義的優先順序。
  1. 編輯每個 WebLogic Server 運算執行處理的 /etc/oci-hostname.conf 檔案,並將特性 PRESERVE_HOSTINFO=3 設定為保留執行處理重新啟動時的 /etc/hosts 項目。
  2. 請使用 hostname --fqdn 命令來識別 OCI WebLogic Server 運算執行處理的完整主機名稱。
  3. 將下列項目新增至中間層運算執行處理的 /etc/hosts 檔案:
    #################################
    # ALIASES on OCI for DR
    #################################
    apphost1_compute_instance_IP  apphost1_fqdn   apphost1_hostname   ALIAS_OF_APPHOST1 
    apphost2_compute_instance_IP  apphost2_fqdn   apphost2_hostname   ALIAS_OF_APPHOST2 
    #################################
    # Frontend name 
    #################################
    IP_OF_LBR  frontend_name_fqdn
    以下是 primary Oracle WebLogic Server 主機的 /etc/hosts 檔案範例:
    # Aliases for DR in primary region
    10.0.2.10 wlsociprefix-wls-0.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0 
    10.0.2.11 wlsociprefix-wls-1.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-1
    
    # Front-end virtual name to primary LBR IP
    111.111.111.111 mywebapps.mycompany.com 

    以下是 secondary OCI WebLogic Server 運算執行處理中 /etc/hosts 檔案的範例。

    注意:

    主要主機名稱會新增為次要節點的別名,前端虛擬名稱則指向次要負載平衡器 IP:

    # Aliases for DR in secondary region
    10.1.2.5 wlsociprefix-wls-0.subnetfra.vcnfra.oraclevcn.com wlsociprefix-wls-0 wlsociprefix-wls-0.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0
    10.1.2.4 wlsociprefix-wls-1. subnetfra.vcnfra.oraclevcn.com wlsociprefix-wls-1 wlsociprefix-wls-1.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0
    
    # Front-end virtual name to secondary LBRIP
    222.222.222.222 mywebapps.example.com
    

使用 OCI 網域名稱系統 (DNS)

主要 Oracle WebLogic Server 主機使用的主機名稱會新增至次要中間層伺服器之 VCN 所使用的 DNS 解析器,指向次要 Oracle WebLogic Server 主機的 IP 位址。 在主要和次要 Oracle Cloud Infrastructure (OCI) 網站上使用個別 DNS 伺服器時,此模式有效。否則,可能會導致命名解析發生衝突。每個網站的伺服器應使用自己的 IP 來解析這些名稱。這個方法的優點在於,您可以將所有項目新增至專用 DNS 視觀表,而不需將它們新增至所有 Oracle WebLogic Server 主機的 /etc/hosts 中。

下列步驟會在次要 VCN 中建立專用檢視,並且解析主要 IP 使用的主機名稱:

  1. 在 OCI 主控台中,前往次要區域並建立專用檢視,以解析 PRIMARY 主機與 SECONDARY IP 位址的名稱。
    1. 依序按一下 網路 (Networking) DNS 管理 (DNS 管理 (Management) 專用檢視 (Private View) 建立專用檢視 (Create Private View)
      例如,您可以命名專用檢視:PRIMARY_HOSTNAMES_PRIVATE_VIEW
    2. 按一下專用檢視中的建立區域
      針對區域名稱,您必須使用主機的完整網域。例如:subnetpri.vcnpri.oraclevcn.com
    3. 將主要主機名稱新增至此區域 (簡短名稱),但使用次要 Oracle WebLogic Server 主機的 IP 位址解析。
    4. 按一下發佈變更
  2. 將專用檢視新增至次要 VCN 解析器。
    1. 按一下 VCN 中的 DNS 解析器資源。
    2. 新增先前建立的 DNS 專用檢視。
      次要 VCN 中的主機將會使用專用檢視,解析主要 Oracle WebLogic Server 主機所使用的主機名稱。
  3. 執行主機名稱的 pingnslookup 來驗證解析 SECONDARY 主機。
    這些 IP 必須使用等效的 SECONDARY IP 來解析。

    注意:

    您可以在 GitHub 中找到 Terraform 程式碼以建立此 OCI 專用檢視和記錄。

設定次要系統

若要將系統設定為次要,您必須將 WebLogic Server 網域組態從主要網域複製到次要的 WebLogic ServerOracle SOA SuiteOracle Fusion Middleware 系統網域。
災害復原 (DR) 設定會取代所有次要網域,但必須保留在本機上的特定目錄和檔案除外。這些目錄會由程序檔明確排除。此外,命令檔會取代資料來源檔案,讓次要使用與主要資料庫相同的資料庫綱要名稱,但現有 jdbc url 指向本機資料庫 (在 DR 設定與待命資料庫期間進行可重新整理複製,以準備切換) 需要的公事包。
  1. 在主要 WebLogic 伺服器管理節點中執行 fmwadb_dr_prim.sh 命令檔。
    命令檔將會透過「動態路由閘道」檢查 WebLogic Server 管理伺服器節點之間的連線,並將網域複製到次要區域中 Oracle Cloud Infrastructure File Storage 掛載的暫存目錄中。

    使用下列參數:

    • REMOTE_ADMIN_NODE_IP

      次要 WebLogic 伺服器管理伺服器節點的 IP 位址。

      必須能夠從此 HOST (主要 Oracle WebLogic Server Administration 伺服器節點) 連線此 IP。

      建議您使用動態路由閘道與主要和次要網站相互連線,以提供專用 IP 位址。

    • REMOTE_SSH_PRIV_KEYFILE

      連線至遠端「Oracle WebLogic 管理」伺服器節點的專用 ssh 金鑰檔。

    • FSS_MOUNT

      用於暫存 WebLogic 伺服器網域組態複本的 OCI 檔案儲存掛載目錄。

    ./fmwadb_dr_prim.sh [REMOTE_ADMIN_NODE_IP] [REMOTE_SSH_PRIV_KEYFILE] [FSS_MOUNT]
    以下是命令和輸出的範例:
    [oracle@soarefr-soa-0 ~]$ ./fmwadbs_dr_prim.sh '10.2.1.104' '/u01/soacs/dbfs/share/KeyWithoutPassPhraseSOAMAA.ppk' /u01/soacs/dbfs/share/
     Checking ssh connectivity to remote WebLogic Administration server node....
        Connectivity to 10.2.1.104 is OK
        REMOTE_ADMIN_HOSTNAME...... soarefr-soa-0.sub09051735411.soaadbvcnstby.oraclevcn.com
     Checking local FSS mount folder readiness........
         The FSS is expected to be mounted in /u01/soacs/dbfs/share
         The folder for the copy of the domain is expected to be /u01/soacs/dbfs/share/domain_config_copy
         Local folder /u01/soacs/dbfs/share/domain_config_copy exists.
     Checking remote FSS mount folder readiness........
         Remote folder 10.2.1.104:/u01/soacs/dbfs/share/domain_config_copy exists.
     
    ----------- Rsyncing from local domain to local FSS folder ---------------
     
    Local rsync output to /u01/soacs/dbfs/share/domain_config_copy/last_primary_update_local_06-10-2022-09-47-50.log ....
    Source and target directories are in sync. ALL GOOD!
     
    ----------- Local rsync complete -----------------------------------------
     
    ----------- Rsyncing from local FSS folder to remote site... --------------
    Remote rsync output to /u01/soacs/dbfs/share/domain_config_copy/last_primary_update_remote_06-10-2022-09-47-50.log ....
    Source and target directories are in sync. ALL GOOD!
  2. fmwadb_dr_prim.sh 程序檔完成執行時,如果尚未停止,請停止次要系統中的所有 WebLogic 伺服器系統和節點管理程式。
  3. 登入次要的 WebLogic Server 管理節點,並執行 fmwadb_dr_stby.sh 程序檔。

    此程序檔會將 WebLogic Server 網域從「OCI 檔案儲存」掛載的暫存目錄複製到次要 WebLogic Server 網域目錄,並取代必要的公事包和密碼項目。要提供的公事包是可重新整理複製項,以便在初始 DR 設定之後驗證次要項目。

    使用下列參數:

    • WALLET_DIR

      解壓縮的 Oracle Autonomous Database 公事包目錄。WebLogic Server 管理伺服器節點。

      此目錄應包含至少 tnsnames.orakeystore.jkstruststore.jks 個檔案。

      如果您使用快照待命方法,這就只是 tnsadmin 資料夾。

    • WALLET_PASSWORD

      Oracle Autonomous Database Serverless OCI UI 下載公事包時所提供的密碼。

      公事包若是啟動設定時由 WebLogic 伺服器Oracle SOA SuiteOracle Fusion Middleware 系統建立的起始公事包。您可以使用下列指令取得該指令:

      Oracle SOA :
      python /opt/scripts/atp_db_util.py generate-atp-wallet-password
      
      Oracle WebLogic Server :
      python3 /opt/scripts/atp_db_util.py generate-atp-wallet-password
    • FSS_MOUNT

      用來暫存 WebLogic 伺服器網域組態的 OCI 檔案儲存掛載目錄。

    ./fmwadb_dr_stby.sh [WALLET_DIR] [WALLET_PASSWORD] [FSS_MOUNT]
    以下是命令執行與輸出範例:
    [oracle@wsladbs2-wls-0 scripts]$ ./fmwadb_dr_stby.sh /u01/data/domains/wsladbs2_domain/config/atpwallet/  7f3e3ed8ee7921fed058b481298eca55 /u01/shared/
    Backing up current domain...
    Backup created at /u01/data/domains/wsladbs2_domain/ /u01/data/domains/wsladbs2_domain_backup_11_42_19-26-10-22
    Rsyncing from FSS  mount to domain dir...
     Syncing the Weblogic Administration server node...
    Rsync complete!
    Switching config to /u01/data/domains/wsladbs2_domain/config/atpwallet/
    The password provided for the wallet is valid. Proceeding...
    Gathering Data Soure information...
    The new wallet is the same as the one being used.
    Will maintain existing wallet dir and just replace password
    Backing up current config...
    Backup created at  /u01/data/domains/wsladbs2_domain/DS_backup_11_42_33-26-10-22
    Replacing values in datasources...
    Replacement complete!
  4. 在次要區域的其他 WebLogic 伺服器受管理伺服器節點中執行 fmwadb_dr_stby.sh 命令檔。
  5. 確定可以使用讀寫模式存取待命資料庫。
    • 如果您使用快照待命方法,請確定待命資料庫已轉換成快照待命資料庫,以便以讀寫模式存取。
    • 如果您使用「遠端可重新整理複製」方法,請確定它與來源中斷連線,以便以讀寫模式存取。
  6. 以次要方式啟動節點管理程式與 Oracle WebLogic Administration Server。存取主控台並啟動網域中的 WebLogic Server 受管理伺服器。
  7. 驗證主要應用程式和部署在次要應用程式中是否也可使用。
  8. 次要關閉 WebLogic 伺服器
  9. 將待命轉換成實體待命,或重新連線可重新整理複製項。
    • 如果您使用快照待命方法,請將待命資料庫轉換成實體待命資料庫。

    • 如果您使用「遠端可重新整理複製項」,請重新連線可重新整理複製項。提醒:可重新整理複製項在 24 小時內不能與主要複本保持中斷連線。

讓系統可切換

使用可重新整理複製項設定並驗證次要系統之後,請將 TNS 別名指向待命 Oracle Autonomous Database Serverless ,讓系統可供切換。

注意:

只有在使用「遠端可重新整理複製」設定並驗證次要系統時,才需要此作業。

從次要資料庫使用者介面下載待命資料庫的公事包。在遠端 DR 案例中避免雙重連線字串 (主要和待命主機),因為它們會造成不必要的重試。

  1. 登入待命資料庫的 Oracle Autonomous Database Serverless 使用者介面。
  2. 按一下 Autonomous Database ,選取 autonomous_db_name,按一下資料庫連線,然後按一下下載公事包
  3. 如果公事包包含指向主要項目的雙字串,請將主要描述的項目自 tnsnames.ora 檔案中移除,讓連線字串只指向次要區域中的本機資料庫。

    以下為 tnsnames.ora 檔案的範例修改:

    soaadb1_high = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_low = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_medium = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_tp = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_tpurgent = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    
    SHOULD BE
    
    soaadb1_high = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) 
    soaadb1_low = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_medium = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tp = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tpurgent = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
  4. 將公事包複製到次要區域之 WebLogic 伺服器「管理伺服器」節點中的暫存資料夾,並導覽至目錄。
    [oracle@wsladbs2-wls-0 scripts]$ cd /tmp
    [oracle@wsladbs2-wls-0 tmp]$ mkdir wallet-stby
    [oracle@wsladbs2-wls-0 tmp]$ cd wallet-stby/
  5. 解壓縮公事包。
    [oracle@wsladbs2-wls-0 wallet-stby]$ unzip /tmp/Wallet_soaadb1-standby.zip
    Archive:  ../Wallet_soaadb1-standby.zip
      inflating: ewallet.pem
      inflating: README
      inflating: cwallet.sso
      inflating: tnsnames.ora
      inflating: truststore.jks
      inflating: ojdbc.properties
      inflating: sqlnet.ora
      inflating: ewallet.p12
      inflating: keystore.jks
  6. 執行 fmwadb_switch_db_conn.sh 命令檔,將中間層保留在次要公事包中並連線字串。

    以下為指向待命 Oracle Autonomous Database Serverless 公事包的命令檔執行範例:

    [oracle@wsladbs2-wls-0 scripts]$ ./fmwadb_switch_db_conn.sh /tmp/wallet-stby/ wallet_password
    The password provided for the wallet is valid. Proceeding...
    Gathering Data Source information...
    The new wallet is the same as the one being used.
    Will maintain existing wallet dir and just replace password
    Backing up current config...
    Backup created at  /u01/data/domains/wsladbs2_domain/DS_backup_10_38_32-27-10-22
    Replacing values in datasources...
    Replacement complete!

設定進行中的組態複製

當系統週期涉及網域檔案系統的頻率更新時,您可以使用命令檔來自動化組態複製處理作業。fmwadb_config_replica.sh 指令碼會定期透過 Oracle Cloud Infrastructure File Storage (OCI File Storage) 暫存目錄複製變更。

每個複寫之後的切換組態都已就緒 (已準備)。

當您使用「遠端可重新整理複製項」時,會假設複寫的組態將「調整」給實體待命資料庫 (不是可重新整理的複製項)。如果您需要使用可重新整理複製項進行驗證或測試,可以將待命網域組態更改為指向可重新整理複製項。

您必須在 WebLogic 伺服器管理節點 ( 在主要節點和待命節點中) 中執行 fmwadb_config_replica.sh 程序檔,才能複製組態。此命令檔通常會排定為 cron 工作,以定期在 Oracle Autonomous Database 系統上複製主要和待命 WebLogic ServerOracle SOA SuiteOracle Fusion Middleware 系統之間的組態。此命令檔會檢查本機資料庫目前的角色,以判斷其是否在主要或待命網站中執行。

  • 在 PRIMARY 網站中執行指令碼時,會將網域組態從主要網域複製到本機協助資料夾 (FSS),然後複製到次要網站協助資料夾 (透過 rsync)。
  • 在 STANDBY 網站中執行指令碼時,會將網域組態從次要協助資料夾 (OCI File Storage) 複製到次要網域,並進行需要的資料來源取代以搭配本機資料庫使用。

基於安全理由,您必須從 OCI 主控台收集不同的參數,並加密密碼以存取 Oracle Autonomous Database 公事包。

以下是程序檔中使用的變數描述,以及如何取得這些變數:

  • REMOTE_WLSADMIN_NODE_IP

    對等和遠端 WebLogic 伺服器管理伺服器節點的 IP。

    這是對等網站中 WebLogic Server Administration Server 中節點主機的 IP。必須可以從本機節點連線。建議您使用動態路由閘道連線至節點的遠端專用 IP。

  • REMOTE_SSH_PRIV_KEYFILE

    連線至遠端「Oracle WebLogic 管理」伺服器節點的專用 SSH 金鑰檔。

  • TENANCY_OCID

    Oracle Autonomous Database 所在租用戶的 OCID。您可以從 Oracle Cloud Infrastructure (OCI) 使用者介面 (UI) 取得 OCID。

  • USER_OCID

    擁有自治式資料庫執行處理的使用者 OCID。您可以在 OCI UI 中找到 OCID。

  • PRIVATE_KEY

    此使用者的私密 PEM 格式金鑰路徑。

  • LOCAL_ADB_OCID

    正在檢查之 Oracle Autonomous Database 的 OCID。您可以在 OCI 主控台的 Oracle Autonomous Database 畫面中找到 OCID。

  • WALLET_DIR

    本機 Oracle Autonomous Database 公事包的目錄 (解壓縮從 OCI 主控台下載的公事包)。此目錄應該至少包含 tnsnames.orakeystore.jkstruststore.jks 檔案。當您使用「快照待命」方法時,此為 tnsadmin 資料夾

  • ENC_WALLET_PASSWORD

    Oracle Autonomous Database OCI UI 下載公事包時所提供之密碼的 WLS ENCRYPTED 拷貝。

    如果公事包是 WebLogic ServerOracle SOA SuiteOracle Fusion Middleware 在啟動設定 WebLogic Server 時所建立的起始公事包,則您可以使用下列命令來取得密碼:

    若為 WebLogic:
    [oracle@wsladbs2-wls-1 ~]$ python3 /opt/scripts/atp_db_util.py generate-atp-wallet-password
    SOA:
    [oracle@soarefr-soa-0 ~]$ python /opt/scripts/atp_db_util.py generate-atp-wallet-password
    若要加密密碼,無論是 OCI 主控台提供的密碼,還是佈建時使用的密碼,您都可以使用 fmw_enc_pwd.sh 命令檔。
    ./fmw_enc_pwd.sh UNENC_WALLET_PASSWORD

    將取得的字串用於 ENC_WALLET_PASSWORD 變數。

  • FSS_MOUNT

    將用於暫存 WebLogic 伺服器網域組態的「OCI 檔案儲存掛載」目錄。

收集變數資訊之後,請執行下列步驟來複製和自訂環境的命令檔:

  1. 基於安全理由,加密存取 Oracle Autonomous Database 公事包的密碼。
  2. 將指令碼複製到主要網站,然後編輯完成主要網站必要變數的指令碼。
    請參閱上面的說明,瞭解指令檔中使用的變數。
  3. 將命令檔複製到待命網站,然後編輯填入待命網站所需變數的命令檔。
    請參閱上面的說明,瞭解指令檔中使用的變數。
  4. 自訂 EACH 區域之後 (您必須提供每個區域的 LOCAL 資料庫 OCID),請執行下列作業:
    1. 在主要主機的「Oracle WebLogic 管理」主機中執行命令檔。
    2. 在次要區域中的「Oracle WebLogic 管理」主機中執行命令檔。
  5. 將命令檔新增至每個區域的 cron 工作。