2006. 12. 21. 10:37 오라클
Oracle profile 기능
PURPOSE
-------
Profile을 이용한 사용자 자원 관리에 대해서 알아보자
Explanation
-----------
(1) Profile을 사용할 수 있도록 환경 설정
SQL> connect system
Enter password:
Connected.
SQL> show parameter resource
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enqueue_resources integer 968
resource_limit boolean FALSE
resource_manager_plan string
SQL> alter system set resource_limit = true scope=spfile;
System altered.
# resource_limit를 true로 변경한 후 DB 재시작.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 236000476 bytes
Fixed Size 451804 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> show parameter resource
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enqueue_resources integer 968
resource_limit boolean TRUE
resource_manager_plan string
(2) Profile에는 어떤것들이 있는지 조회해 보자
SQL> desc dba_profiles;
Name Null? Type
----------------------------------------- -------- ----------------------------
PROFILE NOT NULL VARCHAR2(30)
RESOURCE_NAME NOT NULL VARCHAR2(32)
RESOURCE_TYPE VARCHAR2(8)
LIMIT VARCHAR2(40)
SQL> select resource_name, resource_type from dba_profiles;
RESOURCE_NAME RESOURCE
-------------------------------- --------
COMPOSITE_LIMIT KERNEL
FAILED_LOGIN_ATTEMPTS PASSWORD
SESSIONS_PER_USER KERNEL
PASSWORD_LIFE_TIME PASSWORD
CPU_PER_SESSION KERNEL
PASSWORD_REUSE_TIME PASSWORD
CPU_PER_CALL KERNEL
PASSWORD_REUSE_MAX PASSWORD
LOGICAL_READS_PER_SESSION KERNEL
PASSWORD_VERIFY_FUNCTION PASSWORD
LOGICAL_READS_PER_CALL KERNEL
RESOURCE_NAME RESOURCE
-------------------------------- --------
PASSWORD_LOCK_TIME PASSWORD
IDLE_TIME KERNEL
PASSWORD_GRACE_TIME PASSWORD
CONNECT_TIME KERNEL
PRIVATE_SGA KERNEL
(3) Profile 생성
SQL> create profile test_profile limit
2 sessions_per_user 2
3 cpu_per_session unlimited
4 cpu_per_call 6000
5 idle_time 1
6 connect_time 480
7 /
Profile created.
# 세션당 2명의 유저를 허용하고 Session의 접속후 1분 동안 아무런 작업이 일어나지 않는
다면 자동으로 Session을 종료한다.
# Profile을 생성하여 사용자에게 지정하지 않으면 새롭게 생성되는 모든 사용자는 Default로
정의된 모든 Profile의 기능을 수행할수 있다.
# connect_time은 8분( 480 )동안만 Session을 사용할 수 있게 제한한다.
SQL> select profile, resource_name, limit from dba_profiles
2 where profile = 'TEST_PROFILE';
PROFILE RESOURCE_NAME LIMIT
------------------------------ -------------------------------- --------------
TEST_PROFILE COMPOSITE_LIMIT DEFAULT
TEST_PROFILE SESSIONS_PER_USER 2
TEST_PROFILE CPU_PER_SESSION UNLIMITED
TEST_PROFILE CPU_PER_CALL 6000
TEST_PROFILE LOGICAL_READS_PER_SESSION DEFAULT
TEST_PROFILE LOGICAL_READS_PER_CALL DEFAULT
TEST_PROFILE IDLE_TIME 1
TEST_PROFILE CONNECT_TIME 480
TEST_PROFILE PRIVATE_SGA DEFAULT
TEST_PROFILE FAILED_LOGIN_ATTEMPTS DEFAULT
TEST_PROFILE PASSWORD_LIFE_TIME DEFAULT
TEST_PROFILE PASSWORD_REUSE_TIME DEFAULT
TEST_PROFILE PASSWORD_REUSE_MAX DEFAULT
TEST_PROFILE PASSWORD_VERIFY_FUNCTION DEFAULT
TEST_PROFILE PASSWORD_LOCK_TIME DEFAULT
TEST_PROFILE PASSWORD_GRACE_TIME DEFAULT
# 설정한 Profile이 제대로 적용되었는지 확인.
(4) 생성한 Profile을 사용자에게 적용시키고 결과를 확인한다
SQL> alter user kigook profile test_profile;
User altered.
SQL> connect kigook/kigook
Connected.
SQL> select * from t;
ID
--
aa
# 1분후에 다시 같은 문장을 조회해 보자.
SQL> /
select * from t
*
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
# 접속후 1분간 아무런 작업이 없으면 자동으로 Session을 종료시키는지 확인.
(5) Profile의 수정
SQL> connect system
Enter password:
Connected.
SQL> alter profile test_profile limit
2 idle_time 10
3 /
Profile altered.
SQL> select resource_name, limit from dba_profiles
2 where resource_name like '%IDLE_TIME%';
RESOURCE_NAME LIMIT
-------------------------------- ----------------------------------------
IDLE_TIME UNLIMITED
IDLE_TIME 10
# 변경된 Profile의 내용 확인.