본문 바로가기

Oracle DB link & synonym 개념 정리

by 애덤더미 2014. 10. 8.
반응형

1. 데이터베이스 링크란?

데이터베이스 링크(Database Link)는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체입니다. 예를 들어, 'A' DB에서 'B' DB로 데이터를 조회하거나 변경할 수 있는 기능을 제공합니다. 단, 데이터베이스 링크는 단방향으로 동작하기 때문에, 상대 데이터베이스에서 이쪽 데이터베이스를 보려면 양쪽 모두에 각각 링크 설정이 필요합니다.

주의: DB 링크는 세션 연결이 지속되기 때문에 로컬 DB의 연결을 끊거나, commit/rollback을 수행해 세션을 종료해야 합니다.


2. 데이터베이스 링크 생성 명령어

CREATE [PUBLIC] DATABASE LINK link_name CONNECT TO username IDENTIFIED BY password USING 'service_name';​
  • PUBLIC: 공용 데이터베이스 링크를 생성하며, 이를 지정하지 않으면 본인만 사용할 수 있습니다.
  • link_name: 데이터베이스 링크의 이름.
  • username, password: 원격 DB에 접속할 오라클 사용자명과 비밀번호.
  • service_name: 네트워크 접속에 사용할 오라클 DB의 서비스명.

3. tnsnames.ora 파일 수정

로컬 DB에서 원격지 DB에 접속하려면 tnsnames.ora 파일에 원격 DB 서버의 접속 정보를 추가해야 합니다.

예시:

TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.248)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = test)
    )
  )

추가된 접속 정보는 tnsping 명령어로 확인할 수 있습니다:

tnsping TEST

또는

sqlplus ID/PASSWORD@연결DB명

4. 데이터베이스 링크 생성 예시

CREATE [PUBLIC] DATABASE LINK DBLK_TEST CONNECT TO test IDENTIFIED BY test USING 'TEST';

5. 데이터베이스 링크 사용 방법

  • 원격 테이블을 조회할 때:
SELECT * FROM remote테이블명@생성이름;
  • 원격 계정의 테이블을 참조할 때:
SELECT * FROM remote계정.remote테이블명@생성이름;

6. 데이터베이스 링크 확인하기

  • DBA가 관리하는 모든 링크 조회:
SELECT * FROM dba_db_links;
  • 전체 사용자에 생성된 데이터베이스 링크 조회:
SELECT * FROM all_db_links;
  • 현재 사용자에 생성된 데이터베이스 링크 조회:
SELECT * FROM user_db_links;
  • 사용자 시노님(Synonym) 링크 조회:
SELECT * FROM user_synonyms;

7. 데이터베이스 링크 조회 예시

SELECT * FROM emp@DBLK_TEST; SELECT ename FROM emp@DBLK_TEST;

8. 시노님(Synonym) 생성 및 조회

시노님을 사용하면 TABLE, VIEW, SEQUENCE 등의 객체에 별칭(alias)을 줄 수 있습니다.

  • 시노님 생성:
CREATE SYNONYM emplink FOR emp@DBLK_TEST;
  • 시노님을 통한 데이터 조회:
SELECT ename FROM emplink;

9. 데이터베이스 링크 삭제

  • 해당 계정에서 사용하는 링크 삭제:
DROP DATABASE LINK DBLK_TEST;
  • 전체 데이터베이스에서 사용하는 공용 링크 삭제:
DROP PUBLIC DATABASE LINK DBLK_TEST;

 

반응형