검색어 : 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://deersoul6662.tistory.com/131
'차근차근 > 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 |