728x90
1. DB Link
- 한 데이터베이스에서 네트워크 상의 다른 데이터베이스에 접속하기 위한 설정을 해주는 Oracle 객체
- Oracle DB만 가능
- 따라서, 타 DBMS와는 Link 불가능
- 활용
- 스케쥴러를 통해 원격지에 있는 데이터를 로컬쪽에 수집
- 로컬자료를 원격지에 전송
종류
종류 | 설명 |
Public Database Link | - 보안에 취약하지만 편리함 - Public 링크를 생성하지 않는 경우, DB 사용자마다 링크를 별도로 생성해줘야 함 |
Private Database Link | - 특정 사용자만 사용 가능 - 보안적으로 Public 링크보다 우수 - 연결을 원하는 각각의 사용자마다 DB Link를 생성해줘야 해서 작업/관리 더 필요 |
설정 방법
ex. A DB에서 B DB로 DB Link를 걸고자 할 때
- 두 DB 간에 1521(기본 포트)가 열려있어야 함
- 접속 가능 여부 확인 방법
- 한 DB에서 다른 DB로 telnet IP PORT로 접속 테스트
ex. telnet 192.168.0.1 1521
- 한 DB에서 다른 DB로 telnet IP PORT로 접속 테스트
- 접속 가능 여부 확인 방법
- B DB의 서비스 네임, Link를 걸 테이블의 user/passwd를 알아야 함
- A DB 에서 DB Link를 걸기 위해 권한이 필요
- 방법
- A DB의 System 계정으로 들어가서
- A DB에 권한을 부여
GRANT CREATE PUBLIC DATABASE LINK, DROP PUBLIC DATABASE LINK TO A DB_ID
GRANT
: 권한을 부여CREATE PUBLIC DATABASE LINK
: 공용 데이터베이스 링크를 생성하는 권한- PRIVATE 링크 생성 권한을 부여하는 경우 :
CREATE DATABASE LINK
- PRIVATE 링크 생성 권한을 부여하는 경우 :
DROP PUBLIC DATABASE LINK
: 공용 데이터베이스 링크를 삭제하는 권한TO A DB_ID
: 권한을 부여할 사용자나 역할
- 권한을 부여받은 A DB_ID로 접속하여 DB Link를 생성 (PRIVATE으로 설정하는 경우 PUBLIC 제외)
CREATE PUBLIC DATABASE LINK LINK_NAME CONNECT TO B DB_ID IDENTIFIED BY "PASSWORD" USING 'B DB'
LINK_NAME
: 링크 이름B DB_ID
: B DB 접속 아이디"PASSWORD"
: B DB 접속 패스워드. 쌍따옴표 처리 반드시 필요B DB
: B DB의 TNSNAMES.ORA에 등록된 Name. 서비스 네임tnsnames.ora
B DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 211.109.12.123)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = oracle) ) )
- DB Link 걸렸는지 확인
SELECT * FROM Table@LINK_NAME
- 참고
- 모든 DB Link 확인
SELECT * FROM ALL_DB_LINKS
- PUBLIC DB Link 삭제
DROP PUBLIC DATABASE LINK TEST_LINK
- PRIVATE을 제거하는 경우 PUBLIC 제외
- 주의 : 기존에 존재하던 DB 링크를 삭제 후 같은 이름으로 새로 DB 링크를 생성하는 경우, 기존 DB 링크를 사용하던 프로시저나 뷰는 다시 컴파일 해줘야 함
- 링크 생성 권한 회수
- PUBLIC
REVOKE CREATE PUBLIC DATABASE LINK FROM A DB_ID
- PRIVATE
REVOKE CREATE DATABASE LINK FROM A DB_ID
- PUBLIC
- 모든 DB Link 확인
- 방법
2. 멀티데이터 소스
- 하나의 애플리케이션에서 복수 개의 DB에 접근하는 방식
- 권한이 부여된 각 DB 계정을 애플리케이션에 설정
- 애플리케이션 환경에 따라 적절하게 설정
참고 자료
728x90