設定環境

在 OCI 中設定次要系統,並將其設定為主要內部部署系統的待命系統。

程序檔可以自動化某些步驟。這些指令碼不會自動執行完整的設定,因此您必須完成任務,並在參考指令碼時使用指令碼。

請前往下載代碼以取得連結,以下載此文件中所參考的指令碼。

準備主要資料中心中的 WebLogic 資料來源

您可以在災害復原拓樸 (例如雙字串、不同的連線字串和 TNS 別名) 中,將 WebLogic 資料來源的資料庫連線字串使用幾種方法。請參閱 Oracle Fusion Middleware Disaster Recovery Guide,瞭解不同方法之間的詳細資訊和比較。我們將使用 TNS 別名,因為它需要進行一次性設定。使用 TNS 別名表示每次將 WebLogic 組態複製到次要組態時,都不需要更改它。支援在 GridLink 資料來源中使用 TNS 別名,以啟動 FMW 版本 12.2.1.3。

TNS 別名在主要和次要名稱相同;因此,資料來源會使用相同的資料庫連線字串。它會以未複製到待命資料庫的 tnsnames.ora 檔案解析,因此每個網站都可以有不同的 tnsnames.ora 內容。您可以將它與 WebLogic 網域配置分開放置,放在未在網站之間複製的檔案系統中。或者,假設它是組態的一部分,您也可以將它儲存在網域組態下的資料夾中。在此情況下,請確定您在將網域組態從主要資料庫複製到待命資料庫時,將該資料夾排除。每個網站都會在每個網站以適當的連線字串解析 TNS 別名,且只指向本機資料庫。例如:

Connect string in data sources in primary site:
jdbc:oracle:thin:@soapdb

The tnsnames.ora file in primary contains:
SOAPDB =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=soapdb.example.com))
)

Connect string in data sources in secondary site:
jdbc:oracle:thin:@soapdb
The tnsnames.ora file in secondary: 
SOAPDB =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=stby-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=soapdb.example.com))
)

以下是使用 TNS 別名的優點:

  • 由於 WebLogic 網域 config 中使用相同的資料庫連線字串,因此在將 config 從主要資料庫複製到待命資料庫之後,您不需要更改 WebLogic 組態。
  • 由於每個網站都只指向本機資料庫,因此從中間層到遠端資料庫的交叉連線並沒有風險。

如果您尚未在主要 SOA 系統中使用此方法,請執行下列步驟在資料來源中使用 TNS 別名。

  1. 在主要中間層主機中建立 tns 資料夾:

    此資料夾必須可供 Oracle 使用者讀取,並置於未在網站之間複製的檔案系統中。

    如果 tns 資料夾是組態的一部分,您也可以在所有伺服器共用的組態資料夾底下建立該資料夾。但在此情況下,請確定在容錯移轉或切換之後,將網域組態從主要資料庫複製到待命資料庫或更新待命系統中的 tnsnames.ora 時,排除 tns 資料夾,以指向次要資料庫。

    [oracle@host3 ~]$ mkdir -p /home/oracle/tnsnames_dir
    [oracle@host4 ~]$ mkdir -p /home/oracle/tnsnames_dir
  2. 在目錄中建立一個將用於資料來源的 TNS 別名 tnsnames.ora 檔案,如範例所示。
    Oracle 建議在單一行中輸入字串。
    SOAPDB = 
    (DESCRIPTION=
      (ADDRESS_LIST=
        (LOAD_BALANCE=ON)
        (ADDRESS=(PROTOCOL=TCP)(HOST=dbhost-scan.example.com)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME= soapdb.example.com))
    )
  3. 指定指向 tnsnames.ora 檔案之目錄位置的 oracle.net.tns_admin 特性。使用下列方法之一:
    • 選項 1:將特性設為資料來源連線特性。Oracle 建議使用此方法。

      1. 在資料來源組態中指定 oracle.net.tns_admin=tns_directory 特性。

        若要在 WebLogic 管理主控台中指定此特性,請移至服務,按一下資料來源,從清單中選取資料來源,按一下連線集區,然後將其新增至「特性」文字方塊。為每個資料來源重複此步驟。

        例如:oracle.net.tns_admin=/home/oracle/tnsnames_dir

      2. 在 OPSS 安全儲存檔案 jps-config-jse.xmljps-config.xm (位於 $ASERVER_HOME/config/fmwconfig 資料夾中) 中指定此特性。

        若要修改這些 jps 檔案,請在 jdbc.url 特性之後編輯它們並新增 oracle.net.tns_admin 特性。例如,

        …
        <property name="jdbc.url" value="jdbc:oracle:thin:@soaedg"/>
        <property name="oracle.net.tns_admin" value="tns_directory"/>
        …

        備註:

        此特性會套用至指定的特定檔案 (資料來源、jps 檔案)。
    • 選項 2:將特性設為 java 系統特性。

      1. 指定 -Doracle.net.tns_admin=tns_directory 系統特性,其中 tns_directorytnsnames.ora 檔案的目錄位置。

        如果要將其設定為伺服器的 java 特性,請編輯下列檔案:
        • $ASERVER_HOME/bin/setUserOverrides.sh and
        • $MSERVER_HOME/bin/setUserOverrides.sh (未共用此檔案。因此,您應該編輯所有 SOA 中間層主機中的檔案。)
      2. 將下列內容加入至下列檔案:

        # For using tns alias in the datasources 
        export EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Doracle.net.tns_admin=/home/oracle/tnsnames_dir

        備註:

        此特性適用於 Oracle WebLogic Server 中的所有資料來源和 jps 檔案。執行部分 WLST 命令和「組態精靈」之前,此方法需要您在環境中設定特性。
        • 執行 WLST 之前,請先在 WLST_PROPERTIES 環境變數中設定特性。
        • 執行「組態精靈」之前,請先新增特性至 config_internal.sh 程序檔的 JVM_ARGS 環境變數。
      3. 選項 3:設定 jdbc URL 中的特性。

        在資料來源和 jps 檔案中指定 tnsnames.ora 檔案的位置作為連線字串的一部分:

        jdbc:oracle:thin:@alias?TNS_ADMIN=tns_directory

      注意:

      此特性會套用至指定的特定檔案 (資料來源、jps 檔案)。

      您可以將此方法與 JDBC 驅動程式 18.3 和更新版本搭配使用。這適用於 Fusion Middleware 12.2.1.4 (使用 JDBC 驅動程式 19.3) 及更新版本。

  4. 使用資料來源定義 URL 中的別名,以別名取代連線字串。
    jdbc:oracle:thin:@soapdb
    修改下列檔案:
    • 在資料來源檔案中,位於 $ASERVER_HOME/config/jdbc/
    • jps-config.xmljps-config-jse.xml 檔案中,位於 $ASERVER_HOME/config/fmwconfig/
    您可以使用 Oracle WebLogic Server 管理主控台來修改資料來源,但必須手動編輯 jps-config xml 檔案。您可以使用 update_dbconnect.sh 程序檔,在所有提及的檔案中執行取代。

    請前往下載代碼以取得下載指令碼的連結。

  5. 重新啟動網域中的每個 Oracle WebLogic Server
    1. 停止主要網域 (管理伺服器和受管理伺服器) 中的所有 WebLogic 伺服器。
    2. 在主要網域中啟動管理伺服器。
    3. 執行「管理伺服器」之後,請啟動「受管理伺服器」。
    4. 確認資料庫已正確建立連線。
  6. 其他最佳作法:當您使用 Oracle Database 12c 或更新版本時,GridLink 資料來源中不需要 Oracle Notification Service (ONS) 主機和連接埠組態值。
    用戶端驅動程式會自動從資料庫取得 Oracle Notification Service 清單。Oracle 建議使用此功能,而不是在每個資料來源的 ONS 組態中提供掃描位址或 Oracle RAC 節點清單。確定已啟用 FAN,而且每個資料來源中的 ONS nodes 特性是空的。
    1. 開啟 Oracle WebLogic Server 管理主控台
    2. 依序前往服務資料來源。依序選取資料來源名稱、組態ONS
    3. 確定 ONS 節點清單是空的。

設定網路

主要企業內部部署網路與次要 Oracle Cloud Infrastructure (OCI) 網路之間必須進行連線。Oracle 建議使用 Oracle Cloud Infrastructure FastConnect ,您可以透過專用、專用、高頻寬的連線直接連線到您的 OCI 虛擬雲端網路。您可以根據資料量來選擇適當的連接埠速度。或者,您也可以使用「網站至網站 VPN」,但具備較低的頻寬和可變延遲、抖動和成本。
  1. 在 OCI 區間中建立 VCN 和子網路,如判斷 OCI 上所需的資源中所定義。設定 Oracle Cloud Infrastructure FastConnect (或網站至網站 VPN) 以允許您內部部署網路和 VCN 之間進行通訊。如需詳細資訊,請參閱 FastConnectSite-to-Site VPN
  2. 在 OCI 和內部部署防火牆中建立必要的網路規則,並設定來源、目標、協定及連接埠,如表格所示。

    假設每個子網路內都已啟用所有流量,

    如需網路安全規則的相關資訊,請參閱 OCI 文件

    來源 目標 協定與連接埠 使用狀況
    內部部署網路 OCI 中間層子網路 SSH (連接埠 22) 設定和生命週期
    內部部署網路 OCI Web 層子網路 SSH (連接埠 22) 設定與生命週期 (在 OCI 中使用 Oracle HTTP Server 時)
    內部部署網路 OCI 資料庫層子網路 SSH (連接埠 22) 設定和生命週期
    內部部署資料庫主機 OCI 資料庫層子網路 SQLNET (連接埠 1521) 若為 Oracle Data Guard redo transport
    內部部署網路 OCI Web 層子網路 HTTPS/HTTP (443、80、7001、8888) 存取 Oracle SOA Suite 服務與管理主控台
    內部部署網路 OCI 中間層子網路 HTTP (7001、7010、8001、8011、8021、9001) 直接檢查 Oracle WebLogic Server
    OCI Web 層子網路 OCI 中間層子網路 HTTP (7001、7010、8001、8011、8021、9001) 有關從 Web 層元件 (OCI Load Balancer,Oracle HTTP Server) 到 WebLogic 伺服器的連線
    OCI 中間層子網路 OCI 資料庫層子網路 Sqlnet (1521) , Ons (6200) WebLogic 伺服器到資料庫的連線
    OCI 中間層子網路 OCI fss 層子網路 如需特定資訊,請參閱設定檔案儲存的 VCN 安全規則 掛載 OCI 檔案儲存檔案系統匯出 (使用 NFS)。
    OCI 中間層子網路 內部部署中間層主機 SSH (連接埠 22) 若為 rsync
    OCI 資料庫層子網路 內部部署資料庫主機 Sqlnet (1521) 若為 Oracle Data Guard redo transport
    OCI 中間層子網路 OCI Web 層子網路 HTTPS (443) 從應用程式到前端的回呼

    注意:

    您可以在下載程式碼中找到 terraform 程式碼,用於建立 VCN、子網路和安全規則。

設定 Oracle Data Guard

Oracle Cloud Infrastructure (OCI) 中的主要內部部署資料庫和待命資料庫之間設定 Oracle Data Guard
  1. 依照 Hybrid Data Guard to Oracle Cloud Infrastructure 中的說明,在主要內部部署資料庫與 OCI 中待命資料庫之間設定 Oracle Data Guard。
    為了協助設定 Oracle Data Guard ,您可以在 GitHub 中使用命令檔,並在下載程式碼中參照。
  2. 使用 Oracle Data Guard 命令行介面 (DGMGRL),確認 Oracle Data Guard 設定是否正確。
    DGMGRL> show configuration verbose
  3. 完成設定 Oracle Data Guard (步驟 2) 之後,請在 OCI 資料庫系統中建立與主要內部部署系統中所使用的相同資料庫服務。以 PRIMARY 角色設定服務並使用 SNAPSHOT_STANDBY 角色。
    使用這兩個角色設定服務可讓 DG Broker 在資料庫轉換為快照待命時,自動啟動服務 (當您要驗證次要系統而不執行完整切換時,需要該服務)。
    例如,如果主要資料庫使用資料庫服務 soapdb.example.com 存取 PDB,則在次要 OCI 資料庫系統中建立相同的服務。
    srvctl add service -db $ORACLE_UNQNAME -service soapdb.example.com -preferred ORCL1,ORCL2 -pdb PDB1 -role "PRIMARY,SNAPSHOT_STANDBY"
    srvctl modify service -db $ORACLE_UNQNAME -service soapdb.example.com -rlbgoal SERVICE_TIME -clbgoal SHORT
    srvctl config service -db $ORACLE_UNQNAME -service soapdb.example.com
  4. 如果主要資料庫中的服務僅以 PRIMARY 角色 (此為預設值) 建立,您可以修改它來新增快照待命角色。
    srvctl modify service -db $ORACLE_UNQNAME -s soapdb.example.com -role "PRIMARY,SNAPSHOT_STANDBY"
  5. 複查主要資料庫中的 Oracle 復原管理程式 (RMAN) 原則以避免在套用至待命資料庫之前刪除存檔日誌。
    確定在主要和待命資料庫中,archivelog 刪除 RMAN 原則中有 applied on all standby 子句。

關於資料庫版本與修正程式層次

內部部署資料庫中的 Oracle 本位目錄和 OCI 上的待命資料庫必須是相同版本和相同修正程式層次。您可以用下列方式來達到此目的:

  • 在 OCI 的資料庫系統佈建期間選擇資料庫軟體映像檔時,請選取顯示所有版本,並選取與內部部署資料庫相同的資料庫版本和修正程式集層級。
  • 如果 OCI 中已不再提供來源資料庫之 Oracle 本位目錄版本以進行佈建,您必須將來源環境修正至與雲端環境資料庫本位目錄相同的資料庫修正程式層次。

以下案例是實際參考範例。內部部署資料庫本位目錄為 19.6,OCI 資料庫本位目錄為 19.11。

  1. 執行 $ORACLE_HOME/OPatch/opatch lspatches 命令以識別「來源」和「目標」環境中安裝的修正程式。
    $ORACLE_HOME/OPatch/opatch lspatches

    以下是此範例的輸出:

    內部部署的資料庫 Oracle 本位目錄修正程式 OCI 上的資料庫 Oracle HOME 修正程式

    30676209;LNX64-20.1-RAC Asm Hit ORA-07445 發生核心傾印 [Ksxposdifqry()+556]

    30613937;Ipcor Topo Service Fix Ip Type Bug (Ip 類型錯誤) 選擇

    30484981;Ojvm 版本更新:19.6.0.0.200114 (30484981)

    30489227;Ocw 版本更新 19.6.0.0.0 (30489227)

    30557433;資料庫版本更新:19.6.0.0.200114 (30557433)

    29780459;增加 _lm_res_hash_bucket,and Back Out Changes to the Bug 29416368 修正

    30310195;在進行 Gsmadmin_internal.shard_ts 分區 STS_CHUNKS 時報告停用限制條件

    32327201;Rdbms - DSTV36 更新 - TZDATA2020E

    31335037;Rdbms - DSTV35 更新 - TZDATA2020A

    30432118;19.0.0.0.0 之前的合併要求錯誤 28852325 2997937

    31732095;將 19C Database Oracle Home 中的 Perl 更新為 V5.32

    32490416;JDK 搭售品修正程式 19.0.0.0.210420

    32399816;Ojvm 版本更新:19.11.0.0.210420 (32399816)

    32579761;Ocw 版本更新 19.11.0.0.0 (32579761)

    32545013;資料庫版本更新:19.11.0.0.210420 (32545013)

  2. 分析現有的修補程式:判斷哪些修補程式為一次性修補程式、複查它們是否已在新的 RU 修補程式中修復,或是否需要新的重疊修補程式、決定必須解除安裝的修補程式、找出 RU 的適當修補程式檔案等等。
  3. 請務必根據分析,先解除安裝已在新 RU 中修正的單次修正程式,再安裝 RU 更新 (否則將會造成衝突)。在此範例中,修正程式在 19.11 中修正,因此必須在安裝 19.11 RU 之前倒回修正程式。
    30676209;LNX64-20.1-RAC  ASM HIT ORA-07445  EXCEPTION ENCOUNTERED  CORE DUMP [KSXPOSDIFQRY()+556]
    30613937;IPCOR TOPO SERVICE  FIX IP TYPE BUG IN IP SELECTION
    
  4. 尋找、下載及安裝 RU 修補程式。在此範例中,19.11 RU 修補程式位於組合修補程式 32578973:COMBO OF OJVM RU 元件 19.11.0.0.210420 + GI RU 19.11.0.0.210420,如下所示:
    32399816;OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816)  
    32579761;OCW RELEASE UPDATE 19.11.0.0.0 (32579761)            
    32545013;Database Release Update : 19.11.0.0.210420 (32545013)
  5. 尋找、下載以及安裝 OCI 資料庫本位目錄在 RU 上線的覆疊、單次和其他補丁。例如:
    29780459;INCREASE _LM_RES_HASH_BUCKET AND BACK OUT CHANGES FROM THE BUG 29416368 FIX
    30310195;DBSAT REPORTED DISABLED CONSTRAINTS FOR SHARDING STS_CHUNKS ON GSMADMIN_INTERNAL.SHARD_TS
    30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 (DSTV33 update) 29997937 (DSTV34 update)
    31335037;RDBMS - DSTV35 UPDATE - TZDATA2020A
    32327201;RDBMS - DSTV36 UPDATE - TZDATA2020E
    32490416;JDK BUNDLE PATCH 19.0.0.0.210420
    31732095;UPDATE PERL IN 19C DATABASE ORACLE HOME TO V5.32
  6. 針對 GI 修正程式執行類似分析。

注意:

此範例僅包含「RDBMS Oracle 本位目錄」。將內部部署 GI 安裝修正至與次要相同的層次,不必嚴格:
  • Oracle Data Guard 的角度來看,主要和待命資料庫中必須具有相同的 GI 版本:Oracle Data Guard 與資料庫底下的任何項目完全獨立,因此您可以在不同的網站執行不同版本的作業系統、Oracle Clusterware、硬體或儲存軟體,而且不會限制版本或時間。(文件 ID 1265700.1)
  • 無論 Oracle Data Guard 為何,RAC 資料庫的 GI 和 RDBMS 版本都不需要相同:從 18c 開始,Oracle Grid Infrastructure (GI) /Clusterware (CRS) 版本在任何時候都必須等於或最高版本,直到可能的組合中的第一個數字為止。例如:Grid Infrastructure 可以位於 18.1.0.0,而 Database 可以位於 18.3.0.0。(文件 ID 33773737.1)

在資料庫本位目錄的相同層次修正 GI 是最佳做法。您必須對資料庫本位目錄修正成較新的版本更新 (RU) 之後,資料庫和 GI 一般有許多修正程式,您也可以同時對兩個本位目錄使用 OPatchAuto