1️⃣ DB Link란?
DB Link는 "내가 지금 접속해 있는 DB에서 다른 DB에 접근할 수 있게 해주는 논리적인 네트워크 연결"입니다.
즉,
- 다른 DB에 직접 접속하지 않아도
- 마치 내 DB에 있는 테이블처럼
- SELECT / INSERT / UPDATE / DELETE 쿼리를 실행할 수 있습니다.
SELECT * FROM EMP@AAA;
→ 현재 DB에서 AAA라는 DB Link를 통해 원격 DB의 EMP 테이블을 조회
2️⃣ 언제 쓰는가?
사용 상황 | 예시 |
이기종 DB 연동 | A 시스템은 Tibero, B 시스템은 Oracle인 경우 |
분산 시스템 통합 조회 | 여러 DB의 정보를 한 번에 통합 조회 |
서버 간 데이터 이동 자동화 | 원격 DB에 배치로 INSERT |
3️⃣ DB Link 구성 요소
구성 요소 | 설명 | 예시 |
DB 링크 이름 | @AAA와 같이 사용 | EMP@AAA |
연결 사용자/비밀번호 | remote DB에 로그인할 계정 | remote_user / pw |
연결 대상 (HOST) | tnsnames.ora 또는 접속 문자열 | ORCL, DBTNS 등 |
4️⃣ DB Link 생성 예시
CREATE DATABASE LINK AAA
CONNECT TO remote_user IDENTIFIED BY 'remote_password'
USING 'remote_tns';
또는 TNS 없이 직접 URL 사용:
CREATE DATABASE LINK AAA
CONNECT TO remote_user IDENTIFIED BY 'remote_password'
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.10)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))';
5️⃣ 사용 예제
-- 원격 테이블 조회
SELECT * FROM EMP@AAA;
-- 원격 테이블에 INSERT
INSERT INTO EMP@AAA (ENAME, JOB) VALUES ('홍길동', '개발자');
-- 조인도 가능 (주의: 성능 저하 주의)
SELECT a.*, b.salary
FROM LOCAL_EMP a
JOIN EMP@AAA b ON a.empno = b.empno;
⚠️ 주의사항
항목 | 설명 |
보안 | 계정 정보가 링크에 하드코딩되므로 권한 관리 중요 |
트랜잭션 | 분산 트랜잭션(2PC) 고려 필요, 일부 작업은 XA 트랜잭션으로 처리됨 |
성능 | 원격 조인 시 N+1 쿼리 발생 가능 → 데이터 양 많을 경우 로컬로 가져와서 처리 권장 |
장애 대비 | 대상 DB가 다운되면 쿼리 실패. 재시도 로직 필요 |
✅ DB Link 목록 확인
-- 사용자 접근 가능 링크
SELECT * FROM ALL_DB_LINKS;
-- 전체 시스템 링크(DBA 권한)
SELECT * FROM DBA_DB_LINKS;
❓ 참고: 스키마 조회와는 어떻게 다르지?
케이스 | 의미 | 예시 |
SCHEMA_NAME.TABLE_NAME | 다른 스키마의 테이블 | HR.EMPLOYEES |
TABLE_NAME@DB_LINK | 다른 데이터베이스의 테이블 | EMP@AAA |
정리하면:
- SCHEMA_NAME. → 현재 DB 내 스키마 구분
- @DB_LINK → 다른 DB 접속
'DataBase' 카테고리의 다른 글
[오라클] REGEXP_REPLACE 함수에서의 정규표현식(Regular Expression) 사용 (0) | 2025.04.04 |
---|---|
[오라클] connect by 개념 및 사용법 (0) | 2025.04.03 |
[SQL] Direct Path I/O란? (0) | 2025.03.12 |
[SQL] B-Tree 인덱스의 탐색 방법 (0) | 2025.03.11 |
[SQL] 인덱스 기본 사용법 (0) | 2025.03.10 |