접속 구성

온-프레미스 및 OCI(Oracle Cloud Infrastructure) 인스턴스에 대한 정적 리스너, 리두 전송 및 TCP 소켓 크기 접속을 구성합니다.

정적 리스너 구성

온-프레미스 및 OCI(Oracle Cloud Infrastructure) 인스턴스에서 정적 리스너 파일을 구성합니다. 대기 데이터베이스의 초기 인스턴스화에는 정적 리스너가 필요합니다. 데이터베이스의 작동이 중지되면 정적 리스너가 인스턴스에 대한 원격 접속을 사용으로 설정하여 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) 
    		))

리두 전송 구성

암호화되지 않은 테이블스페이스가 네트워크에 표시되지 않도록 리두 전송에 대한 Oracle Net 암호화 및 TNS 항목을 구성하십시오. 적절한 리두 전송을 위해서는 기본 및 대기 tnsnames.ora 파일 모두에 각 데이터베이스에 대한 항목이 필요합니다.

온프레미스 환경과 클라우드 환경 간에 서버 이름을 IP 주소로 분석하는 DNS가 없기 때문에 IP 주소가 사용됩니다. 다음 예를 사용하여 구성과 관련된 값을 바꿉니다.

Oracle RAC(Oracle Real Application Clusters) 구성은 스캔 리스너 이름을 분석할 수 없으므로 주소 목록을 사용하여 모든 노드를 정의해야 합니다. 나중에 추가되므로 RMAN(Oracle Recovery Manager) 이 항상 동일한 노드에 접속되도록 초기 인스턴스는 tns 항목에 IP 주소를 하나만 나열해야 합니다.

  1. OCI(Oracle Cloud Infrastructure) 인스턴스의 경우 $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. 온-프레미스 의 경우 $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) 
    
  4. 기본 온-프레미스 데이터베이스 호스트의 경우 tnsnames.ora 파일을 변경합니다.
    기본 데이터베이스의 온-프레미스 tnsnames.ora 에는 호스트에 대한 서버 이름을 사용하는 TNS 항목이 이미 있을 수 있습니다. 이 경우 호스트의 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) 
    ))

리스너 시작

OCI(Oracle Cloud Infrastructure) 및 기본 온-프레미스 데이터베이스의 대기 데이터베이스에서 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. 루트 사용자는 온-프레미스 시스템의 TCP 소켓 크기를 확인합니다.
    /sbin/sysctl -a | egrep net.core.[w,r]mem_max
    다음과 같이 출력됩니다:
    net.core.rmem_max = 4194304 net.core.wmem_max = 1048576
  2. 루트 사용자로 클라우드 인스턴스에 대한 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로 편집합니다.