차근차근/Oracle

다른 db 테이블 조회

예쁜꽃이피었으면 2021. 12. 21. 16:05

검색어 : db link

 

데이터베이스 링크

오라클 서버들끼지 데이터베이스 링크를 만들어서 하나의 데이터베이스처럼 사용하기 위한 방법이다.

1) public 데이터베이스 링크

- 모든 사용자가 사용할 수 있다.

- 보안에 취약하지만 편리하다

- 만일 public링크를 주지 않는다면 데이터베이스의 사용자 마다 링크를 별도로 생성해줘야 한다.

 

2) private 데이터베이스 링크

- 특정 사용자가 사용할 수 있다.

- 보안적으로 public 링크보다 우수하다.

- 원격지 서버로 연결을 원하는 각각의 사용자 마다 DBlink를 생성해줘야 한다. -> 생성 시 뿐만 아니라 관리적인 측면해서도 손이 많이 간다.

 

 

데이터베이스 링크 만들기

1. "DATABASE LINK" 권한이 필요하다

- 오라클 SYSTEM계정으로 로그인해 private 권한과 public권한을 부여 

 1) private 데이터베이스 링크 생성권한 부여

    GRANT CREATE DATABASE LINK TO TESTUSER;

 2) public 데이터베이스 링크 생성권한 부여

    GRANT CREATE PUBLIC DATABASE LINK TO TESTUSER;

 3) private 데이터베이스 링크 생성권한 회수

    REVOKE CREATE DATABASE LINK TO TESTUSER;

 4) public 데이터베이스 링크 생성권한 회수

    GRANT DROP PUBLIC DATABASE LINK TO TESTUSER;

 

2. 데이터베이스 링크를 생성한다.

- 데이터베이스 링크 생성 권한을 부여받은 TESTUSER로 접속한다.

- TESTUSER_LINK : 쿼리 시 사용할 로컬 데이터베이스 링크명을 적는다.
- R_USER : 원격지의 오라클 데이터베이스의 로그인 계정을 넣는다.
- RPassword : 원격지 오라클 데이터베이스 계정의 패스워드로 패스워드 작성 시 ""(쌍따옴표)를 붙여줘야 오류가 안생긴다.
- TestUser_TNS : 원격지 오라클 서버에 접속하기 위해서 로컬 오라클 서버의 tnsnames.ora파일에 설정되어 있는 연결정보 이름

 1) public 데이터베이스 링크 생성

    CREATE PUBLIC DATABASE LINK TESTUSER_LINK CONNECT TO R_USER IDENTIFIED BY "RPassword" USING 'TestUser_TNS';

 2) private 데이터베이스 링크 생성 

    CREATE DATABASE LINK TESTUSER_LINK CONNECT TO R_USER IDENTIFIED BY "RPassword" USING 'TestUser_TNS';

 3) 생성된 public 데이터베이스 링크를 삭제 

* 주의) 데이터베이스 링크 삭제 시 주의할 점은 기존에 존재하던 DB링크를 삭제하고 같은 이름으로 새로 DB링크를 생성하였을 경우, 기존 DB링크를 사용하던 프로시저나 뷰는다시 컴파일 해야한다.

     DROP PUBLIC DATABASE LINK TESTUSER_LINK;

 4) 생성된 private 데이터베이스 링크를 삭제

* 주의) 데이터베이스 링크 삭제 시 주의할 점은 기존에 존재하던 DB링크를 삭제하고 같은 이름으로 새로 DB링크를 생성하였을 경우, 기존 DB링크를 사용하던 프로시저나 뷰는다시 컴파일 해야한다.

    DROP DATABASE LINK TESTUSER_LINK;

 

3. 생성된 데이터베이스 링크로 쿼리문 실행

SELECT * FROM REMOTE_TABLE@TESTUSER_LINK;

위의 쿼리에서 REMOTE_TABLE는 원격지 오라클 데이터베이스의 테이블명이다.

데이터베이스 TESTUSER_LINK링크를 생성할 때 유저를 넣는데 해당 유저의 권한으로 조회가 가능한 테이블만 컨트롤 할 수 있다.

 

 

 

 

ORACLE DB LINK 조회

* 통상 DB LINK는 명칭으로 FROM과 TO를 구분해주는 경우가 많다고 한다.

SELECT * FROM DBA_DB_LINKS; -- 현재 조회한 유저가 생성한 디비링크를 조회
SELECT * FROM USER_DB_LINKS; -- 현재 DB 환경의 모든 DB링크를 조회

권한 문제인가.. 이렇게 해도 조회안됨.

 


[참조]

https://bebeya1.tistory.com/3

 

오라클 DBLINK(디비링크) 조회,생성,삭제 방법

데이터베이스(Database)를 운영하다 보면 데이터베이스 링크를 연결해 달라고 요청 받는 경우가 있습니다. 데이터베이스 링크라는 것은 무엇일까요? 데이터베이스 링크는 오라클(Oracle) 서버들끼

bebeya1.tistory.com

https://deersoul6662.tistory.com/131

 

ORACLE DB LINK 조회 및 사용

ORACLE DB LINK 조회) * 통상 DB LINK는 명칭으로 FROM과 TO를 구분해주는 경우가 많다고 한다. SELECT * FROM DBA_DB_LINKS; -- 현재 조회한 유저가 생성한 디비링크를 조회 SELECT * FROM USER_DB_LINKS; -- 현..

deersoul6662.tistory.com

 

반응형

'차근차근 > Oracle' 카테고리의 다른 글

패키지 Package  (0) 2021.12.22
트리거(TRIGGER)  (0) 2021.12.22
PL/SQL - 커서(CORSOR)  (0) 2021.12.13
PL/SQL기초  (0) 2021.12.13
PL/SQL 변수선언 %type  (0) 2021.12.13