업무를 하는데 있어 현재 관리하고 있는 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 작업같은경우 장애 발생 가능성이 증가된다.
'IT > ORACLE' 카테고리의 다른 글
ORACLE 서버 구조 - 개요(인스턴스, 데이터베이스) (0) | 2023.06.24 |
---|---|
FLASHBACK 소개 및 절차(ORACLE 데이터 복구) (0) | 2023.06.17 |
오라클 테이블 lock 현상 해결 방안(SESSION KILL) (0) | 2023.06.15 |
[ORACLE ALERT LOG 관련] Checkpoint not complete가 빈번한 현상 (0) | 2016.06.13 |