ORACLE user profile配置/管理/維護

wh7577發表於2021-09-09

    今天在新資料庫上面建立一個USER時,要求配置資源限制,很久沒有玩ORACLE了,這個東西還玩得差不多了。

    user profile包括了兩部分內容,1.是資源的限制,但是這個預設是不生效的,要啟動(resource_limit為true)才生效。2.使用者密碼限制,這個配置後,再使用者下次登陸就生效。透過user profile配置的限制都是在使用者下次登陸時生效,對當前的session不生效。資料庫中有一個預設的profile,名字是DEFAULT,在11G前這個DEFAULT沒有任何的限制,但是從11G開始,對PASSWORD_LIFE_TIME 為180,FAILED_LOGIN_ATTEMPTS為10次。

    資源的限制包括下面幾個部分

    密碼限制由下面幾個部分組成

下面是詳細的說明

SESSIONS_PER_USER:指定每一個使用者最大可以併發sessions,如果達到了最大session後會報ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit錯誤

CPU_PER_SESSION:指定每一個SESSION總共使用CPU時間,單位是1/100秒,如果超過後會報下面的錯誤ORA-02392: exceeded session limit on CPU usage, you are being logged off

CPU_PER_CALL:每一次CALL使用的CPU時間,也就是一條SQL呼叫(a parse, execute, or fetch),單位是1/100秒,如果超過後會報ORA-02393: exceeded call limit on CPU usage。

CONNECT_TIME:限制一個session總的連線時間,單位為分鐘。如果超過最大值會報ORA-02399: exceeded maximum connect time, you are being logged off

IDLE_TIME:指定一個session空閒的時間,單位為分鐘。如果超過最大值會報ORA-02396: exceeded maximum idle time, please connect again

LOGICAL_READS_PER_SESSION:限制每一個session讀取logical塊的個數。

LOGICAL_READS_PER_CALL:限制一條SQL讀取logical塊的個數。如果超過最大值會報ORA-02395: exceeded call limit on IO usage

PRIVATE_SGA:限制一個session在sga中私有空間的分配。

COMPOSITE_LIMIT:指定一個session總的資源代價。

FAILED_LOGIN_ATTEMPTS:指定帳戶在被鎖之前可以使用錯誤密碼嘗試登陸的次數,預設是10次

PASSWORD_LIFE_TIME:指定密碼存活的天數,預設是180天。

PASSWORD_LOCK_TIME:登陸失敗過,帳戶被鎖定的天數。預設值是1天。

PASSWORD_GRACE_TIME:指密碼到期後,還可以使用多少天來登陸資料庫,預設是7天。

PASSWORD_VERIFY_FUNCTION:指定密碼驗證函式。如果為null就表示沒有。

PASSWORD_REUSE_TIME and PASSWORD_REUSE_MAX :這個兩個引數要一起配置才會生效,PASSWORD_REUSE_TIME指相同密碼被重用的間隔天數,PASSWORD_REUSE_MAX相同密碼再次被重用要求最低的密碼修改次數(不包括本次修改成重用密碼)

 

下面是開始測試:

   測試環境:OS RHEL 5.6 X86_64 DB:11.2.0.2

1,建立profile

CREATE PROFILE test_profile LIMIT 

  SESSIONS_PER_USER 100 

  CPU_PER_SESSION 500 

  CPU_PER_CALL 500 

  CONNECT_TIME 3 

  IDLE_TIME 2 

  LOGICAL_READS_PER_SESSION 1000 

  LOGICAL_READS_PER_CALL 1000 

  COMPOSITE_LIMIT DEFAULT 

  PRIVATE_SGA 2 

  FAILED_LOGIN_ATTEMPTS 2 

  PASSWORD_LIFE_TIME 0.0017 

  PASSWORD_REUSE_TIME 0.0024 

  PASSWORD_REUSE_MAX 2 

  PASSWORD_LOCK_TIME 0.0017 

  PASSWORD_GRACE_TIME 1; 

2.檢視profile的內容

SQL> set lines 100 

SQL> col profile for a15 

SQL> col resource_name for a30 

SQL> col limit for a14 

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

 

PROFILE         RESOURCE_NAME                  RESOURCE LIMIT 

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

TEST_PROFILE    COMPOSITE_LIMIT                KERNEL   DEFAULT 

TEST_PROFILE    SESSIONS_PER_USER              KERNEL   100 

TEST_PROFILE    CPU_PER_SESSION                KERNEL   500 

TEST_PROFILE    CPU_PER_CALL                   KERNEL   500 

TEST_PROFILE    LOGICAL_READS_PER_SESSION      KERNEL   1000 

TEST_PROFILE    LOGICAL_READS_PER_CALL         KERNEL   1000 

TEST_PROFILE    IDLE_TIME                      KERNEL   2 

TEST_PROFILE    CONNECT_TIME                   KERNEL   3 

TEST_PROFILE    PRIVATE_SGA                    KERNEL   2 

TEST_PROFILE    FAILED_LOGIN_ATTEMPTS          PASSWORD 2 

TEST_PROFILE    PASSWORD_LIFE_TIME             PASSWORD .0017 

 

PROFILE         RESOURCE_NAME                  RESOURCE LIMIT 

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

TEST_PROFILE    PASSWORD_REUSE_TIME            PASSWORD .0023 

TEST_PROFILE    PASSWORD_REUSE_MAX             PASSWORD 2 

TEST_PROFILE    PASSWORD_VERIFY_FUNCTION       PASSWORD DEFAULT 

TEST_PROFILE    PASSWORD_LOCK_TIME             PASSWORD .0017 

TEST_PROFILE    PASSWORD_GRACE_TIME            PASSWORD 1 

 

16 rows selected. 

3 修改/檢視某個使用者的profile

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

 

USERNAME                       PROFILE 

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

SCOTT                          DEFAULT 

 

SQL> alter user scott profile test_profile; 

 

User altered. 

 

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

 

USERNAME                       PROFILE 

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

SCOTT                          TEST_PROFILE 

4 修改profile中的資源的值。

    這裡包括兩部分的內容,1.修改成使用者指定的值,2.是修改成系統預設的值

#修改成使用者指定的值

SQL> select * from dba_profiles where profile='TEST_PROFILE' and  RESOURCE_NAME='CPU_PER_SESSION' 

  2  ; 

 

PROFILE         RESOURCE_NAME                  RESOURCE LIMIT 

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

TEST_PROFILE    CPU_PER_SESSION                KERNEL   500 

 

SQL> alter profile test_profile limit cpu_per_session 100; 

 

Profile altered. 

 

SQL> select * from dba_profiles where profile='TEST_PROFILE' and  RESOURCE_NAME='CPU_PER_SESSION'; 

 

PROFILE         RESOURCE_NAME                  RESOURCE LIMIT 

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

TEST_PROFILE    CPU_PER_SESSION                KERNEL   100 

#修改成系統預設的值

SQL> alter profile test_profile limit cpu_per_session default; 

 

Profile altered. 

 

SQL> select * from dba_profiles where profile='TEST_PROFILE' and  RESOURCE_NAME='CPU_PER_SESSION'; 

 

PROFILE         RESOURCE_NAME                  RESOURCE LIMIT 

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

TEST_PROFILE    CPU_PER_SESSION                KERNEL   DEFAULT 

5 刪除profile

當某個profile被刪除時,如果這個profile已經被分配給某個使用者,那麼我們在刪除的時候要加上cascade,並且已經被分配的使用者的profile會被自己修改成default profile。

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

 

USERNAME                       PROFILE 

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

SCOTT                          TEST_PROFILE 

 

SQL> drop profile test_profile; 

drop profile test_profile 

ERROR at line 1: 

ORA-02382: profile TEST_PROFILE has users assigned, cannot drop without CASCADE 

 

 

SQL> drop profile test_profile cascade; 

 

Profile dropped. 

 

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

 

USERNAME                       PROFILE 

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

SCOTT                          DEFAULT 

6。修改引數,使資源限制生效

這個引數預設值是false,是一個動態引數

SQL> show parameter resource_limit; 

 

NAME                                 TYPE        VALUE 

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

resource_limit                       boolean     FALSE 

SQL> alter system set resource_limit=true; 

 

System altered. 

 

user profile這個比較操作比較簡單,重要的是要理解裡面引數的含意。

下面是資源限制達到最大值後的報錯提示。

[oracle@test dbmonitor]$ sqlplus scott/oracle 

 

SQL*Plus: Release 11.2.0.2.0 Production on Sat Sep 8 21:26:38 2012 

 

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

 

ERROR: 

 

sessions_per_user 

ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit 

 

 

cpu_per_session 

ORA-02392: exceeded session limit on CPU usage, you are being logged off 

 

 

 CPU_PER_CALL; 

  

 

ORA-00604: error occurred at recursive SQL level 1 

ORA-02393: exceeded call limit on CPU usage 

 

CONNECT_TIME 

 

ORA-02399: exceeded maximum connect time, you are being logged off 

 

IDLE_TIME 

ERROR at line 1: 

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

 

logical_reads_per_session  

ERROR: 

ORA-02394: exceeded session limit on IO usage, you are being logged off 

 

LOGICAL_READS_PER_CALL 

ORA-02395: exceeded call limit on IO usage 

 

©著作權歸作者所有:來自51CTO部落格作者7343696的原創作品,如需轉載,請註明出處,否則將追究法律責任

dba user profile oraORACLE 基礎


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2821226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章