Oracle使用者profile詳解

路途中的人2012發表於2016-12-09

一、profile功能
      oracle系統中的profile是用來對使用者所能使用的資料庫資源進行限制的。
   
    二、profile引數詳解     
             (1)檢視資料庫資源限制引數

               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

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

MONITORING_PROFILE             COMPOSITE_LIMIT                  KERNEL   DEFAULT

MONITORING_PROFILE             SESSIONS_PER_USER                KERNEL   DEFAULT

MONITORING_PROFILE             CPU_PER_SESSION                  KERNEL   DEFAULT

MONITORING_PROFILE             CPU_PER_CALL                     KERNEL   DEFAULT

MONITORING_PROFILE             LOGICAL_READS_PER_SESSION        KERNEL   DEFAULT

MONITORING_PROFILE             LOGICAL_READS_PER_CALL           KERNEL   DEFAULT

MONITORING_PROFILE             IDLE_TIME                        KERNEL   DEFAULT

MONITORING_PROFILE             CONNECT_TIME                     KERNEL   DEFAULT

MONITORING_PROFILE             PRIVATE_SGA                      KERNEL   DEFAULT

MONITORING_PROFILE             FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED

MONITORING_PROFILE             PASSWORD_LIFE_TIME               PASSWORD DEFAULT

MONITORING_PROFILE             PASSWORD_REUSE_TIME              PASSWORD DEFAULT

MONITORING_PROFILE             PASSWORD_REUSE_MAX               PASSWORD DEFAULT

MONITORING_PROFILE             PASSWORD_VERIFY_FUNCTION         PASSWORD DEFAULT

MONITORING_PROFILE             PASSWORD_LOCK_TIME               PASSWORD DEFAULT

MONITORING_PROFILE             PASSWORD_GRACE_TIME              PASSWORD DEFAULT

32 rows selected.

Unlimited:分配該profile的使用者對資源使用無限制,當使用密碼引數時,unlimited意味著沒有對引數加限制。
Default:指定為default意味著忽略對profile中的一些資源限制,Default profile初始定義對資源不限制,可以透過alter profile命令來改變。
     (2)引數詳解
       Resource_parameter部分:
 Session_per_user:指定限制使用者的併發會話的數目。
 Cpu_per_session:指定會話的CPU時間限制,單位為百分之一秒。
 Cpu_per_call:指定一次呼叫(解析、執行和提取)的CPU時間限制,單位為百分之一秒。
 Connect_time:指定會話的總的連線時間,以分鐘為單位。
 Idle_time:指定會話允許連續不活動的總的時間,以分鐘為單位,超過該時間,會話將斷開。
 Logical_reads_per_session:指定一個會話允許讀的資料塊的數目,包括從記憶體和磁碟讀的所有資料塊。
 Logical_read_per_call:指定一次執行SQL(解析、執行和提取)呼叫所允許讀的資料塊的最大數目。
 Private_sga:指定一個會話可以在共享池(SGA)中所允許分配的最大空間,以位元組為單位。
 Composite_limit:指定一個會話的總的資源消耗,以service units單位表示。Oracle資料庫以有利的方式計算cpu_per_session,                                                 connect_time,logical_reads_per_session和private-sga總的service units

Password_parameter部分:
 Failed_login_attempts:指定在帳戶被鎖定之前所允許嘗試登陸的的最大次數。
 Password_life_time:指定同一密碼所允許使用的天數。
 Password_reuse_time和password_reuse_max:這兩個引數必須互相關聯設定,password_reuse_time指定了密碼不能重用前的天                                                                             數,而password_reuse_max則指定了當前密碼被重用之前密碼改變的次數。兩個參                                                                           數都必須被設定為整數。
 Password_lock_time:指定登陸嘗試失敗次數到達後帳戶的鎖定時間,以天為單位。
 Password_grace_time:指定寬限天數,資料庫發出警告到登陸失效前的天數。如果資料庫密碼在這中間沒有被修改,則過期會失效。
 Password_verify_function:該欄位允許將複雜的PL/SQL密碼驗證指令碼做為引數傳遞到create profile語句。Oracle資料庫提供了一個預設                                               的指令碼,但是自己可以建立自己的驗證規則或使用第三方軟體驗證。 對Function名稱,指定的是密碼驗證規                                               則的名稱, 指定為Null則意味著不使用密碼驗證功能。如果為密碼引數指定表示式,則該表示式可以是任意                                                 格式,除了資料庫 量子查詢。

    三、使用profile    

         (1)建立profile,命令如下:
CREATE PROFILE profile  profile_name
LIMIT { resource_parameters
         | password_parameters
         }
           [ resource_parameters
           | password_parameters
           ]... ;
 

         (2) profile分配給使用者,命令如下:
             alter  user  user_name  profile  profile_name;

    四、舉例
     
          (1)建立一個使用者u1
       SQL> show user;
                USER is "SYS"
       SQL> create user u1 identified by u1;
                 User created.
       SQL> grant create session to u1;
                Grant succeeded.

          (2)建立profile為p1用來限制使用者嘗試登陸失敗2次後會被鎖定
                 SQL> create profile p1 limit FAILED_LOGIN_ATTEMPTS 2;
                           
Profile created.

         (3)把建立的p1分配給u1
                SQL> alter user u1 profile p1;
                     User altered.

         (4)嘗試驗證
          SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users where username='U1';
                    USERNAME   ACCOUNT_STATUS    LOCK_DATE    PROFILE
                   ---------- -------------------------------- --------- ------------------------------  //看u1使用者的狀態沒有被鎖
                         U1                     OPEN                     P1

         SQL> conn u1/a1;
                    ERROR:
                    ORA-01017: invalid username/password; logon denied
                    Warning: You are no longer connected to ORACLE.
                                                                                                                 //嘗試兩次失敗登陸
         SQL> conn u1/a1;
                    ERROR:
                     ORA-01017: invalid username/password; logon denied

        SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users where USERNAME='U1';
                 USERNAME        ACCOUNT_STATUS    LOCK_DATE     PROFILE
                 --------------- ------------------------------ -----------  ------------------- //檢視U1用的狀態,已經被鎖
                      U1              LOCKED(TIMED)        05-MAR-14             P1

      SQL> conn u1/u1;
                ERROR:                                                            //在被鎖之後,使用正確的密碼也不能再登陸
                ORA-28000: the account is locked                                                    
                 Warning: You are no longer connected to ORACLE.

        (5)解決辦法:第一種可以等Password_lock_time引數設定的天數過了之後自動解鎖,第二種需要管理員幫助,為使用者解鎖,在此選擇第二種方法                                求職管理員。
             
              SQL> show user;
                        USER is "SYS"
                SQL> alter user u1 account unlock identified by u1;          //使用者解鎖時可以使用之前的密碼
                           User altered.
               SQL> conn u1/u1;
                          Connected.
                SQL> show user;
                          USER is "U1"                       //u1使用者成功登陸


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

相關文章