프라이빗 끝점의 비Oracle 데이터베이스에 대한 고객 관리 이기종 접속으로 데이터베이스 링크 생성

전용 Exadata 인프라의 Autonomous Database에서 Oracle Database Gateway로의 데이터베이스 링크를 생성하여 프라이빗 끝점에 있는 비Oracle 데이터베이스에 액세스할 수 있습니다.

Oracle Database Gateway는 특정 비Oracle 시스템에 액세스하기 위해 설계된 게이트웨이입니다. Oracle Database Gateway를 사용하면 데이터의 위치나 저장 방법을 알지 못해도 분산 데이터베이스 시스템의 어디에나 데이터에 액세스할 수 있습니다. Oracle Database Gateway와 함께 Autonomous Database의 데이터베이스 링크를 사용하면 이기종 환경을 지원하고 비Oracle 시스템의 데이터에 액세스하기 위해 애플리케이션을 사용자 정의할 필요가 없습니다.

주:

프라이빗 끝점에서 비Oracle 데이터베이스에 대한 고객 관리 이기종 접속으로 데이터베이스 링크를 생성하는 작업은 23ai의 경우 19c 및 23.6 이상 버전 19.25에서만 지원됩니다.

관련 항목

필요 조건

퍼블릭 끝점에서 Autonomous Database 인스턴스의 데이터베이스 링크를 사용하려면 다음을 수행합니다.
  1. 비Oracle 데이터베이스에 액세스하도록 Oracle Database Gateway를 구성합니다. 자세한 내용은 Oracle Database 19c Database Heterogeneous Connectivity User's GuideOracle Database Gateways 또는 Oracle Database 23ai Database Heterogeneous Connectivity User's Guide를 참조하십시오.

    연결하려는 데이터베이스에 따라 해당 설치 및 구성 설명서 및 게이트웨이 사용 설명서를 참조할 수 있습니다.

    예를 들어, Oracle Database Gateway for SQL Server의 경우 다음을 참조하십시오.

  2. Oracle Database Gateway에서 들어오는 요청을 처리하도록 Oracle Net Listener를 구성합니다.

  3. Oracle Database Gateway에서 자체 서명된 전자 지갑을 생성합니다.

또한 다음이 수행됩니다.
  • 대상 데이터베이스는 소스 데이터베이스의 Oracle Cloud Infrastructure VCN에서 액세스할 수 있어야 합니다. 예를 들어, 다음과 같은 경우에 Target Database에 연결할 수 있습니다.

    • 대상 데이터베이스가 프라이빗 끝점에 있습니다.

    • 소스 데이터베이스와 대상 데이터베이스는 모두 동일한 Oracle Cloud Infrastructure VCN에 있습니다.

    • 소스 데이터베이스와 대상 데이터베이스가 쌍을 이루는 서로 다른 Oracle Cloud Infrastructure VCN에 있습니다.

    • 프라이빗 끝점의 대상의 경우 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKhostname 매개변수를 사용하여 단일 호스트 이름을 지정할 수 있도록 지원합니다. 프라이빗 끝점에서는 IP 주소, SCAN IP 또는 SCAN 호스트 이름을 사용할 수 없습니다(대상이 퍼블릭 끝점에 있는 경우 CREATE_DATABASE_LINK는 IP 주소, SCAN IP 또는 SCAN 호스트 이름 사용을 지원합니다).

  • 프라이빗 끝점에 대해 다음 수신 및 송신 규칙을 정의해야 합니다.

    • TCP를 통한 트래픽이 대상 데이터베이스의 IP 주소 및 포트 번호에 허용되도록 소스 데이터베이스의 서브넷 보안 목록 또는 네트워크 보안 그룹에서 송신 규칙을 정의합니다.

    • 소스 데이터베이스 IP 주소에서 대상 포트로 TCP를 통한 트래픽이 허용되도록 대상 데이터베이스의 서브넷 보안 목록 또는 네트워크 보안 그룹에서 수신 규칙을 정의합니다.

프라이빗 끝점의 비Oracle 데이터베이스에 대한 고객 관리 이기종 접속(전자 지갑 없음)

Autonomous Database에서 Oracle Database Gateway로의 데이터베이스 링크를 생성하여 전자 지갑(TCPS)을 사용하거나 전자 지갑(TLS)을 사용하지 않고 프라이빗 끝점에 있는 비Oracle 데이터베이스에 액세스할 수 있습니다. 이 섹션에서는 전자 지갑 없이 데이터베이스 링크를 생성하는 방법에 대해 설명합니다.

데이터베이스 링크 및 TLS 접속을 사용하여 프라이빗 끝점의 Autonomous Database 인스턴스에서 대상 게이트웨이로의 데이터베이스 링크를 생성하려면 다음을 수행합니다.
  1. Autonomous Database에서 대상 데이터베이스에 액세스하기 위한 인증서를 생성합니다. DBMS_CLOUD.CREATE_CREDENTIAL에 지정하는 사용자 이름과 비밀번호는 데이터베이스 링크 내에서 사용되는 대상 데이터베이스에 대한 인증서입니다(대상 데이터베이스는 Oracle Database Gateway를 통해 액세스됨).
    예:
    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password'
        );
    END;/

    credential_name 매개변수는 필수입니다.

    username 매개변수의 문자는 모두 대문자여야 합니다.

    이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 대해 원하는 이름을 사용할 수 있습니다.

  2. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 사용하여 대상 게이트웨이에 대한 데이터베이스 링크를 생성합니다.
    예:
    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name =>       'SALESLINK',
            hostname =>           'example.com',
            port =>               '1522',
            service_name =>       'example_service_name',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name =>    'DB_LINK_CRED',
            directory_name =>      NULL,
            gateway_link =>        TRUE,
            private_target =>      TRUE,
            gateway_params =>      NULL
        );
    END;/

    접속이 전자 지갑 없이 TCP 기반 데이터베이스 링크로 생성된 경우 ssl_server_cert_dn 매개변수는 선택사항입니다.

    directory_nameNULL인 경우 접속은 전자 지갑 없이 TCP 기반 데이터베이스 링크로 생성됩니다.

    대상 비Oracle Database가 프라이빗 끝점에 있는 경우(즉, 데이터베이스 링크가 VCN DNS 서버에서 확인해야 하는 호스트 이름에 액세스하는 경우) private_target 매개변수를 TRUE로 설정해야 합니다. private_targetTRUE인 경우 hostname 매개변수는 단일 호스트 이름이어야 합니다(전용 끝점, IP 주소 사용, SCAN IP 또는 SCAN 호스트 이름은 지원되지 않음).

    gateway_linkTRUE이고 gateway_paramsNULL인 경우 고객 관리 Oracle 게이트웨이에 대한 데이터베이스 링크가 지정됩니다.

    ADMIN 이외의 사용자에게는 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 실행할 수 있는 권한이 필요합니다.

    자세한 내용은 CREATE_DATABASE_LINK Procedure를 참조하십시오.

  3. 생성한 데이터베이스 링크를 사용하여 대상 게이트웨이의 데이터에 액세스합니다.
    예:
    SELECT * FROM employees@SALESLINK;
1단계, Oracle Database Gateway 인증서에서 생성한 인증서의 경우 대상 사용자의 비밀번호가 변경되면 다음과 같이 대상 사용자의 인증서가 포함된 인증서를 업데이트할 수 있습니다.
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name =>'DB_LINK_CRED',
        attribute =>'PASSWORD',
        value=>'password'
    );
END;
/

여기서 password는 새 암호입니다.

이 작업 후에도 이 인증서를 사용하는 기존 데이터베이스 링크는 데이터베이스 링크를 삭제하고 재생성할 필요 없이 계속 작동합니다.

자세한 내용은 UPDATE_CREDENTIAL Procedure를 참조하십시오.

프라이빗 끝점의 비Oracle 데이터베이스에 대한 고객 관리 이기종 접속(전자 지갑 사용)

Autonomous Database에서 Oracle Database Gateway로의 데이터베이스 링크를 생성하여 전자 지갑(TCPS)을 사용하거나 전자 지갑(TLS)을 사용하지 않고 프라이빗 끝점에 있는 비Oracle 데이터베이스에 액세스할 수 있습니다. 이 섹션에서는 전자 지갑으로 데이터베이스 링크를 생성하는 방법에 대해 설명합니다.

프라이빗 끝점의 Autonomous Database 인스턴스에서 대상 게이트웨이로의 데이터베이스 링크를 생성하고 전자 지갑에 접속하려면 다음을 수행합니다.
  1. Oracle Database Gateway에 대한 인증서를 포함하는 대상 게이트웨이 자체 서명 전자 지갑(예: cwallet.sso)을 객체 저장소로 복사합니다.
    전자 지갑 파일은 데이터베이스 사용자 ID 및 비밀번호와 함께 대상 게이트웨이를 통해 사용 가능한 데이터에 액세스할 수 있습니다. 전자 지갑 파일을 보안 위치에 저장합니다. 권한이 부여된 사용자와만 전자 지갑 파일을 공유합니다.
  2. Autonomous Database에서 인증서를 생성하여 cwallet.sso를 저장하는 객체 저장소에 액세스합니다.
    다양한 객체 스토리지 서비스의 사용자 이름 및 암호 매개변수에 대한 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.
  3. Autonomous Database에서 전자 지갑 파일 cwallet.sso에 대한 디렉토리를 생성합니다.
    예:
    CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
    디렉토리 생성에 대한 자세한 내용은 Autonomous Database에서 디렉토리 생성을 참조하십시오.
  4. DBMS_CLOUD.GET_OBJECT를 사용하여 대상 게이트웨이 자체 서명된 전자 지갑을 이전 단계 DBLINK_WALLET_DIR에서 생성한 디렉토리로 업로드합니다.
    예:
    BEGIN
        DBMS_CLOUD.GET_OBJECT(
            credential_name =>'DEF_CRED_NAME',
            object_uri =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso',
            directory_name =>'DBLINK_WALLET_DIR'
        ); 
    END;
    /

    이 예에서 namespace-string은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 Understanding Object Storage Namespaces를 참조하십시오.

    주:

    이 단계에서 사용하는 credential_name은 객체 저장소에 대한 인증서입니다. 다음 단계에서는 대상 게이트웨이에 액세스하기 위한 인증서를 생성합니다.
  5. Autonomous Database에서 대상 데이터베이스에 액세스하기 위한 인증서를 생성합니다. DBMS_CLOUD.CREATE_CREDENTIAL에 지정하는 사용자 이름과 비밀번호는 데이터베이스 링크 내에서 사용되는 대상 데이터베이스에 대한 인증서입니다(대상 데이터베이스는 Oracle Database Gateway를 통해 액세스됨).
    예:
    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name =>'DB_LINK_CRED',
            username =>'NICK',
            password =>'password'
        );
    END;
    /

    credential_name 매개변수는 필수입니다.

    username 매개변수의 문자는 모두 대문자여야 합니다.

    이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 대해 원하는 이름을 사용할 수 있습니다.

  6. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 사용하여 대상 게이트웨이에 대한 데이터베이스 링크를 생성합니다.
    예:
    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name =>'SALESLINK', 
            hostname =>'example.com', 
            port =>'1522',
            service_name =>'example_service_name',
            ssl_server_cert_dn =>'ssl_server_cert_dn',
            credential_name =>'DB_LINK_CRED',
            directory_name =>'DBLINK_WALLET_DIR',
            gateway_link =>TRUE,
            private_target =>TRUE,
            gateway_params =>NULL
        );
    END;
    /

    directory_nameNULL가 아닌 경우 TCPS 기반 데이터베이스 링크가 생성됩니다.

    대상 비Oracle Database가 프라이빗 끝점에 있는 경우(즉, 데이터베이스 링크가 VCN DNS 서버에서 확인해야 하는 호스트 이름에 액세스하는 경우) private_target 매개변수를 TRUE로 설정해야 합니다. private_targetTRUE인 경우 hostname 매개변수는 단일 호스트 이름이어야 합니다(전용 끝점, IP 주소 사용, SCAN IP 또는 SCAN 호스트 이름은 지원되지 않음).

    gateway_linkTRUE이고 gateway_paramsNULL인 경우 고객 관리 Oracle 게이트웨이에 대한 데이터베이스 링크가 지정됩니다.

    ADMIN 이외의 사용자에게는 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 실행할 수 있는 권한이 필요합니다.

    자세한 내용은 CREATE_DATABASE_LINK Procedure를 참조하십시오.

  7. 생성한 데이터베이스 링크를 사용하여 대상 게이트웨이의 데이터에 액세스합니다.
    예:
    SELECT * FROM employees@SALESLINK;
    
5단계, Oracle Database Gateway 인증서에서 생성한 인증서의 경우 대상 사용자의 비밀번호가 변경되면 다음과 같이 대상 사용자의 인증서가 포함된 인증서를 업데이트할 수 있습니다.
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name =>'DB_LINK_CRED',
        attribute =>'PASSWORD',
        value=>'password'
    );
END;
/

여기서 password는 새 암호입니다.

이 작업 후에도 이 인증서를 사용하는 기존 데이터베이스 링크는 데이터베이스 링크를 삭제하고 재생성할 필요 없이 계속 작동합니다.

자세한 내용은 UPDATE_CREDENTIAL Procedure를 참조하십시오.