본문 바로가기
Database

Database Link

by 코딩개발 2021. 9. 1.
728x90
반응형

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://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/user-guides/database-compatibility-for-oracle-developers-guide/9.5/Database_Compatibility_for_Oracle_Developers_Guide.1.065.html

https://monkeycow.tistory.com/52

 

DataBase Link (DBLINK)

1. 개념 -  데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체 2. 사용 방법 1) 계정에 권한

monkeycow.tistory.com

https://offbyone.tistory.com/245

 

오라클 데이터베이스 링크 생성하기

오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 PUBLIC 데이터베이

offbyone.tistory.com

 

https://bebeya.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-DBLINK%EB%94%94%EB%B9%84%EB%A7%81%ED%81%AC-%EC%A1%B0%ED%9A%8C%EC%83%9D%EC%84%B1%EC%82%AD%EC%A0%9C-%EB%B0%A9%EB%B2%95

 

오라클(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

 

728x90
반응형

'Database' 카테고리의 다른 글

[iBatis/myBatis] SELECT - INSERT를 할 때  (0) 2023.07.31
SQL SELECT 쿼리 실행 순서  (0) 2021.09.02
TRUNCATE / DELETE / DROP  (0) 2021.08.31

댓글