현재 접속되어 있는 DB에서 원격으로 다른 곳의 DB에 연결하여 사용한다.
(난 로컬DB에 서버의 DATA를 다운로드 받을때 썼다)
기본적으로 오라클은 dblink를 사용하면 세션 연결이 지속 되기 때문에,
로컬DB의 연결을 끊거나, commit/rollback을 하여 세션을 끊어야 한다. 
 
[사용방법]
DBA권한을 가진 유저만 DBLINK를 만들수 있기 때문에 SYSTEM같은 유저로 DBLINK를 만든다
CREATE [PUBLIC] DATABASE LINK <link_name>
       CONNECT TO <user> IDENTIFIED BY <password>
       USING '<service_name>';

[예 1] tnsnames에 원격DB 설정이 되어있는 경우
- DBLINK 명 : testlink
- 원격DB의 USER명 : scott
- 원격DB의 USER PASS : tiger
- 원격DB의 host명 : testdb
create public database link testlink
  connect to scott identified by tiger
 using 'testdb';

[예 2] tnsnames에 원격DB 설정이 되어있지 않은 경우
create public database link testlink
  connect to scott identified by tiger
  using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDB)))'; 

[DB Link 전체보기]
select * from all_db_links;

[사용 1] 단순조회
select * from emp@testlink
 
[사용 2] 로컬DB와 원격DB의 JOIN
select t.*, s.dname
  from dept s, emp@testlink t
where t.deptno = s.deptno;

[사용 3] 원격 프로시져/함수 호출
<procedure_name>@<database_link>(<parameters>);

'Database > Oracle' 카테고리의 다른 글

update 방법들  (0) 2010.06.16
Oracle optimizer goal, FIRST_ROWS 그리고 ALL_ROWS  (0) 2010.05.14
Architecture  (0) 2010.05.04
도메인 인덱스(Domain Index)  (0) 2010.04.28
비트맵 인덱스(Bitmap Index)  (0) 2010.04.28

+ Recent posts