驗證並設定資料保全中介

透過 Netcat tnspingping 驗證 Oracle Database Exadata Cloud Service 和內部部署 Oracle Exadata Database Machine 之間的連線。

Oracle Data Guard 中介是一種分散式管理架構,可自動化並集中建立、維護及監督「資料保全」組態。

您可以透過中介的易於使用介面,在本機或遠端執行所有管理作業:Oracle Enterprise Manager中的「資料保全」管理頁面(中介的圖形化使用者介面(GUI) ,以及稱為DGMGRL的「資料保全」命令行介面)。

連線來源和待命 Exadata 系統

使用 Oracle Data Guard 中介組態連線來源和待命 Exadata 系統,並使用 NetCat、TNS 偵測公用程式以及 Ping 驗證連線。

上述步驟假設內部部署主要資料庫尚未是現有「資料保全」中介組態的一部分。

  1. 判斷內部部署主要資料庫是否已經是現有「資料保全」中介組態的一部分。
    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 上,使用 Linux 的 TNS 偵測公用程式連線至待命 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 上,使用 Linux 的 TNS 偵測公用程式連線至內部部署 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
就會移除起始 (Starter) 資料庫的所有檔案。

複製密碼檔

在內部部署 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