配置连接

为内部部署和 Oracle Cloud Infrastructure (OCI) 实例配置静态监听程序、重做传输和 TCP 套接字大小连接。

配置静态监听程序

在本地和 Oracle Cloud Infrastructure (OCI) 实例中配置静态监听程序文件。备用数据库的初始实例化需要静态监听程序。数据库关闭时,静态监听程序将启用与实例的远程连接,从而使您可以使用 Oracle Data Guard 启动实例。

listener.ora 文件中没有任何换行符或空格。
  1. 主内部部署数据库上应存在默认监听程序,不要更改默认监听程序。
  2. 在主数据库上,附加 SID_LIST_LISTENER 文件以包括主数据库的数据库唯一名称、Oracle 主目录和 Oracle 系统标识符 (SID)。
    SID_LIST_LISTENER = 
    		(SID_LIST = (SID_DESC = 
    (GLOBAL_DBNAME = DB_UNIQUE_NAME of the primary database) (ORACLE_HOME = Local Oracle Home of the primary database) 
    				(SID_NAME = ORACLE SID of the primary database) 
    		))
  3. OCI 中的备用数据库上应存在默认监听程序,不要更改默认监听程序。
  4. 在 OCI 中的备用数据库上,附加 SID_LIST_LISTENER 文件以包括主数据库的数据库唯一名称、OCI 的 Oracle 主目录和 Oracle 系统标识符 (SID)。
    SID_LIST_LISTENER = 
    		(SID_LIST = (SID_DESC = 
    (GLOBAL_DBNAME = DB_UNIQUE_NAME of the primary database) (ORACLE_HOME = Local Oracle Home of OCI) 
    				(SID_NAME = ORACLE SID of the primary database) 
    		))

为重做传输配置

Configure Oracle Net Encryption and TNS Entries for redo transport to protect unencrypted tablespaces from being visible on the network. Entries for each database are needed in both the primary and standby tnsnames.ora files for proper redo transport.

由于内部部署环境和云环境之间没有用于将服务器名称解析为 IP 地址的 DNS,因此将使用 IP 地址。使用以下示例替换与配置相关的值。

Oracle Real Application Clusters (Oracle RAC ) 配置无法解析扫描监听程序名称;因此,必须使用地址列表来定义所有节点。稍后将添加这些地址,初始实例应在 tns 条目中仅列出一个 IP 地址,以确保 Oracle Recovery Manager (RMAN ) 始终连接到相同的节点。

  1. 对于 Oracle Cloud Infrastructure (OCI) 实例,请将以下条目放在位于 $ORACLE_HOME/network/admin 目录中的所有云计算机上的 sqlnet.ora 文件中。
    SQLNET.ENCRYPTION_SERVER=REQUIRED 
    SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED 
    SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128) 
    SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA1) 
    SQLNET.ENCRYPTION_CLIENT=REQUIRED 
    SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED 
    SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256,AES192,AES128) 
    SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(SHA1)
  2. 对于 OCI 实例,更改 tnsnames.ora 文件。
    确保 tnsnames.ora 文件中没有任何换行符或空格。
    Standby_db_unique_name = (DESCRIPTION = 
    (SDU=65536) (RECV_BUF_SIZE=134217728) 
    (SEND_BUF_SIZE=134217728) 
    (ADDRESS_LIST = 
    		   (FAILOVER=on)
    (CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB_IP_address)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = Primary_db_SID) 
    (UR=A) 
    )) 
    
    Primary_db_unique_name = (DESCRIPTION = 
    (SDU=65536) (RECV_BUF_SIZE=134217728) 
    (SEND_BUF_SIZE=134217728) 
    (ADDRESS_LIST = 
    		   (FAILOVER=on)
    (CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS = (PROTOCOL = TCP)(HOST = Primary_DB_IP_ address)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = Primary_db_SID) 
    (UR=A) 
    ))
  3. 对于内部部署,将 sqlnet.ora 文件中的以下条目放置在 $ORACLE_HOME/network/admin 目录中的所有内部部署计算机上。
    SQLNET.ENCRYPTION_SERVER=REQUIRED 
    SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED 
    SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128) 
    SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA1) 
    SQLNET.ENCRYPTION_CLIENT=REQUIRED 
    SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED 
    SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256,AES192,AES128) 
    SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(SHA1) 
    
  4. 对于主内部部署数据库主机,更改 tnsnames.ora 文件。
    主数据库在本地 tnsnames.ora 中可能已有一个 TNS 条目,该条目具有 HOST 的服务器名称。在这种情况下,将条目中的服务器名称更改为使用主机的 IP 地址。
    确保 tnsnames.ora 文件中没有任何换行符或空格。
    Primary_db_unique_name = (DESCRIPTION = 
    (SDU=65536) (RECV_BUF_SIZE=134217728) 
    (SEND_BUF_SIZE=134217728) 
    (ADDRESS_LIST = 
    (FAILOVER=on)
    (CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS = (PROTOCOL = TCP)(HOST = PrimaryDB_IP_address)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = Primary_db_SID ) 
    (UR=A) 
    )) 
    
    Standby_db_unique_name = (DESCRIPTION = 
    (SDU=65536) (RECV_BUF_SIZE=134217728) 
    (SEND_BUF_SIZE=134217728) 
    (ADDRESS_LIST = 
    (FAILOVER=on)
    (CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB_IP_address)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = Primary_db_SID ) 
    (UR=A) 
    ))

启动监听程序

Oracle Cloud Infrastructure (OCI) 中的备用数据库和主内部部署数据库中启动 SID_LIST_LISTENER

  1. 启动主数据库上的监听程序。
    $ORACLE_HOME/bin/lsnrctl reload
  2. 验证主数据库上的监听程序状态。
    [oracle@primary_host admin]$ lsnrctl status
  3. 启动 OCI 数据库实例上的监听程序。
    $ORACLE_HOME/bin/lsnrctl reload
  4. 验证 OCI 数据库实例上的监听程序状态。
    [oracle@OCI_database_instance admin]$ lsnrctl status

启动备用数据库

Oracle Cloud Infrastructure 上启动备用数据库。

使用 Server Control 实用程序或 SQL*Plus 启动备用数据库。
  • 使用 Server Control (srvctl) 实用程序启动数据库:
    srvctl start instance -d standby DB_UNIQUE_NAME -i standby instance name -o mount
  • 使用 SQL*Plus 启动数据库:
    $ ./sqlplus / as sysdba
    SQL> startup mount;

设置 TCP 套接字大小

对于内部部署系统和云实例,将 TCP 套接字大小设置为最大 128MB,以获得最佳传输性能。如果内部部署和云实例之间的值不匹配,网络协议将协商两个值中的较低值。

  1. 以 root 用户身份,检查内部部署系统的 TCP 套接字大小。
    /sbin/sysctl -a | egrep net.core.[w,r]mem_max
    输出看起来类似于以下内容:
    net.core.rmem_max = 4194304 net.core.wmem_max = 1048576
  2. 以 root 用户身份,检查云实例的 TCP 套接字大小。
    /sbin/sysctl -a | egrep net.core.[w,r]mem_max
    输出看起来类似于以下内容:
    net.core.rmem_max = 134217728
    net.core.wmem_max = 134217728
  3. 如果云实例的 TCP 套接字大小不是 134217728,请将 net.core.wmem_maxnet.core.rmem_max/etc/sysctl.conf 文件设置编辑为 134217728。