ORACLE/ADMIN2011. 5. 2. 22:32
반응형
KeepAlive 란 Idle TCP/IP Connection 의 Time out 기능을 말한다.

TCP/IP 기반으로 remote 로 연결된 상태에서 클라이언트의 갑작스런 리부팅이나
스위치 Off 의 경우 해당 연결을 서버에서 Closing 하지 못하게 된다.
이것은 TCP/IP의 제한인 것이지 오라클의 문제가 아니다.
이 때 KeepAlive가 정확하게 configure되어 있다면 좀 더 빨리 Dead connection
을 발견하고 빨리 Closing할 것이다.
TCP/IP 에 관련된 것이므로 KeepAlive를 각 플랫폼 별로 지정하는 방법이 모두
틀리다.

예를들면 유저가 PC 에서 Unix Oracle Server로 연결 후 실수로 다음 쿼리 문을
실행했다.

SQL> select * from bigtable, hugetable, massivetable;

적게는 수십분, 많게는 몇시간이 걸릴 작업이라면 유저는 쿼리를 인터럽트하기
보다 reset 버튼을 누르게 될 것이다. 이때 클라이언트 프로세스는 없어졌지만
백그라운드 서버 프로세스는 계속 running 중일것이다.
이런 현상은 수시로 일어날 수 있다. 또한 당연한 것이다.
유저가 사용을 잘못하는 것이기 때문이다.

하지만 SQL*NET 2.1 이상에서 Dead-Connection-Detection 이라 불리는 기능을
지원한다. 이것은 곧 KeepAlive 를 지정할 수 있는 기능이다.
반드시 서버 사이드의 $ORACLE_HOME/network/admin/sqlnet.ora 파일에 다음의
파라미터를 지정해야 한다. 클라이언트에는 지정해봐야 전혀 소용이 없다.

sqlnet.expire_time = 1 (단위는 분)

Netware를 제외한 모든 Platform, Protocol에서 지원이 된다.

# Windows NT 에서 KeepAlive 를 지정하는 방법.
(타 플랫폼은 제외)

Regedt32 를 실행한다.

레지스트리에서

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

까지 이동한다.
여기서 키 추가가 아닌 값 추가를 한다.

파라미터는 KeepAliveTime (REG_DWORD) 로 입력한다.

값은 Decimal -> 180000 (for example = 3 minutes)

으로 지정한다.
반응형
Posted by [PineTree]