데이터베이스(Database)를 운영하다 보면 데이터베이스 링크를 연결해 달라고 요청 받는 경우가 있습니다.
데이터베이스 링크라는 것은 무엇일까요?
데이터베이스 링크는 오라클(Oracle) 서버들끼리 데이터베이스 링크를 만들어서 하나의 데이터베이스처럼 사용하기 위한 방법입니다.
데이터베이스 링크에는 2가지 종류의 링크가 존재합니다.
첫번쨰는 모든 사용자가 사용할 수 있는 PUBLIC 데이터베이스 링크가 있습니다. PUBLIC 링크는 보안에는 취약하지만 편리하다는 장점이 존재합니다. 만약 PUBLIC 링크를 주지 않는다면 데이터베이스의 사용자 마다 링크를 별도로 생성해 줘야 합니다.
두번째는 특정 사용자가 사용할 수 있는 PRIVATE 데이터베이스 링크가 있습니다. PRIVATE 링크는 보안적으로 PUBLIC 링크보다 우수하다는 장점이 있지만 원격지 서버로 원결을 원하는 각각의 사용자 마다 DBLINK를 생성해줘야 생성시에도 작업이 더 필요하지만 관리적인 측면에서도 손이 많이 갑니다.
설명은 여기까지 하도록 하고 다음으로 데이터베이스 링크를 만드는 방법에 대해서 설명하도록 하겠습니다.
1. 데이터베이스 링크 생성 권한을 부여합니다.
데이터베이스 링크를 생성하기 위해서는 "DATABASE LINK" 라는 권한이 필요합니다.
오라클 SYSTME 계정으로 로그인하여 PRIVATE 권한과 PUBLIC 권한을 부여해 보겠습니다. (관리자 권한으로 들어가는 방법을 다들 아실 거라고 생각합니다.)
PRIVATE 데이터베이스 링크 생성 권한을 부여합니다.
GRANT CREATE DATABASE LINK TO TESTUSER;
PUBLIC 데이터베이스 링크 생성 권한을 부여합니다.
GRANT CREATE PUBLIC DATABASE LINK TO TESTUSER;
PRIVATE 데이터베이스 링크 생성 권한을 회수합니다.
Revoke CREATE DATABASE LINK FROM TESTUSER;
PUBLIC 데이터베이스 링크 생성 권한을 회수합니다.
GRANT DROP PUBLIC DATABASE LINK TO TESTUSER;;
2. 데이터베이스 링크를 생성합니다.
데이터베이스 링크 생성 권한을 부여 받은 TESTUSER로 접속합니다. 아래의 명령어를 실행하여 데이터베이스 링크를 생성합니다.
보안을 위해서 PRIVATE 링크를 생성하기를 원하시면 PUBLIC 을 빼시고 명령어를 실행하시면 됩니다.
CREATE PUBLIC DATABASE LINK TESTUSER_LINK CONNECT TO R_USER IDENTIFIED BY "RPassword" USING 'TestUser_TNS;
생성한 데이터베이스 링크를 삭제하는 명령어 입니다. PRIVATE 링크를 삭제시에는 PUBLIC 을 빼시고 명령어를 실행하시면 됩니다.
데이터베이스 링크 삭제 시 주의 할 점은 기존에 존재하던 DB 링크를 삭제하고 같은 이름으로 새로 DB 링크를 생성하였을 경우, 기존 DB 링크를 사용하던 프로시저나 뷰는 다시 컴파일 해줘야 합니다.
DROP PUBLIC DATABASE LINK TESTUSER_LINK;
쿼리 문장이 길어서 CREATE DATABASE LINK 명령어를 간단히 설명하겠습니다.
TESTUSER_LINK 는 쿼리 시 사용할 로컬 데이터베이스 링크명을 적습니다.
R_USER는 원격지의 오라클 데이터베이스의 로그인 계정을 넣으시면 됩니다
RPassword 는 원격지 오라클 데이터베이스 계정의 패스워드 입니다. 패스워드 작성시에는 위에서 보이는 것과 같이 "SaPassword" 쌍따움표를 양쪽에 붙여서 적어 주셔야 오류가 발생하지 않습니다.
TestUser_TNS 는 원격지 오라클 서버에 접속하기위해서 로컬 오라클 서버의 tnsnames.ora 파일에 설정되어 있는 연결정보 이름입니다. (tnsname.ora 설정은 오라클을 접속하시는 분들은 다 알 거라고 생각합니다.)
3. 생성된 데이터베이스 링크로 쿼리문을 실행합니다.
위에서 만든 링크 데이터베이스 명인 TESTUSER_LINK 를 이용해서 원격지 테이블을 조회합니다.
SELECT * FROM REMOTE_TABLE@TESTUSER_LINK;
여기 REMOTE_TABLE은 원격지 오라클 데이터베이스의 테이블 명 입니다. 데이터베이스 TESTUSER_LINK 링크를 생성할 때 유저를 넣는데 해당 유저의 권한으로 조회가 가능한 테이블만 컨트롤 할 수 있습니다.
'IT > 데이터베이스 (Database)' 카테고리의 다른 글
MSSQL 데이터 i/o 병목현상 확인하기(SQL서버 느려짐) (0) | 2020.11.02 |
---|---|
오라클(Oracle) SID 및 service name(DB_NAME) 확인 방법 (0) | 2020.11.02 |
오라클(ORACLE) 시노님(Synonym) 생성,삭제,조회 및 권한부여 (0) | 2020.11.02 |
오라클(ORAVLE) 클라이언트 설치(32bit, 64bit 클라이언트 동시 설치) (0) | 2020.11.02 |
오라클(ORACLE) 자바(JAVA)설치 및 환경변수 설정 (0) | 2020.11.02 |
댓글