配置 DR 拓扑

设置灾难恢复 (Disaster Recovery,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 返回特定数据源属性的值。

为虚拟前端准备主中间层

如果尚未为主中间层配置虚拟前端名称,请执行这些操作以准备进行灾难恢复 (Disaster Recovery,DR) 配置。

  1. 将虚拟前端名称和 IP 添加到所有主中间层主机中的 /etc/hosts 文件中。
    每个站点都应始终将前端名称解析为其本地负载平衡器,而不考虑通过域名系统 (Domain Name System,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. 依次转至配置HTTP
    4. 将 Fronted 主机设置为前端 FQDN。
      例如,mywebapps.example.com。
    5. 确保为 HTTP 和 HTTPS 的前端端口正确配置了值。
    6. 单击保存,然后单击激活
  3. 重新启动集群以实施更改。

修改主数据源和 JPS 配置以使用 TNS 别名

在 Java 数据库连接 (JDBC) URL 中使用透明网络基元 (Transparent Network Substrate,TNS) 别名有助于通过使用远程可刷新克隆在主数据库和备用数据库之间移动来重新配置 Oracle WebLogic Server for Oracle Cloud Infrastructure 数据源。

注:

随发行版 23.1.1(2023 年 2 月)或更高版本预配的 Oracle SOA Suite on Marketplace 实例配置有现成的 TNS 别名方法。在这种情况下,可以跳过此任务。

使用 TNS 别名要求数据源和 jps 文件在 Oracle Fusion Middleware 配置文件中包含变量 oracle.net.tns_admin

  1. 使用命令 grepOracle 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 下。

      注:

      如果 wallet 不位于 DOMAIN_HOME/config 目录下,则 Oracle WebLogic Server 基础结构不会自动将对 wallet 目录内容的更改复制到其他节点。在这些情况下,必须更改 wallet 目录(并更新所需的数据源配置),或在更新时手动将其复制到其他节点。
    • 在其他配置中,可以将目录放置在共享存储上。
    在所有情况下,WebLogic Server 域的所有不同成员都必须能够访问相同的 tns_admin 目录。对于在 Oracle Autonomous Database 中创建的不同服务,此目录将包含具有不同别名的 tnsnames.ora 文件。

    以下是 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)))

    tnsnames.ora 文件的修改由 WLS 数据源动态使用。这意味着您可以更改 tnsnames.ora 文件(例如指向其他服务),而无需重新启动数据源。

  2. 要修改标准数据源配置以在使用 Autonomous Database 的 Oracle SOA Suite on MarketplaceOracle 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 MarketplaceOracle Fusion Middleware 的内部别名一样。
    使用 Oracle Autonomous Database 预配 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 时,数据库 wallet 的配置将包括在数据源中(信任存储位置、密钥库位置等)。fmw_change_to_tns_alias.sh 脚本不会修改这些参数,无论是否使用 TNS 别名,这些参数都有效。wallet 目录在预配期间由 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 创建,并且已包含 tnsnames.ora 文件。您还可以从 OCI 中的自治数据库 UI 获取 Oracle Autonomous Database wallet。

    注:

    预配 Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace 使用的 Oracle Autonomous Database wallet 后将下载到管理服务器节点。您可以通过从 Oracle Autonomous Database UI 重新下载主系统和备用系统的 wallet,并在 $DOMAIN_HOME/config/jdbc 目录和 $DOMAIN_HOME/config/fmwconfig 下的 jps config 文件中更新 wallet 密码来更新其 wallet。对主数据库、备用数据库和可刷新的克隆钱包使用相同的密码将有助于处理两个站点中的数据源配置;但是下面提供的脚本将能够处理不同的密码。使用 fmwadb_switch_db_conn.sh 脚本使用新 wallet 更新系统。

    预配主系统时,您选择了(在预配屏幕中)Oracle Autonomous Database 服务级别之一。运行具有相同服务级别的 fmw_change_to_tns_alias.sh 脚本。Oracle Autonomous Database 中数据库服务的服务级别为:低、中、高 TP、tpurgent。以下是将 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 和子网

如果您尚未执行此操作,请在备用区域中创建一个 CIDR 与主区域的 CIDR 不冲突的 VCN。例如,如果主 VCN 使用 10.1.0.0/16,则辅助 VCN 可以使用 10.2.0.0/16。

  1. 在辅助区域中创建 VCN 和子网。
    您可以创建一个云堆栈来预配一组相关的云服务。
  2. 确保安全列表允许在层之间进行适当的通信。

    验证以下通信:

    • 从 OCI 负载平衡器到 WebLogic 服务器
    • 从 WebLogic 服务器到数据库
    • 从 WebLogic 服务器到共享存储

    此外,还包含所需的规则,以允许在创建管理服务器节点后通过动态路由网关 (Dynamic Routing Gateway,DRG) 进行通信。

在主 VCN 和辅助 VCN 之间配置 DRG

灾难恢复设置要求主节点和辅助 Oracle WebLogic Server 管理节点相互通信以通过 Oracle Cloud Infrastructure File Storage 副本接收域配置。为此,必须在中间层 VCN 之间创建动态路由网关 (Dynamic Routing Gateway,DRG)。

  1. 在中间层 VCN 之间创建 DRG。
  2. 验证新 DRG 是否显示在所选区间或区域的动态路由网关页上。
    DR 设置脚本将验证是否可以建立所需的连接。
  3. 在主 VCN 和备用 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 Details(自治数据库详细信息)页面的“Resources(资源)”下,单击 Disaster Recovery(灾难恢复),然后单击 Add peer database(添加对等数据库)
    3. 使用先前创建的 VCN 和专用子网。
  2. 适用于 Oracle Autonomous Database on Dedicated Exadata Infrastructure
    1. 在 OCI 控制台中,导航到自治容器数据库详细信息页面,然后在“资源”部分中选择 Autonomous Data Guard 关联资源。
    2. 单击启用 Autonomous Data Guard
    3. 输入对等自治 VM 集群信息、保护模式和自动故障转移选项。输入所有必要信息后,单击启用 Autonomous Data Guard
      在此工作流中,将创建一个新的备用自治容器数据库,其中包含所选自治 VM 集群中的所有备用自治数据库。

为 DR 设置准备备用 Autonomous Database

此任务取决于您是使用“快照备用”还是“远程可刷新克隆”方法。

有关“快照备用数据库”方法,请参见 Convert the Standby to a Snapshot Standby

有关远程可刷新克隆方法,请参见 Create a Remote Refreshable Clone in the Secondary Region

将备用数据库转换为快照备用数据库

使用快照备用方法,将备用自治数据库转换为快照备用数据库。

  1. 从 Oracle Cloud Infrastructure 控制台的左侧导航菜单中,单击 Autonomous Database
  2. 在辅助区域中,选择备用 Autonomous Database。
  3. 更多操作下拉列表中,单击转换为快照备用数据库
  4. 如果使用的是专用基础结构,请选择使用主数据库服务

注:

如果在 7 天内未将 Oracle 专用 Exadata 基础结构中的快照备用数据库转换为物理备用,则快照备用数据库将自动转换为物理备用。

如果 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 Cloud Infrastructure (OCI) 服务,该服务使用指向辅助数据库(用于快照备用方法)或可刷新克隆(用于远程可刷新克隆方法)的 Oracle Fusion Middleware(系统)。

  1. 按照标准子网 CIDR、安全规则和实例前缀建议进行灾难恢复。

    堆栈名称可以不同,但必须使用与主位置中使用的 EXACT 相同的资源名称前缀。Oracle 建议在主位置和备用位置使用完全相同的容量和计算配置来实现理想的故障转移/切换行为。

    确保在辅助位置预配的 Oracle WebLogic Server for OCI 版本和补丁程序级别与在主站点中运行的版本和补丁程序级别匹配。

    如果需要更多详细信息,请参阅Oracle WebLogic Server for Oracle Cloud Infrastructure Disaster Recovery 的“Provision WLS for OCI in Secondary Site”部分或Oracle Cloud Infrastructure Marketplace Disaster Recovery 的“Provision SOA Suite on Marketplace in 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 文件中使用透明网络基元 (Transparent Network Substrate,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. 如果有双重条目,请通过删除远程数据库的地址将其修改为仅指向本地 Autonomous Database

    辅助数据库中的 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)))(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 文件(在预配期间创建的 wallet 目录中)将包含以下别名: 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)))

    下面是 Oracle Fusion Middleware 配置的示例 tnsnames.ora 文件,其中 Oracle Autonomous Database Serverless 位于可刷新克隆辅助中。

    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)))

    由于这是一次性操作,因此更改可刷新克隆的别名的最简单方法是编辑文件。您可以修改正在使用的服务级别或所有服务级别的别名以保持一致。

    注:

    每次使用新的可刷新克隆进行测试或验证并使用新的 wallet 时,都必须执行此操作。

    以下是 Oracle Autonomous Database Serverlesssecondary with Refreshable Clone using the Primary's alias 中 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 文件中。

在主中间层和备用中层更新主机名别名和前端地址

完成 DR 设置后,辅助域中的 WebLogic 域配置将是主 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 地址。 当 DNS 服务器在主站点和辅助 Oracle Cloud Infrastructure (OCI) 站点上相同,在主站点和辅助站点中使用分离的 DNS 服务器时,此模式有效。/etc/hosts 文件中的条目优先于 DNS 解析,因为这是 /etc/nsswitch.conf 文件的指令“主机”中现成定义的优先级。
  1. 编辑每个 WebLogic 服务器计算实例的 /etc/oci-hostname.conf 文件,并将属性 PRESERVE_HOSTINFO=3 设置为在实例重新引导期间保留 /etc/hosts 条目。
  2. 使用命令 hostname --fqdn 标识 OCI WebLogic 服务器计算实例的完整主机名。
  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 控制台中,转至辅助区域并创建专用视图,以解析主主机的名称(使用辅助 IP 地址)。
    1. 单击网络DNS 管理专用视图,然后单击创建专用视图
      例如,可以指定专用视图的名称: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 主机。
    它们必须使用等效的 SECONDARY IP 来解决。

    注:

    您可以在 GitHub 中找到用于创建此 OCI 专用视图和记录的 Terraform 代码。

配置辅助系统

要将系统配置为辅助系统,必须将 WebLogic 服务器域配置从主域复制到辅助 WebLogic 服务器Oracle SOA SuiteOracle Fusion Middleware 系统域。
灾难恢复 (Disaster Recovery,DR) 设置将替换所有辅助域,但必须保持本地有效的特定目录和文件除外。这些目录由脚本显式排除。此外,脚本会替换数据源文件,以便辅助数据库使用与主数据库相同的数据库方案名称,但使用指向本地数据库的现有 jdbc url(DR 设置期间可刷新克隆,为切换做准备而备用)。
  1. 在主数据库的 WebLogic 服务器管理节点中运行 fmwadb_dr_prim.sh 脚本。
    该脚本将通过动态路由网关检查 WebLogic Server 管理服务器节点之间的连接,并将域复制到辅助区域中的 Oracle Cloud Infrastructure File Storage 挂载中的暂存目录。

    使用以下参数:

    • REMOTE_ADMIN_NODE_IP

      辅助 WebLogic Server 管理服务器节点的 IP 地址。

      必须可以从此 HOST(主 Oracle WebLogic Server 管理服务器节点)访问此 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 Server 系统和节点管理器。
  3. 登录到辅助服务器的 WebLogic 服务器管理节点并运行 fmwadb_dr_stby.sh 脚本。

    该脚本将 WebLogic Server 域从 OCI 文件存储挂载中的暂存目录复制到辅助 WebLogic Server 域目录,并替换所需的 wallet 和密码条目。要提供的 wallet 是可刷新的克隆,以便在初始 DR 设置后验证辅助节点。

    使用以下参数:

    • WALLET_DIR

      解压缩的 Oracle Autonomous Database wallet 的目录。WebLogic 服务器管理服务器节点。

      此目录应至少包含 tnsnames.orakeystore.jkstruststore.jks 文件。

      如果使用快照备用方法,则这只是 tnsadmin 文件夹。

    • WALLET_PASSWORD

      Oracle Autonomous Database Serverless OCI UI 下载 wallet 时提供的密码。

      如果 wallet 是预配时由 WebLogic 服务器Oracle SOA SuiteOracle Fusion Middleware 系统创建的初始 wallet。可以使用以下命令获取该命令:

      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 服务器托管服务器。
  7. 验证主应用程序和部署在辅助应用程序中是否也可用。
  8. 关闭辅助服务器中的 WebLogic 服务器
  9. 将备用数据库转换为物理备用数据库或重新连接可刷新的克隆。
    • 如果使用快照备用方法,则将备用数据库转换为物理备用数据库。

    • 如果您使用的是远程可刷新克隆,请重新连接可刷新的克隆。提醒:可刷新的克隆在 24 小时内无法与主克隆保持断开连接。

使系统可供切换

使用可刷新的克隆配置和验证辅助系统后,通过将 TNS 别名指向备用 Oracle Autonomous Database Serverless ,使系统准备好进行切换。

注:

仅当使用远程可刷新克隆配置和验证辅助系统时,才需要执行此任务。

从辅助数据库用户界面下载备用数据库的 wallet。避免在远程 DR 情况下使用双连接字符串(主主机和备用主机),因为它们会导致不必要的重试。

  1. 登录备用数据库的 Oracle Autonomous Database Serverless 用户界面。
  2. 单击 Autonomous Database(自治数据库),选择 autonomous_db_name,单击 DB Connection(数据库连接),然后单击 Download Wallet(下载 Wallet)
  3. 如果 wallet 包含指向主数据库的双字符串,则从 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. 将 wallet 复制到辅助区域的 WebLogic Server 管理服务器节点中的临时文件夹并导航到该目录。
    [oracle@wsladbs2-wls-0 scripts]$ cd /tmp
    [oracle@wsladbs2-wls-0 tmp]$ mkdir wallet-stby
    [oracle@wsladbs2-wls-0 tmp]$ cd wallet-stby/
  5. 解压缩 wallet。
    [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 脚本以使中间层准备好使用辅助 wallet 和连接字符串。

    下面是指向备用 Oracle Autonomous Database Serverless wallet 的脚本运行示例:

    [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 文件存储)阶段目录复制更改。

每次复制后,配置都准备就绪(预先准备)进行切换。

使用远程可刷新克隆时,假定复制的配置将“调整”用于物理备用(不可刷新克隆)。如果需要使用可刷新的克隆进行验证或测试,则可以改为更改备用域配置以指向可刷新的克隆。

必须在 WebLogic 服务器管理节点(在主节点和备用节点中)中运行 fmwadb_config_replica.sh 脚本才能复制配置。通常,此脚本使用 cron 作业进行调度,以定期在 Oracle Autonomous Database 系统上的主系统与备用 WebLogic ServerOracle SOA SuiteOracle Fusion Middleware 系统之间复制配置。此脚本检查本地数据库的当前角色以确定其是否在主站点或备用站点中运行。

  • 当脚本在 PRIMARY 站点中运行时,它将域配置从主域复制到本地帮助文件夹 (FSS),然后复制到辅助站点帮助文件夹(通过 rsync)。
  • 当脚本在 STANDBY 站点中运行时,它将域配置从辅助帮助文件夹(OCI 文件存储)复制到辅助域,并进行所需的数据源替换以使用本地数据库。

您必须从 OCI 控制台中收集不同的参数,并加密密码以访问 Oracle Autonomous Database 钱包,因为安全原因。

以下是脚本中使用的变量的说明以及如何获取这些变量:

  • REMOTE_WLSADMIN_NODE_IP

    对等端和远程 WebLogic 服务器管理服务器节点的 IP。

    这是对等站点中 WebLogic 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 wallet 的目录(解压缩从 OCI 控制台下载的 wallet)。此目录应至少包含 tnsnames.orakeystore.jkstruststore.jks 文件。使用快照备用方法时,这是 tnsadmin 文件夹

  • ENC_WALLET_PASSWORD

    Oracle Autonomous Database OCI UI 下载 wallet 时提供的密码的 WLS ENCRYPTED 说明。

    如果 wallet 是 WebLogic ServerOracle SOA SuiteOracle Fusion Middleware 在预配 WebLogic Server 期间创建的初始 wallet,则可以使用以下命令获取密码:

    对于 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 作业中。