출처 : https://kr.forums.oracle.com/forums/thread.jspa?threadID=472033&tstart=180
PURPOSE
이렇게 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>
'::: DB ::: > Oracle' 카테고리의 다른 글
10g - DATAPUMP IMPORT 는 자동으로 USER 생성 (0) | 2011.10.18 |
---|---|
(V7.3 ~ V8.X) SESSION 별 PGA, UGA MEMORY 사용량 산출하는 스크립트 (0) | 2011.10.17 |
10g - SGA_TARGET 파라미터를 이용한 AUTOMATIC MANAGMENT SGA COMPONENTS (0) | 2011.10.17 |
10G - TEMPORARY TABLESPACES GROUP (0) | 2011.10.17 |
ORA-12012: error on auto execute of job ORA-00257: archiver error (0) | 2011.09.21 |