본문 바로가기
3. 데이터관리

자율운영 데이터베이스에서 DB Link to Private DBCS

by MY잭슨 2024. 3. 18.

해당 포스트는 별로의 Wallet 없이 DB Link 생성하는 방법에 대해 설명

Create Database Links to Oracle Databases on a Private Endpoint without a Wallet

 

사전 알아두기

Prerequisites for Database Links from Autonomous Database to Oracle Databases on a Private Endpoint

 

OCI VCN 내에서 소스 데이터베이스(자율운영 데이터베이스, ADB)와 대상 데이터베이스(기본 데이터베이스, DBCS) 연결이 되어 있어야 함.
  • 대상 DBCS가 Private Endpoint에 있는 상황
  • 소스 ADB와 대상 DBCS가 동일한 OCI VCN에 있는 상황
  • 소스 ADB와 대상 DBCS가 페어링된 다른 OCI VCN에 있는 상황
  • 대상 DBCS가 FastConnect 또는 VPN을 사용하여 소스 ADB의 OCI VCN에 연결된 온프레미스 데이터베이스인 상황
Ingress와 Egress 규칙에 해당 IP와 포트가 오픈되어 있어야 함. (security list 또는 network security)

 

대상 DBCS 호스트명 hostname 설정에 있어서 IP, SCAN IP, SCAN hostname 은 설정할 수 없음,
해당 DBCS 인스턴스의 호스트명으로 설정 

ex) dbcs1.sub02161007471.vcndwhjk.oraclevcn.com

 

DB 생성

 - Private 서브넷에 대상 DBCS 생성

 - Private 서브넷에 소스 ADB 생성

 

소스 ADB에서 Credential 생성

- 대상 DBCS에 연결을 위한 user/password

BEGIN
     DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'PRIVATE_ENDPOINT_CRED',
         username => 'SYSTEM',
         password => 'XXXXXXXXXXXXXX'
         );
END;

 

 

소스 ADB에서 DB Link 생성

BEGIN
     DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
         db_link_name => 'PRIVATE_ENDPOINT_LINK', 
         hostname => 'dbcs1.sub02161007471.vcndwhjk.oraclevcn.com',
         port => '1521',
         service_name => 'dbcs1_pdb1.sub02161007471.vcndwhjk.oraclevcn.com',
         ssl_server_cert_dn => NULL,
         credential_name => 'PRIVATE_ENDPOINT_CRED',
         directory_name => NULL,
         private_target => TRUE);
END;

select * from dba_db_links;

select sysdate from dual@PRIVATE_ENDPOINT_LINK;

 

 

 

대상 DBCS가 RAC인 경우

BEGIN
     DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
         db_link_name => 'PRIVATE_ENDPOINT_LINK', 
         rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com", 
                            "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com", 
                            "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]', 
         port => '1522',
         service_name => 'exampleServiceName',
         ssl_server_cert_dn => NULL,
         credential_name => 'PRIVATE_ENDPOINT_CRED',
         directory_name => NULL,
         private_target => TRUE);
END;
/

 

 

참고 - Bastion 인스턴스 터널링을 통해 Private 소스 ADB 접속 예시

jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1521)
(host=localhost))(connect_data=(service_name=p3x3ampliuxcmhy_adb1_high.adb.oraclecloud.com))
(security=(ssl_server_dn_match=no)))

 

 

 

 

참고

Create Database Links to Oracle Databases on a Private Endpoint without a Wallet

 

Enhanced Security for Outbound Connections with Private Endpoints

 

 

댓글