[Oracle] DB LINK 생성 방법

HYEOB KIM·2023년 5월 9일
1

DB LINK

데이터베이스 링크(Database Link)란?

  • 데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체입니다.
  • INSTANCE가 두 개 이상이고, 각각의 HOST NAME과 ORACLE_SID는 다르고 NLS_CHARACTER_SET은 동일하게 되어 있어야 합니다.
    (만약 같은 MACHINE에서 INSTANCE의 ORACLE_SID가 같다면 TNS ERROR가 발생)
  • 미래를 위해 다른 MACHINE이라 할 지라도 ORACLE_SID는 규칙에 의해 다르게 가져가는 것이 좋습니다.
  • NLS_CHARACTER_SET이 동일하게 되어 있지 않으면 DATA 입출력시 ?????로 나타납니다.
  • 원격 target DB 서버에 리스너(listener)가 꼭 띄워져 있어야 합니다.

문법

TNSNAMES.ORA 파일 참조 방식

CREATE DATABASE LINK <dblink_name>
CONNECT TO <remote_username> IDENTIFIED BY <remote_user_password>
USING <remote_database>;
  • dblink_name : db link 객체의 이름
  • remote_username : 원격 target DB의 username
  • remote_user_password : 원격 target DB의 user password
  • remote_database : 원격 target DB의 TNS Alias로 tnsnames.ora에 등록되어 있어야 합니다.

예시

CREATE DATABASE LINK sales 
CONNECT TO bob IDENTIFIED BY Abcd1234
USING 'SALES';

====== tnsnames.ora =====
SALES =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.50.100.143)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = SALES_PRD)
    )
)
=========================
-- 데이터베이스 링크를 통한 데이터의 조회
SELECT ename FROM <remote_db_table_name>@<dblink_object_name>;
SELECT * FROM customers@sales;;

INSERT INTO customers@sales(customer_id, name, email)
VALUES(2,'XYZ Inc','contact@xyzinc.com');

SELECT * FROM customers@sales

--시노님을 생성해서 사용하면 더욱더 편리하게 사용 할 수 있습니다.
CREATE SYNONYM custlink FOR customers@sales;   
SELECT * FROM custlink;     
-- 데이터베이스 링크의 삭제
DROP DATABASE LINK sales;

Connect String을 직접 적어주는 방식

tnsnames.ora 파일에 Connect String을 적어주는 대신 USING 뒤에 직접 적어줄 수도 있습니다.

SQL> CREATE DATABASE LINK <dblink_name>
  2  CONNECT TO <remote_username> IDENTIFIED BY <remote_user_password>
  3  USING '(DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=oracledb.example.com)(PORT=1521))
                (CONNECT_DATA=(SERVICE_NAME=service_name))
            )';

참고

profile
Devops Engineer

1개의 댓글

comment-user-thumbnail
2023년 5월 9일

Is there any way to make it easier for me and fnaf security breach to remember these formulas?

답글 달기