Oracle9i Profile_1
==================
PURPOSE
------------------
Profile을 이용한 사용자 자원 관리에 대해서 알아보자
Explanation
-------------------
(1) Profile을 사용할 수 있도록 환경 설정
SQL> connect system
Enter password:
Connected.
SQL> show parameter resource
------------------------------------ ----------- ------------------------------
enqueue_resources integer 968
resource_limit boolean FALSE
resource_manager_plan string
SQL> alter system set resource_limit = true scope=spfile;
# resource_limit를 true로 변경한 후 DB 재시작.
SQL> shutdown immediate
Database dismounted.
ORACLE instance shut down.
SQL> startup
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
------------------------------------ ----------- ------------------------------
enqueue_resources integer 968
resource_limit boolean TRUE
resource_manager_plan string
(2) Profile에는 어떤것들이 있는지 조회해 보자
SQL>desc dba_profiles;
----------------------------------------- -------- ----------------------------
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;
-------------------------------- --------
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
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 /
# 세션당 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';
------------------------------ -------------------------------- --------------
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;
--
aa
# 1분후에 다시 같은 문장을 조회해 보자.
SQL> /
*
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
# 접속후 1분간 아무런 작업이 없으면 자동으로 Session을 종료시키는지 확인.
(5) Profile의 수정
SQL> connect system
Connected.
SQL>alter profile test_profile limit
2 idle_time 10
3 /
SQL> select resource_name, limit from dba_profiles
2 where resource_name like '%IDLE_TIME%';
-------------------------------- ----------------------------------------
IDLE_TIME UNLIMITED
IDLE_TIME 10
# 변경된 Profile의 내용 확인.
Conclusion
----------
Profile을 적용하여 계정에 대한 관리에 대해서 알아보았다. 다음 Note에서 다른 부분에 대
해서 알아보겠다.
----------------------
Written by Kigook Choi
----------------------



댓글을 달아 주세요