Autonomous Database에서 다른 Autonomous Database로 TLS 데이터베이스 링크 생성

Autonomous Database on Dedicated Exadata Infrastructure에서 퍼블릭 끝점에 있는 대상 Autonomous Database로 TLS 데이터베이스 링크를 생성할 수 있습니다.

Autonomous Database에서 다른 Autonomous Database로 단방향 TLS 데이터베이스 링크 생성

전용 Exadata 인프라의 Autonomous Database에서 공개적으로 액세스 가능한 Autonomous Database로 단방향 TLS 데이터베이스 링크를 생성할 수 있습니다.

공용(public) 대상에 대한 데이터베이스 링크를 생성하려면 Target Database에 액세스할 수 있어야 합니다. Autonomous Database를 비롯한 일부 데이터베이스는 액세스를 제한할 수 있습니다(예: 액세스 제어 목록 사용). 데이터베이스 링크가 작동하려면 소스 데이터베이스에서 액세스를 허용하도록 대상 데이터베이스를 활성화해야 합니다. ACL(액세스 제어 목록)로 액세스를 제한하는 경우 소스 Autonomous Database의 아웃바운드 IP 주소를 찾아 해당 IP 주소가 대상 데이터베이스에 접속하도록 허용할 수 있습니다. 대상 데이터베이스가 다른 Autonomous Database인 경우 소스 데이터베이스의 아웃바운드 IP 주소를 대상 데이터베이스의 ACL에 추가할 수 있습니다.

아웃바운드 IP 주소 찾기에 대한 자세한 내용은 Obtain Tenancy Details를 참조하십시오.

전자 지갑(TLS) 없이 대상 Autonomous Database에 대한 데이터베이스 링크를 생성하려면 다음을 수행합니다.

  1. 단방향 TLS 연결이 사용으로 설정되었는지 확인합니다.

    기본적으로 단방향 TLS 연결은 AVMC를 프로비전할 때 사용으로 설정됩니다. 자세한 내용은 자율운영 Exadata VM 클러스터 생성을 참조하십시오.

    주:

    Autonomous Database on Dedicated Exadata Infrastructure에서 전자 지갑 없는 연결은 공용 CA가 발행한 사용자정의 SSL 인증서를 설치하여 단방향 TLS에 대해 작동합니다. 자세한 내용은 Prepare for TLS Walletless Connections를 참조하십시오.
  2. 데이터베이스 링크를 생성할 Autonomous Database 인스턴스에서 대상 Autonomous Database에 액세스할 수 있는 인증서를 생성합니다. DBMS_CLOUD.CREATE_CREDENTIAL로 지정한 usernamepassword는 대상 데이터베이스에 대한 인증서입니다. 이러한 인증서를 사용하여 데이터베이스 링크를 생성할 수 있습니다.

    주:

    credential_name 매개변수를 제공해야 합니다.

    예:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password' );
    END;
    /

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

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

  3. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK을 사용하여 대상 Autonomous Database 인스턴스에 대한 데이터베이스 링크를 생성합니다.

    예:

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'SALESLINK', 
            hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
            port => '2484',
            service_name => 'example_medium.atpc.example.oraclecloud.com',
            credential_name => 'DB_LINK_CRED',
            directory_name => NULL);
    END;
    /

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 사용하여 전자 지갑 없이 보안 TCP 접속을 사용하여 퍼블릭 끝점의 대상 Autonomous Database에 대한 데이터베이스 링크를 생성하려면 directory_name 매개변수는 NULL여야 합니다.

    TLS 연결의 경우 port 매개변수 값을 2484로 설정해야 합니다. 그러나 AVMC를 프로비전하는 동안 다른 SCAN 리스너 포트 번호를 선택한 경우 해당 포트 번호를 사용해야 합니다. 자세한 내용은 자율운영 Exadata VM 클러스터 생성을 참조하십시오.

    ssl_server_cert_dn 매개변수는 생략하거나 포함된 경우 NULL 값을 지정할 수 있습니다.

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

  4. 생성한 데이터베이스 링크를 사용하여 Target Database의 데이터에 액세스합니다.

    예:

    SELECT * FROM employees@SALESLINK;
                

1단계, 대상 데이터베이스 인증서에서 생성한 인증서의 경우 대상 사용자의 비밀번호가 변경되면 다음과 같이 대상 사용자의 인증서가 포함된 인증서를 업데이트할 수 있습니다.

BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
          credential_name => 'DB_LINK_CRED',
          attribute => 'PASSWORD',
          value => 'password' );
END;
/

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

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

추가 정보는 다음을 참조하십시오.

Autonomous Database에서 다른 Autonomous Database로 mTLS 데이터베이스 링크 생성

전용 Exadata 인프라의 Autonomous Database에서 공개적으로 액세스 가능한 Autonomous Database로 mTLS 데이터베이스 링크를 생성할 수 있습니다.

공용(public) 대상에 대한 데이터베이스 링크를 생성하려면 Target Database에 액세스할 수 있어야 합니다. Autonomous Database를 비롯한 일부 데이터베이스는 액세스를 제한할 수 있습니다(예: 액세스 제어 목록 사용). 데이터베이스 링크가 작동하려면 소스 데이터베이스에서 액세스를 허용하도록 대상 데이터베이스를 활성화해야 합니다. ACL(액세스 제어 목록)로 액세스를 제한하는 경우 소스 Autonomous Database의 아웃바운드 IP 주소를 찾아 해당 IP 주소가 대상 데이터베이스에 접속하도록 허용할 수 있습니다. 예를 들어, 대상 데이터베이스가 다른 Autonomous Database인 경우 소스 데이터베이스의 아웃바운드 IP 주소를 대상 데이터베이스의 ACL에 추가할 수 있습니다.

아웃바운드 IP 주소 찾기에 대한 자세한 내용은 Obtain Tenancy Details를 참조하십시오.

전자 지갑(mTLS)을 사용하여 대상 Autonomous Database에 대한 데이터베이스 링크를 생성하려면 다음과 같이 하십시오.

  1. mTLS 연결이 사용으로 설정되었는지 확인합니다.

    기본적으로 단방향 TLS 연결은 AVMC에 대해 사용으로 설정됩니다. AVMC를 프로비저닝하는 동안 Enable mutual TLS (mTLS) authentication 확인란을 선택하여 mTLS(상호 TLS) 인증을 사용으로 설정할 수 있습니다. 자세한 내용은 자율운영 Exadata VM 클러스터 생성을 참조하십시오.

  2. 대상 데이터베이스에 대한 인증서가 포함된 대상 데이터베이스 전자 지갑 cwallet.sso을 객체 저장소로 복사합니다.

    전자 지갑 파일에 대한 다음 사항에 유의하십시오.

    • 전자 지갑 파일은 데이터베이스 유저 ID 및 암호와 함께 대상 Oracle Database의 데이터에 액세스할 수 있습니다. 전자 지갑 파일을 보안 위치에 저장합니다. 권한이 부여된 사용자와만 전자 지갑 파일을 공유합니다.

    • 전자 지갑 파일의 이름을 바꾸지 마십시오. 오브젝트 스토리지의 전자 지갑 파일 이름은 cwallet.sso여야 합니다.

  3. 전자 지갑 파일 cwallet.sso를 저장하는 객체 저장소에 액세스하기 위한 인증서를 생성합니다. 다양한 오브젝트 스토리지 서비스의 사용자 이름 및 암호 매개변수에 대한 자세한 내용은 CREATE_CREDENTIAL 프로시저를 참조하십시오.
  4. Autonomous Database에서 전자 지갑 파일 cwallet.sso에 대한 디렉토리를 생성합니다.

    예:

    CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
                

    디렉토리 생성에 대한 자세한 내용은 Autonomous Database에서 디렉토리 생성을 참조하십시오.

  5. 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가 버킷 이름입니다. 자세한 내용은 Object Storage 네임스페이스 이해를 참조하십시오.

  6. Autonomous Database 인스턴스에서 대상 데이터베이스에 액세스하기 위한 인증서를 생성합니다. DBMS_CLOUD.CREATE_CREDENTIAL로 지정한 usernamepassword는 데이터베이스 링크를 생성하는 데 사용하는 대상 데이터베이스에 대한 인증서입니다.

    주:

    credential_name 매개변수를 제공해야 합니다.

    예:

    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password');
    END;
    /

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

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

  7. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 사용하여 대상 데이터베이스에 대한 데이터베이스 링크를 생성합니다.

    예:

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'SALESLINK',
            hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
            port => '2484',
            service_name => 'example_medium.atpc.example.oraclecloud.com',
            ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'DBLINK_WALLET_DIR');
    END;
    /

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

    TLS 연결의 경우 port 매개변수 값을 2484로 설정해야 합니다. 그러나 AVMC를 프로비전하는 동안 다른 SCAN 리스너 포트 번호를 선택한 경우 해당 포트 번호를 사용해야 합니다. 자세한 내용은 자율운영 Exadata VM 클러스터 생성을 참조하십시오.

    directory_name로 지정된 디렉토리의 전자 지갑 파일이 cwallet.sso가 아닌 경우 프로시저가 ORA-28759: failure to open file와 같은 오류를 보고합니다.

  8. 생성한 데이터베이스 링크를 사용하여 Target Database의 데이터에 액세스합니다.

    예:

    SELECT * FROM employees@SALESLINK;
                

5단계, 대상 데이터베이스 인증서에서 생성한 인증서의 경우 대상 사용자의 비밀번호가 변경되면 다음과 같이 대상 사용자의 인증서가 포함된 인증서를 업데이트할 수 있습니다.

BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name => 'DB_LINK_CRED',
        attribute => 'PASSWORD',
        value => 'password' );
END;
/

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

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

추가 정보는 다음을 참조하십시오.

Autonomous Database인 대상에 대한 데이터베이스 링크 노트

다른 Autonomous Database인 대상에 대한 데이터베이스 링크를 생성하기 위한 참고 사항을 제공합니다.

다른 Autonomous Database로의 데이터베이스 링크에 대한 참고 사항:

  • 데이터베이스 링크에 사용하기 위해 디렉토리당 하나의 전자 지갑 파일만 적합합니다. 한 번에 하나의 cwallet.sso만 전자 지갑 파일에 대해 선택한 디렉토리(예: DBLINK_WALLET_DIR)에 업로드할 수 있습니다. 즉, DBLINK_WALLET_DIRcwallet.sso를 사용하면 해당 디렉토리의 전자 지갑이 유효한 데이터베이스에 대한 데이터베이스 링크만 생성할 수 있습니다. 데이터베이스 링크와 함께 여러 cwallet.sso 파일을 사용하려면 추가 디렉토리를 만들고 각 cwallet.sso를 다른 디렉토리에 배치해야 합니다. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK로 데이터베이스 링크를 만들 때는 directory_name 매개변수가 있는 전자 지갑이 포함된 디렉토리를 지정합니다.

    디렉토리 생성에 대한 자세한 내용은 Autonomous Database에서 디렉토리 생성을 참조하십시오.

  • 데이터베이스 링크를 나열하려면 ALL_DB_LINKS 뷰를 사용합니다. 자세한 내용은 ALL_DB_LINKS in Oracle Database 19c Database Reference 또는 Oracle Database 23ai Database Reference를 참조하십시오.

  • 전자 지갑 파일은 데이터베이스 사용자 ID 및 비밀번호와 함께 대상 Autonomous Database의 데이터에 대한 액세스를 제공합니다. 전자 지갑 파일을 보안 위치에 저장합니다. 권한이 부여된 사용자와만 전자 지갑 파일을 공유합니다.

  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 입력은 대상 전용 Autonomous Database의 스캔 이름을 'hostname' 매개변수로 언급해야 합니다.