본문 바로가기

오라클/오라클 아키텍쳐

oracle DBlink

http://www.gurubee.net/lecture/1560

 

https://blog.naver.com/PostView.nhn?blogId=mcseoper&logNo=221440672246&parentCategoryNo=&categoryNo=11&viewDate=&isShowPopularPosts=false&from=postView

 

데이터베이스 링크(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