http://www.gurubee.net/lecture/1560
데이터베이스 링크(Database Link)란?
데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크 상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체이다.
우선 고려되어야 하는 사항은 ORACLE INSTANCE가 두 개 이상이고, 각각의 HOST NAME과 ORACLE_SID는 다르고, NLS_CHARACTER_SET 은 동일하게 되어 있어야 한다.
만약 같은 MECHINE에서 INSTANCE의 ORACLE_SID가 같다면 TNS ERROR가 발생 한다.
미래를 위해 다른 MECHINE이라 할지라도 ORACLE_SID는 규칙에 의해 다르게 가져가는 것이 좋다.
NLS_CHARACTER_SET이 도일하게 되어 있지 않으면 DATA 입출력시 ????로 나타난다.
데이터베이스 링크로 연결되는 서버에 리스너가 꼭 띄어져있어야 한다.
문법
CREATE DATABASE LINK TO_SOURCE
CONNECT TO SYSTEM
USING '(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.30.78)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=ORACLE19)
)
)';
--이 문법 뿐만 아니라 서비스명을 사용할 수도 있다.
CREATE DATABASE LINK test_server
CONNECT TO scott IDENTIFIED BY tiger USING 'testdb';
CREATE DATABASE LINK test_server
CONNECT TO scott IDENTIFIED BY tiger USING 'testdb';
PUBLIC : 오라클 시노님과 마찬가지로 PUBLIC 옵션을 사용하면 공용 데이터베이스 링크를 생성 할 수 있다.
PUBLIC 옵션을 사용하지 않으면 링크를 생성한 계정만이 사용할 수 있다.
ORACLE DB LINK는 사용시 원격 데이터베이스에 새로운 session을 생성하게된다.
DB LINK를 사용한 session이 종료되기까지 원격지 데이터베이스의 session은 종료되지 않는다.
커넥션 풀을 사용한 3티어 구조의 Application 에서 특히 문제가 된다.
과도한 DB링크 원격 세션 해결 방법
1.DBLINK를 사용한쪽에서 정리하기(송신자)
-v$DBLINK 뷰에서 현재 오픈된 DB링크에 대한 정보를 조회
select db_link, logged_on, open_cursors,in_transaction from v$dblink;
COMMIT 이후
alter session
close database link DB링크;
COMMIT;
alter session
close database link TO_TARGET;
2.DBLINK를 받는 쪽에서 정리하기 (수신자)
Select SID,SERIAL#,USERNAME,OSUSER,MACHINE,PROGRAM From v$session WHERE TYPE='USER';
alter system kill session '54,56924' IMMEDIATE ;
'오라클 > 오라클 아키텍쳐' 카테고리의 다른 글
INDEX CLUSTERING FACTOR (0) | 2022.09.27 |
---|---|
Oracle shutdown, no mount, mount, open (0) | 2022.09.20 |
SQL문의 실행과정 (0) | 2022.07.29 |
오라클 아키택쳐 (0) | 2022.07.21 |
High Water Mark (0) | 2022.07.07 |