데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체 이다.
우선 고려되어야 사항은 ORACLE INSTANCE가 두 개 이상이고, 각각의 HOST NAME과 ORACLE_SID는 다르고 NLS_CHARACTER_SET은 동일하게 되어 있어야 한다.
만약 같은 MECHINE에서 INSTANCE의 ORACLE_SID가 같다면 TNS ERROR가 발생 한다. 미래를 위해 다른 MECHINE이라 할지라도 ORACLE_SID는 규칙에 의해 다르게 가져가는 것이 좋다.
NLS_CHARACTER_SET이 동일하게 되어 있지 않으면 DATA 입출력시 ?????로 나타난다.
데이터베이스 링크로 연결되는 서버에 리스너가 꼭 띄어져 있어야 한다.
쉽게 말해서 ALIAS 같이 이름을 줄여주는 역할을 한다 생각하면 된다.
시노님(Synonym)은 테이블의 이름을 설정 해 주는 것이다.
보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수, 패키지, 시퀀스 등)를 참조할 때 많이 사용을 한다.
실제로 SYNONYM을 이용하는 이유는 다른 유저의 객체를 사용할때 유저의 이름과 객체의 실제이름을 사용하는데 그 두개를 감춤으로써 데이터베이스의 보안을 개선하기위해 사용 되어진다.
-- 데이터베이스 링크 생성
SQL> CREATE DATABASE LINK test_server
CONNECT TO scott IDENTIFIED BY tiger USING 'testdb';
-- USING 다음에 testdb는 tnsnames.ora파일에 정의되어 있어야 한다.
-- 데이터베이스 링크를 통한 데이터의 조회..
SQL> SELECT ename FROM emp@test_server;
--시노님을 생성해서 사용하면 더욱더 편리하게 사용 할 수 있다.
SQL> CREATE SYNONYM emplink FOR emp@test_server;
-- 시노님을 통한 조회
SQL> SELECT ename FROM emplink;
-- 데이터베이스 링크의 삭제..
SQL> DROP DATABASE LINK test_server;
출처: https://ultrasound.tistory.com/entry/데이터베이스-링크Database-Link란 [ultrasound]