验证和配置 Data Guard 中介

通过 Netcat tnspingping 验证 Oracle Database Exadata Cloud Service 与内部部署 Oracle Exadata Database Machine 之间的连接。

Oracle Data Guard 中介是一个分布式管理框架,用于自动创建、维护和监视 Data Guard 配置并集中管理这些配置。

您可以通过中介易于使用的界面在本地执行或远程执行所有管理操作:Oracle Enterprise Manager 中的 Data Guard 管理页(即中介的图形用户界面 (Graphal User Interface, GUI))以及名为 DGMGRL 的 Data Guard 命令行界面。

连接源和备用 Exadata 系统

使用 Oracle Data Guard 中介配置连接源和备用 Exadata 系统,并使用 NetCat、TNS Ping 实用程序和 Ping 验证连接的两个方向。

概述的步骤假定内部部署主数据库尚未成为现有 Data Guard 中介配置的一部分。

  1. 确定内部部署主数据库是否已经是现有 Data Guard 中介配置的一部分。
    SQL> select decode(count(1),0,'NOCONFIG') from v$DG_BROKER_CONFIG;
    ‘NOCONFIG’ 以外的值表示现有中介配置。如果内部部署数据库存在现有中介配置,则假定管理员先前已知中介,并且知道如何将新的备用数据库添加到现有中介配置。

    如果没有现有中介配置,则完成以下步骤。

  2. 请确保默认监听程序名为 LISTENER。
    $lsnrctl show current_listener | grep Current Listener

    输出应类似于以下内容:

    Current Listener is LISTENER
  3. 通过从内部部署计算机运行以下命令来验证监听程序端口。将显示预期结果。
    [oracle@exa11db01 bin]$ ./lsnrctl status | grep 'Connecting'

    输出应类似于以下内容:

    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=10.136.74.2)(PORT=1521))
  4. 在本地 Oracle Exadata Database Machine 上,使用 NetCat 连接到备用 Oracle Database Exadata Cloud Service 以验证连接
    [oracle@exa11db01 bin]$ nc -v 10.255.195.131 1521

    输出应类似于以下内容:

    Ncat: Version 7.50 (https://nmap.org/ncat )
    Ncat: Connected to 10.255.195.131:1521.
  5. 在本地 Oracle Exadata Database Machine 上,使用 TNS Ping Utility for Linux 连接到备用 Oracle Database Exadata Cloud Service 以验证连接
    [oracle@exa11db01 bin]$ tnsping DB1_phx3g7

    输出应类似于以下内容:

    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 23-JAN-2021 
    19:46:55
    Copyright (c) 1997, 2020, Oracle.  All rights reserved.
    Used parameter files:
    /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (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 
    =10.255.195.131)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) 
    (SERVICE_NAME = db11) (UR=A)))
    OK (40 msec)
  6. 在本地 Oracle Exadata Database Machine 上,试通备用 Oracle Database Exadata Cloud Service 以验证连接
    [oracle@exa11db01 bin]$ ping 10.255.195.131

    输出应类似于以下内容:

    PING 10.255.195.131 (10.255.195.131) 56(84) bytes of data.
    64 bytes from 10.255.195.131: icmp_seq=1 ttl=60 time=19.7 ms
    64 bytes from 10.255.195.131: icmp_seq=2 ttl=60 time=19.6 ms
    64 bytes from 10.255.195.131: icmp_seq=3 ttl=60 time=19.5 ms
    ^C
    --- 10.255.195.131 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 19.521/19.633/19.718/0.141 ms
  7. Oracle Database Exadata Cloud Service 上,使用 NetCat 连接到内部部署 Oracle Exadata Database Machine 以验证连接。
    [oracle@exacs82-vm3sv1 ~]$ nc -v 10.136.74.2

    输出应类似于以下内容:

    -bash: nc: command not found
  8. Oracle Database Exadata Cloud Service 上,使用 TNS Ping Utility for Linux 连接到内部部署 Oracle Exadata Database Machine 以验证连接
    [oracle@exacs82-vm3sv1 ~]$ tnsping db1

    输出应类似于以下内容:

    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 23-JAN-2021 
    19:53:02
    Copyright (c) 1997, 2020, Oracle.  All rights reserved.
    Used parameter files:
    /u02/app/oracle/product/19.0.0.0/dbhome_5/network/admin/DB1/sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (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 = 
    10.136.74.2)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 
    db11) (UR=A)))
    OK (40 msec)
  9. Oracle Database Exadata Cloud Service 上,试通内部部署 Oracle Exadata Database Machine 以验证连接
    [oracle@exacs82-vm3sv1 ~]$ ping 10.136.74.2

    输出应类似于以下内容:

    PING 10.136.74.2 (10.136.74.2) 56(84) bytes of data.
    64 bytes from 10.136.74.2: icmp_seq=1 ttl=60 time=18.6 ms
    64 bytes from 10.136.74.2: icmp_seq=2 ttl=60 time=18.6 ms
    64 bytes from 10.136.74.2: icmp_seq=3 ttl=60 time=18.5 ms
    64 bytes from 10.136.74.2: icmp_seq=4 ttl=60 time=18.4 ms
    ^C
    --- 10.136.74.2 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    rtt min/avg/max/mdev = 18.442/18.574/18.665/0.162 ms

从备用 Exadata 实例中删除数据文件

运行脚本以从备用数据库中删除数据文件。

  1. 登录到 Oracle Database Exadata Cloud Service 实例。
  2. 创建脚本以删除数据文件。
    SQL> set heading off linesize 999 pagesize 0 feedback off trimspool on
    SQL> spool /tmp/files.lst
    SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm 
    '||name from v$tempfile union all select 'asmcmd rm '||member from 
    v$logfile;
    SQL> spool off
    SQL> create pfile='/tmp/ ORACLE_UNQNAME.pfile' from spfile;         
    SQL> exit
  3. 关闭 Oracle Database Exadata Cloud Service 实例上的数据库。
    srvctl stop database -d DB1_phx3g7
  4. 通过编辑 files.1st 文件并删除以下行来删除数据文件:
    SQL> select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm 
    '||name from v$tempfile union all select 'asmcmd rm '||member from 
    v$logfile;
    SQL> spool off
  5. 将文件权限更改为可读、可写和可由所有用户执行。
    chmod 777 /tmp/files.1st
  6. 保存并执行脚本。
    ./tmp/files.lst
将删除启动程序数据库的所有文件。

复制口令文件

在本地 Exadata 系统上找到口令文件并将文件复制到 Oracle Database Exadata Cloud Service 实例。内部部署 Exadata 系统上的口令文件位于 Oracle Automatic Storage Management (Oracle ASM ) 磁盘上。

  1. 检查内部部署数据库的当前配置并显示输出。
    srvctl config database -d db1
    输出包括密码文件。
  2. 编辑 oratab 文件并将 Oracle ASM 添加到其中。
    vi /etc/oratab 
    db11:/u01/app/oracle/product/19.0.0.0/dbhome
    _1:N
    +ASM1:/u01/app/19.0.0.0/grid:N
  3. 使用 Oracle ASM 命令行实用程序并获取口令文件。
    asmcmd pwget --dbuniquename db1
    输出包括密码文件。
  4. 登录到 Oracle ASM 命令行实用程序,然后使用命令 pwcopy 将口令文件复制到本地磁盘。
    输出包括口令文件。
  5. 使用命令 ls -lrt 确认文件已复制到本地磁盘。
  6. 使用 SCP 网络协议将口令文件保存到 Oracle Database Exadata Cloud Service 实例。
    scp -i Key.ssh -r pwddb1 opc@10.255.195.131:/tmp/pwddb1
  7. opc 用户身份登录到 Oracle Database Exadata Cloud Service 实例,并将密码文件的模式更改为 777。
    chmod 777 /tmp/pwddb1
  8. su -oracle 用户身份登录到 Oracle Database Exadata Cloud Service 实例并显示目录。
    sudo su - oracle
    ls -lrt
    source DB1.env
  9. 使用 Oracle ASM 命令行实用程序,将文件从 tmp 文件夹复制到$ORACLE_HOME/dbs,希望口令文件驻留在其中。
    ASMCMD> pwcopy --dbuniquename DB1_phx3g7 /tmp/pwddb1 +DATAC1/DB1_phx3g7/PASSWORD/passwd
    此时将显示类似于以下内容的错误消息。这是预期的,因为口令已注册。
    ASMCMD-9453: failed to register password file as a CRS resource
    copying /u02/app/oracle/product/19.0.0.0/dbhome_5/dbs/pwddb1 -> +DATAC1/DB1_phx3g7/PASSWORD/passwd
    ASMCMD-9453: failed to register password file as a CRS resource
  10. 使用 Oracle ASM 命令行实用程序,验证是否已复制口令文件。
    ls -al