작업하고 있는 시스템의 DB와 사내 다른 두 시스템 C, Q가 데이터를 공유해야 한다.
이중 Q는 같은 서버의 오라클 인스턴스내에 있어서 테이블스페이스명만 앞에 붙여주면 접속이 가능한데,
C는 서버가 달라서 오라클의 데이터베이스 링크 기능을 이용하기로 했다.
검색해 보니 NLS_CHARACTER_SET이 다르면 DATA 입출력시 ?????로 나타난다는데, 이건 뭐 UTF-8로 통일되어 있으므로 문제 없을듯 하다.
기본 문법
CREATE DATABASE LINK <link_name>
CONNECT TO <username> IDENTIFIED BY <userpass> USING <service_name>;
- link_name : 사용할 데이터베이스 링크명
- service_name : 네트워크 접속에 사용할 오라클 데이터베이스 네트워크 서비스명
- username, password : 접속 대상의 계정정보.
사용하는 service_name의 경우 tnsnames.ora 파일에 내용이 정의되어 잇어야 하는데, 그걸 한번에 할 수도 있다.
이부분을 한번에 하는걸 몰라가지고 삽질을 촘 ...했따.
CREATE DATABASE LINK <link_name>
CONNECT TO <username> IDENTIFIED BY <userpass> USING
'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.0.99)(PORT = 1521)))
(CONNECT_DATA = (SID = <대상의 SID>)))';
예제========================================================================
SQL> CREATE DATABASE LINK test_server
CONNECT TO scott IDENTIFIED BY tiger USING 'testdb';
-- USING다음에 testdb는 tnsnames.ora파일에 정의되어 있어야 한다.
====== tnsnames.ora =====
testdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 211.109.12.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle)
)
)
=========================
-- 데이터베이스 링크를 통한 데이터의 조회..
SQL> SELECT ename FROM emp@test_server;
--시노님을 생성해서 사용하면 더욱더 편리하게 사용 할 수 있다.
SQL> CREATE SYNONYM emplink FOR emp@test_server;
-- 시노님을 통한 조회
SQL> SELECT ename FROM emplink;
-- 데이터베이스 링크의 삭제..
SQL> DROP DATABASE LINK test_server;
정규표현식 정리 (0) | 2013.09.12 |
---|---|
vhd(VirtualPC) 파일 vdi (VirtualBox)로 변환하기! (0) | 2013.05.23 |
[오라클] 문자열 조작 함수 정리 (0) | 2013.02.07 |
Tortoise SVN 폴더별 권한 설정 (0) | 2012.07.31 |
HipHop for PHP : Move Fast 번역본 퍼옴. (0) | 2012.07.02 |