출처  :  http://kr.forums.oracle.com/forums/thread.jspa?threadID=472033&tstart=180




제품 : ORACLE SERVER

작성날짜 : 2003-06-10



특정 DB USER의 SESSION수를 제한하는 방법 (SESSION_PER_USER)
===========================================================================================




PURPOSE
-------------------------------------------------------------------------------------------

db user별로 데이타베이스에 연결되는 session의 수를 제한할 필요가 있는 경우가 있다.
이렇게 db user별로 접속되는 session의 수를 제한하는 방법을 살펴본다.




Explanation & Example
-------------------------------------------------------------------------------------------

여기에서는 test_user라는 db user가 항상 하나의 session만 연결 가능하도록 하는 방법을 살펴본다.
특정 사용자가 session을 연결하여 사용하는 경우, 다른 사용자는 같은 test_user로는 데이타베이스로
연결을 금지하고자 하는 경우이다.

여기에서는 session의 수를 1로 제한했지만, 이 숫자는 상황에 따라 원하는 대로 지정할 수 있고,
db user명이나 profile의 이름도 상황에 맞게 사용하면 된다.


1. resource_limit 지정

먼저 다음과 같은 parameter를 $ORACLE_HOME/dbs/initSID.ora file에 지정하고, 데이타베이스를 restartup한다.

resource_limit = true

9i에서 spfile을 사용중이라면 다음과 같이 지정하고, db를 restart 할 필요가 없다.

alter system set resource_limit=true scope=both;



2. 다음과 같이 user당 session수를 제한하는 profile을 생성한다.

sqlplus system/manager
SQL>create profile single_pro limit sessions_per_user 1;

profile에는 idle_time등 다른 항목도 많지만, 여기에서는 나머지는 모두 default로 두고 sessions_per_user만 제한한다.



3. 새로 생성하는 user라면 다음과 같이 생성당시에 profile을 지정하면 된다.

SQL>create user test_user identified by test profile single_pro;
SQL>grant connect, resource to test_user;

이미 생성된 user라면 다음과 같이 alter user명령어를 이용한다.

SQL>alter user test_user profile single_pro;



4. test_user로 접속하면 다음과 같이 처음 접속은 성공하나, 처음 session이 끊기지 않은 상태에서
두번째 접속을 시도하는 경우 다음과 같은 오류가 발생한다.


Session 1: connect test_user/test -> Connected
Session 2: Connect test_user/test ->
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit




Reference Documents
-------------------------------------------------------------------------------------------

<Note:209702.1>


+ Recent posts