Data Guard Broker 검증 및 구성

Netcat tnspingping를 통해 Oracle Database Exadata Cloud Service와 온-프레미스 Oracle Exadata Database Machine 간의 접속을 확인합니다.

Oracle Data Guard Broker는 Data Guard 구성의 생성, 유지 관리 및 모니터링을 자동화하고 중앙 집중화하는 분산 관리 프레임워크입니다.

{\ f2732 Broker} 의 사용하기 쉬운 인터페이스 {\ f2732 (Broker} 의 그래픽 유저 인터페이스 {\ f2732 (GUI)} 인 {\ f2732 Data Guard} 관리 페이지와 {\ f2732 DGMGRL} 이라는 {\ f2732 Data Guard} 명령행 인터페이스를 통해 모든 관리 작업을 로컬이나 원격으로 수행할 수 있습니다 {\ f2732.}

소스 및 대기 Exadata 시스템 접속

소스 및 대기 Exadata 시스템을 Oracle Data Guard Broker 구성으로 접속하고 NetCat, TNS 핑 유틸리티 및 핑을 사용하여 양방향의 접속을 확인하십시오.

요약된 단계에서는 온-프레미스 기본 데이터베이스가 기존 Data Guard Broker 구성의 일부가 아니라고 가정합니다.

  1. 온-프레미스 기본 데이터베이스가 이미 기존 Data Guard Broker 구성의 일부인지 여부를 확인합니다.
    SQL> select decode(count(1),0,'NOCONFIG') from v$DG_BROKER_CONFIG;
    ‘NOCONFIG’ 이외의 값은 기존 Broker 구성을 의미합니다. 온-프레미스 데이터베이스에 대한 기존 중개자 구성이 있는 경우 관리자가 중개자에 대한 이전 지식을 가지고 있고 기존 중개자 구성에 새 대기 데이터베이스를 추가하는 방법을 알고 있다고 가정합니다.

    기존 {\ f2732 Broker} 구성이 없는 경우 다음 단계를 완료하십시오 {\ f2732. }

  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에 ping을 수행하여 연결을 검증합니다.
    [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 인스턴스에서 데이터 파일 제거

standby database에서 데이터 파일을 제거하는 스크립트를 실행합니다.

  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 ASM(Oracle Automatic Storage Management) 디스크에 있습니다.

  1. 온-프레미스 데이터베이스의 현재 구성을 확인하고 출력을 표시합니다.
    srvctl config database -d db1
    출력에는 Password 파일이 포함됩니다.
  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 명령줄 유틸리티를 사용하여 Password 파일을 가져옵니다.
    asmcmd pwget --dbuniquename db1
    출력에는 Password 파일이 포함됩니다.
  4. Oracle ASM 명령행 유틸리티에 로그인한 다음 pwcopy 명령을 사용하여 비밀번호 파일을 로컬 디스크에 복사합니다.
    출력에는 Password 파일이 포함됩니다.
  5. ls -lrt 명령을 사용하여 파일이 로컬 디스크에 복사되었는지 확인합니다.
  6. SCP 네트워크 프로토콜을 사용하여 암호 파일을 Oracle Database Exadata Cloud Service 인스턴스에 저장합니다.
    scp -i Key.ssh -r pwddb1 opc@10.255.195.131:/tmp/pwddb1
  7. Oracle Database Exadata Cloud Service 인스턴스에 opc 사용자로 로그인하고 비밀번호 파일의 모드를 777로 변경합니다.
    chmod 777 /tmp/pwddb1
  8. Oracle Database Exadata Cloud Service 인스턴스에 su -oracle 사용자로 로그인하고 디렉토리를 표시합니다.
    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