1. 개념
- 데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체
- 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능
(참고)
PUBLIC DB 링크 : 모든 사용가 사용 가능
PRIVATE DB 링크 : 링크를 만든 계정에서만 사용 가능
2. 사용 방법
1) 계정에 권한 부여
- 공용(PUBLIC) 데이터베이스 링크 생성 권한 부여
GRANT CREATE PUBLIC DATABASE LINK TO [사용자 계정] ;
- 공용(PUBLIC) 데이터베이스 링크 삭제 권한 부여
GRANT DROP PUBLIC DATABASE LINK TO [사용자 계정] ;
- 데이터베이스 링크 생성 권한 부여
[사용자 계정]이 PRIVATE 데이터베이스 링크를 만들 수 있게 권한을 줌.
(PRIVATE 링크는 CREATE 권한만으로 생성과 삭제를 할 수 있음)
GRANT CREATE DATABASE LINK TO [사용자 계정] ;
(참고) 회수 : Revoke CREATE DATABASE LINK FROM [사용자 계정];
2) Database Link 생성
Name CREATE [PUBLIC] DATABASE LINK -- create a new database link. Synopsis CREATE [ PUBLIC ] DATABASE LINK name CONNECT TO { CURRENT_USER | username IDENTIFIED BY ‘password’} USING { libpq 'libpq_connection_string' | [ oci ] 'oracle_connection_string' } |
SQL 명령문으로 설정하는 방법
DB_LINK : DB_LINK 명
ID : DB ID
PW : DB 패스워드
HOST : 로컬PC IP 정보
PORT : 로컬PC 오라클 PORT 정보
SID : SID 명
CREATE DATABASE LINK DB_LINK
CONNECT TO ID
IDENTIFIED BY PW
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 100.100.100.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID_NAME)
)
)';
예) 이름이 TLINK 인 데이터베이스 링크 생성
CREATE DATABASE LINK TLINK CONNECT TO TEST2DBADM IDENTIFIED BY TEST2DBADM USING 'XE';
3) 확인 방법
SELECT * FROM DBA_DB_LINKS
4) 사용
SELECT COUNT(*) FROM [테이블이름]@[Database Link이름]
SELECT * FROM [원격지 테이블]@[설정한 디비링크 명칭];
SELECT * FROM 테이블명@[NAME]
(참고)
- TESTDBADM 계정으로 앞에서 만들 TLINK를 사용하여 TEST2DBADM 계정이 가진 TB_BOARD 테이블을 조회
(테이블 명 뒤에 @링크명을 붙여주면 됨)
SELECT * FROM TB_BOARD@TLINK;
- 링크를 통해 임시 테이블로 복사후 읽는 방법
- TESTDBADM 계정에서 링크를 통해 테이블을 복사합니다.
CREAT TABLE TMP_BOARED AS SELECT * FROM TB_BOARD@TLINK;
- 복사된 테이블을 읽습니다.
SELECT * FROM TMP_BOARD;
5) 삭제
DROP DATABASE LINK TLINK;
* 아래와 같은 취약점으로 DB Link 사용 지양
1. Transaction 제어의 어려움
a.Two-Phase Commit을 interupt 할 수 있는 Error 발생 가능성이 항상 존재함;
ORA-02050, ORA-02051, ORA-02054
b. 분산 Lock Lock Time-out 문제 발생 소지가 많음; ORA-02049
c. DML Lock Resource를 Clear하지 못할경우 Error 발생; ORA-01591
d. DB Link를 사용하는 Node간 Network Failure 발생 시 Applicaton 수행 불가
e. Commit, Rollback을 application이 수행하지 못할 시 manual하게 반영해주어야 하는 경우가 발생함.
f. 각 site or node간 Commit Point Site의 결정을 위한 system 부하가 증가할 수 있다.
2. Link Site or Node간 Network Traffic 증가
3. 일관성 있는 Data Interface를 관리할 수 없음.
4. DB Link를 악용한 buffer overflow 공격에 취약함 (Oracle 8i, 9i)
5. 한쪽 Site의 Oracle Server Down 시 applicaiton 수행 불가
6. SQL Tuning 이 어렵다.
참고
https://monkeycow.tistory.com/52
DataBase Link (DBLINK)
1. 개념 - 데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체 2. 사용 방법 1) 계정에 권한
monkeycow.tistory.com
https://offbyone.tistory.com/245
오라클 데이터베이스 링크 생성하기
오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 PUBLIC 데이터베이
offbyone.tistory.com
오라클(Oracle) DBLINK(디비링크) 조회,생성,삭제 방법
링크 : ORACLE -> ORACLE /*조회하기(디비링크,시노잉)*/ SQL > SELECT * FROM DBA_DB_LINKS /*DB Link를 위한 권한 부여*/ -- 공용 데이터베이스 링크생성 권한부여 SQL > GRANT CREATE PUBLIC DATA..
bebeya.tistory.com
https://blog.naver.com/leehandl/120131374672
DB Link에 대한 취약점
## DB LINK는 가장 일반적으로 사용하는 방법이지만, 아래와 같은 취약점으로 인하여 권장 되는 방식...
blog.naver.com
https://ohtanja.tistory.com/131
[Oracle] 오라클 DB LINK 설정하는 방법 tnsnames.ora과 명령어 설정
오라클에서 DB LINK 설정하는 방법 두 가지 사전조건 가상서버와 로컬PC에 오라클을 설치 로컬PC의 방화벽을 해제 특정포트를 열기 위해 인바운드 설정 Windows10 윈도우 컴퓨터 방화벽 간단히 차단
ohtanja.tistory.com
'Database' 카테고리의 다른 글
[iBatis/myBatis] SELECT - INSERT를 할 때 (0) | 2023.07.31 |
---|---|
SQL SELECT 쿼리 실행 순서 (0) | 2021.09.02 |
TRUNCATE / DELETE / DROP (0) | 2021.08.31 |
댓글