IT/ORACLE

ORACLE DATA LINK 이론 및 생성, Table에 유저 권한 주기

Daniel_5 2016. 6. 23. 14:51
반응형

업무를 하는데 있어 현재 관리하고 있는 DB에서 다른 DB의 정보를 필요로 할때가 있다.

 

이경우 쉽게 다른 DB의 TABLE을 DUMP 받아 새로 현재의 DB에 넣으면 되겠지? 라고 생각할수도 있겠지만 

 

Synchronization의 측면에서 본다면 sync가 맞지 않게되어 생각과 다른 결과가 나올수도 있다.

 

이와 같은 경우에 다른쪽 DB에서 운영되는 테이블의 정보를 실시간적으로 보기 위해서는 크게 2가지가 있다.

 

 

1. 해당 Table에 접근권한을 주는 경우

 

   - 이와같은 경우는 전제 조건이 있다.

 

   전제 조건: 접근하려는 DB가 현재의 DB와 같은 Instance에 존재해야 한다. 

 

   적용 방법:

 

   1) 접근할 DB 계정으로 접근

 

   2) GRANT SELECT ON 권한을줄테이블명 TO 권한을 받을 사용자 계정;

 

   단점: 만약 접근할 TABLE이 많을경우 굉장한 노가다 작업이 있을수도.. , 같은 Instance에서만 가능

 

  

 

 

 

2. 해당 DB에 대하여 DB LINK를 생성하는 경우

 

   접근하려는 DB가 같은 Instance이건 다른 Instance에 존재하건 상관 없음.

 

   네트워크를 통하여 해당 DB에 접근

 

   적용 방법: 

  

   1) DBA가 접근할 SOURCE DB에 create datalink 권한을 준다.

     

       sqlplus / as sysdba로 접속 ->

 

       grant create DATABASE LINK to 유저명;

 

  2) SOURCE DB로 접속

 

  3) create database link "링크명" connect to "DESTINATION DB 유저명" IDENTIFIED BY "TARGET DB 유저 비밀번호" USING "TNS상에 명기된

     서비스명";

 

  4) DB LINK 생성 확인 

 

     select * from dba_db_links; 

 

  5) DB LINK 사용법

 

     ex) select * from 테이블명@DB링크명;

 

 

 

  장점: 한번의 설정으로 사용하기 편함

 

  단점: 트렌젝션이 네트워크를 넘어 항상 발생하므로 Batch 작업같은경우 장애 발생 가능성이 증가된다.

   

 

 

반응형