'세션'에 해당되는 글 1건

  1. 2007/01/24 Profile을 이용한 사용자 자원 관리
출처 : http://database.sarang.net/?inc=read&am ··· page%3D1

Oracle9i Profile_1
==================
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
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의 내용 확인.

Conclusion
----------

Profile을 적용하여 계정에 대한 관리에 대해서 알아보았다. 다음 Note에서 다른 부분에 대
해서 알아보겠다.

----------------------
Written by Kigook Choi
----------------------

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/01/24 11:44 2007/01/24 11:44