天天看點

Oracle使用Profile對使用者Session會話進行資源限制

通過profile可以對使用者會話進行一定的限制,比如IDLE時間。

将IDLE超過一定時間的會話斷開,可以減少資料庫端的會話數量,減少資源耗用。

使用這些資源限制特性,需要設定resource_limit為TRUE:

[[email protected] udump]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 07:58:21 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning and Data Mining options

SQL> show parameter resource

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

resource_limit                      boolean    TRUE

resource_manager_plan                string

該參數可以動态修改:

SQL> alter system set resource_limit=true;

System altered.

資料庫預設的PROFILE設定為:

SQL> SELECT * FROM DBA_PROFILES;

PROFILE              RESOURCE_NAME                    RESOURCE LIMIT

-------------------- -------------------------------- -------- ---------------

DEFAULT              COMPOSITE_LIMIT                  KERNEL  UNLIMITED

DEFAULT              SESSIONS_PER_USER                KERNEL  UNLIMITED

DEFAULT              CPU_PER_SESSION                  KERNEL  UNLIMITED

DEFAULT              CPU_PER_CALL                    KERNEL  UNLIMITED

DEFAULT              LOGICAL_READS_PER_SESSION        KERNEL  UNLIMITED

DEFAULT              LOGICAL_READS_PER_CALL          KERNEL  UNLIMITED

DEFAULT              IDLE_TIME                        KERNEL  UNLIMITED

DEFAULT              CONNECT_TIME                    KERNEL  UNLIMITED

DEFAULT              PRIVATE_SGA                      KERNEL  UNLIMITED

DEFAULT              FAILED_LOGIN_ATTEMPTS            PASSWORD 10

DEFAULT              PASSWORD_LIFE_TIME              PASSWORD UNLIMITED

PROFILE              RESOURCE_NAME                    RESOURCE LIMIT

-------------------- -------------------------------- -------- ---------------

DEFAULT              PASSWORD_REUSE_TIME              PASSWORD UNLIMITED

DEFAULT              PASSWORD_REUSE_MAX              PASSWORD UNLIMITED

DEFAULT              PASSWORD_VERIFY_FUNCTION        PASSWORD NULL

DEFAULT              PASSWORD_LOCK_TIME              PASSWORD UNLIMITED

DEFAULT              PASSWORD_GRACE_TIME              PASSWORD UNLIMITED

16 rows selected.

建立一個允許3分鐘IDLE時間的PROFILE:

SQL> CREATE PROFILE KILLIDLE LIMIT IDLE_TIME 3;

Profile created.

新建立PROFILE的内容:

SQL> col limit for a10

SQL> select * from dba_profiles where profile='KILLIDLE';

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

------------------------------ -------------------------------- -------- ----------

KILLIDLE                      COMPOSITE_LIMIT                  KERNEL  DEFAULT

KILLIDLE                      SESSIONS_PER_USER                KERNEL  DEFAULT

KILLIDLE                      CPU_PER_SESSION                  KERNEL  DEFAULT

KILLIDLE                      CPU_PER_CALL                    KERNEL  DEFAULT

KILLIDLE                      LOGICAL_READS_PER_SESSION        KERNEL  DEFAULT

KILLIDLE                      LOGICAL_READS_PER_CALL          KERNEL  DEFAULT

KILLIDLE                      IDLE_TIME                        KERNEL  3

KILLIDLE                      CONNECT_TIME                    KERNEL  DEFAULT

KILLIDLE                      PRIVATE_SGA                      KERNEL  DEFAULT

KILLIDLE                      FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT

KILLIDLE                      PASSWORD_LIFE_TIME              PASSWORD DEFAULT

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

------------------------------ -------------------------------- -------- ----------

KILLIDLE                      PASSWORD_REUSE_TIME              PASSWORD DEFAULT

KILLIDLE                      PASSWORD_REUSE_MAX              PASSWORD DEFAULT

KILLIDLE                      PASSWORD_VERIFY_FUNCTION        PASSWORD DEFAULT

KILLIDLE                      PASSWORD_LOCK_TIME              PASSWORD DEFAULT

KILLIDLE                      PASSWORD_GRACE_TIME              PASSWORD DEFAULT

16 rows selected.

測試使用者:

SQL> select username,profile from dba_users where username='EYGLE';

USERNAME                      PROFILE

------------------------------ --------------------

EYGLE                          DEFAULT

修改eygle使用者的PROFILE使用建立的PROFILE:

SQL> alter user eygle profile killidle;

User altered.

SQL> select username,profile from dba_users where username='EYGLE';

USERNAME                      PROFILE

------------------------------ --------------------

EYGLE                          KILLIDLE

進行連接配接測試:

[[email protected] admin]$ sqlplus eygle/[email protected]

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 08:07:13 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning and Data Mining options

SQL> select username,profile from dba_users where username='EYGLE';

USERNAME                      PROFILE

------------------------------ ------------------------------

EYGLE                          KILLIDLE

當IDLE超過限制時間時,連接配接會被斷開:

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY

-------------------

2006-10-13 08:08:41

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

*

ERROR at line 1:

ORA-02396: exceeded maximum idle time, please connect again