Oracle users / 許可權 / grant priv

beatony發表於2011-07-29
Oracle 角色、配置檔案
分類: Oracle 其它特性 481人閱讀 評論(0) 舉報

--================================

--Oracle 角色、配置檔案

--================================

 

一、角色

    1.角色

           許可權的集合,可以分配給一個使用者或其他角色,但角色不能授予自己,也不能迴圈授予

       角色的優點

           可以先建立角色,向該角色賦予一系列許可權,然後再將該角色授予多個使用者或角色

           增加或刪除角色中的某一許可權,被授予該角色的所有使用者或角色自動地獲得新增許可權或刪除舊的許可權

           可以為角色設定密碼

          

    2.建立修改角色

       CREATE ROLE role_name

       [NOT IDENTIFIED(預設) | IDENTIFIED BY password | EXTERNALLY |GLOBALLY];

 

       注:同一個資料庫中角色名稱必須唯一,且不能使用已存在的使用者名稱稱

           不支援with grant option 為角色授予物件許可權

           支援with admin option 為角色授予系統許可權或另一個角色

           使用Enterprise Manager建立某個使用者時,該使用者被自動授予了CONNECT角色,

           即同時具有了該角色的所有許可權

          

       IDENTIFIED BY EXTERNALLY

           意味著了啟用一個角色,使用者必須是某個作業系統組的一個成員,該作業系統組的名稱應當與角色相對應。

           當希望透過作業系統對角色進行身份認證,則需要設定OS_ROLE引數為TRUE

           且當設定了使用IDENTIFIED BY EXTERNALLY身份驗證,必須在資料庫駐留的伺服器上按以下格式建立組

              ora_<SID>_[_[d][a]]

           d:指示部分指定的角色為用於使用者的預設角色

           a:指示可以使用with admin option為使用者授予部分所指定的角色      

      

       關於外部身份驗證,請參考:Oracle 密碼檔案

      

       常用的角色

          

           角色                               被授予的許可權

           DBA                                 幾乎所有系統許可權

           SELECT_CATALOG_ROLE                 資料字典上的物件許可權,未被授予任何系統許可權

           EXECUTE_CATALOG_ROLE                資料字典上的程式包、過程、函式的物件許可權

           DELETE_CATALOG_ROLE                 DELETE ON SYS.AUD$

                                          DELETE ON SYS.FGA_LOG$

           EXP_FULL_DATABASE                從資料庫中匯出資料時查詢任何表或序列、執行任何過程或型別以及修改

                                          資料字典物件的許可權

           IMP_FULL_DATABASE               執行匯入時,在資料庫內除了sys模式之外的任何模式中建立物件的許可權   

           CONNECT                             ALTER SESSION

                                          CREATE CLUSTER

                                          CREATE DATABASE LINK

                                          CREATE SEQUENCE

                                           CREATE SESSION

                                          CREATE SYNONYM

                                          CREATE TABLE

                                          CREATE VIEW

           RESOURCE                            CREATE CLUSTER

                                          CREATE INDEXTYPE

                                          CREATE OPERATOR

                                          CREATE PROCEDURE

                                          CREATE SEQUENCE

                                          CREATE TABLE

                                          CREATE TRIGGER

                                          CREATE TYPE

                                          UNLIMITED TABLESPACE (when granted)

           AQ_ADMINISTRATOR_ROLE               Advanced Queuing 物件上的物件許可權

                                          CREATE EVALUATION CONTEXT

                                          CREATE RULE

                                          CREATE RULE SET

                                          DEQUEUE ANY QUEUE

                                          ENQUEUE ANY QUEUE

                                          MANAGE ANY QUEUE

           AQ_USER_ROLE                        EXECUTE ON SYS.DBMS_AQ

                                          EXECUTE ON SYS.DBMS_AQIN

                                          EXECUTE ON SYS.DBMS_AQJMS_INTERNAL

                                          EXECUTE ON SYS.DBMS_TRANSFORM

           SCHEDULER_ADMIN                     CREATE ANY JOB

                                          CREATE JOB

                                          EXECUTE ANY CLASS

                                          EXECUTE ANY PROGRAM

                                          MANAGE SCHEDULE

                                          (使用WITH ADMIN OPTION授予上述所有許可權)

           PUBLIC                      不具有特殊的許可權,不過為public角色授予許可權時,所有使用者都會繼承該許可權

          

           --建立不要口令的角色clerk

              SQL> CREATE ROLE clerk;

 

           --建立要口令的角色sales

              SQL> CREATE ROLE sales IDENTIFIED BY money;

 

           --建立一個需要使用外部標識(如作業系統)的角色manager

              SQL> CREATE ROLE manager IDENTIFIED EXTERNALLY;

 

           --建立後檢視角色:

 

              SQL> SELECT role,password_required FROM dba_roles;

 

              ROLE                           PASSWORD

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

              CLERK                          NO

              SALES                          YES

              MANAGER                        EXTERNAL

 

       角色修改:

           ALTER ROLE rolename

           [NOT IDENTIFIED | IDENTIFIED

           BY password | EXTERNALLY | GLOBALLY];

      

           一個角色在建立後可以修改,但只能修改它的驗證方法。

      

           但只有角色是使用帶有with ADMIN option 選項的GRANT 語句授予的或者具

           ALTER ANY ROLE 系統許可權的使用者時,才可以修改這個角色

 

           --將角色clerk 的驗證方法改為使用外部(如作業系統)標識

              SQL> ALTER ROLE clerk IDENTIFIED EXTERNALLY;

 

           --將角色sales 的驗證方法改為不使用任何標識方法

              SQL> ALTER ROLE sales NOT IDENTIFIED;

 

           --將角色manager 的驗證方法改為使用口令標識,口令為vampire

              SQL> ALTER ROLE manager IDENTIFIED BY vampires;

 

           --再查詢後即可看到變化

              SELECT role,password_required FROM dba_roles

 

    3.為角色授予和取消許可權

       a.角色授權 

           為角色授予系統許可權語法

              GRANT system_priv [, system_priv, ...]

              TO role | PUBLIC [, role | PUBLIC, ...]

              [WITH ADMIN OPTION];

          

           為角色授予物件許可權語法

              GRANT ALL [PRIVILEGES] | object_priv [(column, column, ...)]

              [, object_priv [(column, column, ...(] , ...]

              ON [schema_name.]object_name

              TO role | PUBLIC [, role | PUBLIC, ...];

          

           --為角色賦予許可權(GRANT):

              SQL> show user;

              USER is "SYSTEM"

              SQL> CREATE ROLE manager;

 

              Role created.

             

              --賦予系統許可權

              SQL> GRANT CREATE TABLE,CREATE VIEW,CREATE SESSION TO manager WITH ADMIN OPTION;

 

              Grant succeeded.

             

              --賦予物件許可權

              SQL> GRANT SELECT ,INSERT ,UPDATE ON scott.emp TO manager;

 

              Grant succeeded.

 

           --檢視角色的系統許可權(role_sys_privs

              SQL> SELECT * FROM role_sys_privs WHERE role = 'MANAGER';

             

              ROLE                           PRIVILEGE            ADM

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

              MANAGER                        CREATE SESSION       YES

              MANAGER                        CREATE TABLE         YES

              MANAGER                        CREATE VIEW          YES

          

           --檢視角色的物件許可權(role_tab_privs)

              SQL> SELECT * FROM role_tab_privs WHERE role = 'MANAGER';

 

              ROLE                      OWNER                TABLE_NAME           COLUMN_NAME PRIVILEGE            GRA

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

              MANAGER                   SCOTT                EMP                              UPDATE               NO

              MANAGER                   SCOTT                EMP                              INSERT               NO

              MANAGER                   SCOTT                EMP

 

       b.取消角色所擁有的許可權

           取消角色擁有的系統許可權語法

              REVOKE system_priv | role_name [, system_priv | role_name, ...]

              FROM role | PUBLIC [,role | PUBLIC, ...];

             

           取消角色使用者的物件許可權語法

              REVOKE ALL [PRIVILEGES] | object_priv [, object_priv, ...]

              ON [schema_name.]object_name

              FROM role | PUBLIC [,role | PUBLIC, ...]

              [CASCADE CONSTRAINTS]

          

           --取消角色的系統許可權

              SQL> REVOKE CREATE VIEW FROM manager;

 

              Revoked succeeded.  

          

           --取消角色的物件許可權

              SQL> REVOKE INSERT ,UPDATE ON scott.emp FROM manager;

 

              Revoked succeeded.  

          

           --檢視被取消許可權後所剩餘的許可權的集合

              SQL> SELECT role,'System_privs' owner,privilege

                2  FROM role_sys_privs

                3  WHERE role = 'MANAGER'

                4  UNION                

                5  SELECT role,owner,privilege

                6  FROM role_tab_privs

                7  WHERE role = 'MANAGER';

 

              ROLE                           OWNER                PRIVILEGE

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

              MANAGER                        SCOTT                SELECT

              MANAGER                        System_privs         CREATE SESSION

              MANAGER                        System_privs         CREATE TABLE

          

     4.角色賦予與角色取消

     

       a.將角色賦予使用者grant):

           語法:

              GRANT role_name [, role_name, ...]

              TO user_name | role | PUBLIC [, user_name | role | PUBLIC, ...]

              [WITH ADMIN OPTION];

          

           --將角色賦予robinson且使用了WITH ADMIN OPTION

              SQL> GRANT manager TO robinson WITH ADMIN OPTION;

 

              Grant succeeded.

           --robinson有權將角色授予john,如下

              SQL> CONN robinson/lion;

              Connected.

              SQL> GRANT manager TO john;

 

              Grant succeeded.

 

           --檢視角色授予了哪些使用者(dba_role_privs)

              SQL> SELECT * FROM dba_role_privs WHERE granted_role = 'MANAGER';

 

              GRANTEE              GRANTED_ROLE                   ADM DEF

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

              SYSTEM               MANAGER                        YES YES

              JOHN                 MANAGER                        NO  YES

              ROBINSON             MANAGER                        YES YES

             

           --檢視使用者擁有哪些角色

              SQL> CONN scott/tiger;

              Connected.

              SQL> SELECT * FROM user_role_privs;

 

              USERNAME                       GRANTED_ROLE                   ADM DEF OS_

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

              SCOTT                          CONNECT                        NO  YES NO

              SCOTT                          RESOURCE                       NO  YES NO

      

           --檢視使用者擁有哪些角色(使用session_roles)

              SQL> SELECT * FROM session_roles;

 

              ROLE

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

              CONNECT

              RESOURCE

             

       b.取消使用者擁有的角色

           語法:

              REVOKE role_name [, role_name, ...]

              FROM user_name | role | PUBLIC [, user_name | role | PUBLIC, ...];

          

           --取消使用者角色

              SQL> REVOKE resource FROM scott;

 

              Revoke succeeded.

          

           --檢視resource 角色已被取消

              SQL> CONN scott/tiger;        

              Connected.

              SQL> SELECT * FROM user_role_privs;

 

              USERNAME                       GRANTED_ROLE                   ADM DEF OS_

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

              SCOTT                          CONNECT                        NO  YES NO

          

           --對於使用WITH ADMIN OPTION引數,收回robinson角色,並不影響john的級聯角色,如下:

              SQL> select * from dba_role_privs where grantee='JOHN';

 

              GRANTEE              GRANTED_ROLE                   ADM DEF

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

              JOHN                 MANAGER                        NO  YES

 

              SQL> revoke manager from robinson;

 

              Revoke succeeded.

 

              SQL> select * from dba_role_privs where grantee='JOHN';

 

              GRANTEE              GRANTED_ROLE                   ADM DEF

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

              JOHN                 MANAGER                        NO  YES

 

              SQL> select * from dba_role_privs where grantee='ROBINSON';

 

              no rows selected

             

    5.設定預設角色

       可以將多個角色授予一個使用者。預設角色是這些角色的一個子集,預設角色在使用者登入系統時

       自動啟用(開啟)。在預設情況下,所有賦予使用者的角色在使用者登入時不需要口令就被啟用。

       可以使用ALTER USER語句來限制使用者有的預設角色。

 

       語法:

           ALTER USER username DEFAULT ROLE

           role [, role, ...] | ALL [EXCEPT role [, role, ...]] | NONE;

          

       ALTER USER語句中的DEFAULT ROLE子句只適用於那些使用GRANT語句直接授予使用者的角色。

       DEFAULT ROLE子句在下列情況下是不能使用的:

           透過其它角色授予的角色

           沒有直接授予該使用者的角色

           透過外部服務(如作業系統)管理的角色

 

       --建立使用者martin並授予resource,connect角色

           SQL> CREATE USER martin IDENTIFIED BY abc;

 

           User created.

 

           SQL> GRANT RESOURCE,CONNECT TO martin;

 

           Grant succeeded.

 

           SQL> CONN martin/abc;

           Connected.

           SQL> CONN system/redhat

           Connected.

          

       --設定預設的角色為NONE後,無法登陸

           SQL> ALTER USER martin DEFAULT ROLE NONE;

 

           User altered.

 

           SQL> CONN martin/abc;

           ERROR:

           ORA-01045: user MARTIN lacks CREATE SESSION privilege; logon denied

 

 

           Warning: You are no longer connected to ORACLE.

           SQL> CONN system/redhat;

           Connected.

          

       --重置角色後可以正常登陸

           SQL> ALTER USER martin DEFAULT ROLE ALL;

 

           User altered.

 

           SQL> CONN martin/abc;

           Connected.

      

       --預設角色為除resource之外的所有角色

           SQL> ALTER USER martin DEFAULT ROLE ALL EXCEPT RESOURCE;

 

           User altered.

 

 

    6.啟用和禁止角色(SET ROLE

       語法:

           SET ROLE ALL [EXCEPT role_name [,role_name]] | NONE |

           role_name [IDENTIFIED BY password] [, role_name [IDENTIFIED BY password, ...];

      

       SQL> CONN robinson/lion

       Connected.

      

       --檢視使用者擁有的所有角色

           SQL> SELECT * FROM user_role_privs;

 

           USERNAME                       GRANTED_ROLE                   ADM DEF OS_

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

           ROBINSON                       MANAGER                        NO  YES NO

           ROBINSON                       RESOURCE                       NO  YES NO

 

       --檢視使用者擁有的所有許可權

           SQL> SELECT * FROM session_privs;

 

           PRIVILEGE

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

           CREATE SESSION

           CREATE TABLE

           CREATE CLUSTER

           CREATE SEQUENCE

           CREATE PROCEDURE

           CREATE TRIGGER

           CREATE TYPE

           CREATE OPERATOR

           CREATE INDEXTYPE

 

           9 rows selected.

      

       --禁用所有的角色後,使用者的許可權無顯示記錄

           SQL> SET ROLE NONE;

 

           Role set.

 

           SQL> SELECT * FROM session_privs;

 

           no rows selected

 

      

       --使用者重新啟用所有角色

           SQL> SET ROLE ALL  

 

           Role set.

      

       --啟用一個manager角色

           SQL> SET ROLE manager;

 

           Role set.

 

           SQL> SELECT * FROM session_roles;

 

           ROLE

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

           MANAGER

 

       在這裡不象一般的ALTER 命令,沒有用到ENABLE DISABLE 之類的選項。

 

    7.角色刪除

           DROP ROLE role_name

 

       --角色的刪除需要適當的許可權,如下提示沒有許可權刪除角色     

           SQL> SHOW USER;

           USER is "ROBINSON"

           SQL> DROP ROLE manager;

           DROP ROLE manager

           *

           ERROR at line 1:

           ORA-01031: insufficient privileges

 

       --使用system帳戶刪除角色

           SQL> CONN system/redhat;

           Connected.

           SQL> DROP ROLE manager;

      

       --帳戶robisnon唯一的角色被刪除後,再次使用該帳戶登陸已提示沒有許可權

       --即角色的刪除,原來所關聯的使用者會自動分離該角色及所有相關許可權

           SQL> CONN robinson/lion;

           ERROR:

           ORA-01045: user ROBINSON lacks CREATE SESSION privilege; logon denied

 

 

           Warning: You are no longer connected to ORACLE.

           Role dropped.

      

       關於connectresource預定義角色:

 

           connect, resoure role,包含很多的許可權的

           其中resource具有建立表,索引,檢視和其他的Oracle物件的能力,

           同時預設帶有unlimited tablespace許可權

 

           一般將connect授予所有的普通使用者

           connectresource授予開發人員

 

           oracle聲稱connectresource角色是為了與它早期的版相容而保留的,

           勸告使用者儘可能不要使用這兩個角色,以避免產生安全漏洞。

 

二、使用者配置檔案

    配置檔案實現中幾類安全控制措施:

       帳戶上鎖

       資源限制

       直接許可權

       角色許可權

 

    1.資源限制:

       利用配置檔案來實現,可用以下兩種方法之一來開啟資源限制:

           a.在初始化引數檔案中將RESOURCE_LIMIT 設為TRUE

           b.使用ALTER SYSTEM 命令將RESOURCE_LIMIT 設為TRUE

              ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

 

       配置檔案的資源限制既可加在會話一級,也可加在呼叫一級,會話級設定的資源限制是強加在每一個

       連線上的。當超過了會話級的資源限制時,ORACLE系統將返回出錯資訊。伺服器與使用者的連線斷開

       在會話級可以設定的資源限制如下:

           SESSION_PER_USER:          每個使用者所允許的並行會話數

           CPU_PER_SESSION:           總共的CPU時間,其單位是%s

           IDLE_TIME:                 沒有活動的時間,單位是分鐘

           CONNECT_TIME:              連線時間

           LOGICAL_READS_PER_SESSION:  物理和邏輯讀的資料塊數。

 

       建立資源限制檔案:

           CREATE PROFILE profile_name LIMIT

              [SESSION_PER_USER max_value]

              [CPU_PER_SESSION max_value]

              [CPU_PER_CALL max_value]

              [CONNECT_TIME max_value]

              [IDLE_TIME max_value]

              [LOGICAL_READS_PER_SESSION max_value]

              [LOGICAL_READS_PER_CALL max_value]

 

       --演示建立資源限制配置檔案

           SQL> CREATE PROFILE luckly_prof LIMIT

              2  SESSIONS_PER_USER 8                  --同一使用者可開啟個會話(連線)

              3  CPU_PER_SESSION 168000               --每個會話最多可以使用的CPU時間為個%s

              4  LOGICAL_READS_PER_SESSION 21888      --每個會話最多可以讀個資料塊

              5  CONNECT_TIME 180                     --每個會話的連線時間最多為分鐘

              6  IDLE_TIME 10 ;                       --每個會話的沒有活動時間不能超分鐘

 

           Profile created.

      

       --檢視剛剛建立的配置檔案

           SQL> SELECT * FROM dba_profiles WHERE profile = 'LUCKLY_PROF';

 

           PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

           LUCKLY_PROF                    COMPOSITE_LIMIT                  KERNEL   DEFAULT

           LUCKLY_PROF                    SESSIONS_PER_USER                KERNEL   8

           LUCKLY_PROF                    CPU_PER_SESSION                  KERNEL   168000

           LUCKLY_PROF                    CPU_PER_CALL                     KERNEL   DEFAULT

           LUCKLY_PROF                    LOGICAL_READS_PER_SESSION        KERNEL   21888

           LUCKLY_PROF                    LOGICAL_READS_PER_CALL           KERNEL   DEFAULT

           LUCKLY_PROF                    IDLE_TIME                        KERNEL   10

           LUCKLY_PROF                    CONNECT_TIME                     KERNEL   180

           LUCKLY_PROF                    PRIVATE_SGA                      KERNEL   DEFAULT

           LUCKLY_PROF                    FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_LIFE_TIME               PASSWORD DEFAULT

 

           PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

           LUCKLY_PROF                    PASSWORD_REUSE_TIME              PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_REUSE_MAX               PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_VERIFY_FUNCTION         PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_LOCK_TIME               PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_GRACE_TIME              PASSWORD DEFAULT

      

    2.口令限制

       FAILED_LOGIN_ATTEMPTS    帳戶被鎖之前可以嘗試登入失敗的次數

       PASSWORD_LOCK_TIME       嘗試指定次數失敗後,賬戶被鎖的天數

 

       PASSWORD_LIFE_TIME       口令的生命週期(可使用的天數)

       PASSWORD_GRACE_TIME      口令過期之後第一次成功地使用原口令登入後要改變口令的寬限天數

 

       PASSWORD_REUSE_TIME 在一個口令可以重用之前的天數

       PASSWORD_REUSE_MAX       在一個口令可以重用之前的最大變化數

 

       PASSWORD_VERIFY_FUNCTION    在一個新的口令賦予一個使用者之前,要驗證口令的複雜性是否滿足

                     安全要求的一個PL/SQL函式(該函式要sys使用者執行utlpwdmg.sql

                     指令碼來生成)

 

       在執行utlpwdmg.sql指令碼檔案期間,ORACLE伺服器將建立VERIFY_FUNCTION函式,並且使用如下

       ALTER PROFILE 命令來修改luckly_prof概要檔案:

 

       --luckly_prof配置檔案增加口令限制

           SQL> ALTER PROFILE luckly_prof LIMIT

           2  PASSWORD_LIFE_TIME 60

           3  PASSWORD_GRACE_TIME 10

           4  PASSWORD_REUSE_TIME 1800

           5  PASSWORD_REUSE_MAX UNLIMITED

           6  FAILED_LOGIN_ATTEMPTS 3

           7  PASSWORD_LOCK_TIME 1/1440;

 

           Profile altered.

      

       之後,ORACLE伺服器就要對所有使用者提供的口令進行如下檢查:

           口令的最小長度為個字元

           口令不應該與使用者名稱相同

           口令應該包含至少一個字元、一個數字和一個特殊字元

           口令應該至少有個字母與以前的口令不同。除了ORACLE提供的預設複雜性檢驗函式外,

       資料庫管理員也可以自己寫一個PL/SQL函式進行口令的複雜性檢驗。

 

       使用者提供的口令函式一定要在SYS模式下建立並且必須使用以下函式說明(即函式介面)

           function_name (userid_parameter IN VARCHAR2(30),

                  password_parmeter IN VARCHAR2(30),

                  old_password_parmeter IN VARCHAR2(30)

                  RETURN BOOLEAN

 

       建立口令限制的概要檔案:

           同建立資源限制檔案一樣,只要把口令限制方面的內容加到profile_name中即可。

           如:

           CREATE PROFILE unluck_prof LIMIT

           FAILED_LOGIN_ATTEMPTS 7

           PASSWORD_LOCK_TIME UNLIMITED

           PASSWORD_LIFE_TIME 44

           PASSWORD_REUSE_TIME 24

           PASSWORD_GRACE_TIME 4;

 

 

       --檢視資源限制(dba_profiles)

           SQL> SELECT * FROM dba_profiles WHERE profile = 'LUCKLY_PROF';

 

           PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

           LUCKLY_PROF                    COMPOSITE_LIMIT                  KERNEL   DEFAULT

           LUCKLY_PROF                    SESSIONS_PER_USER                KERNEL   8

           LUCKLY_PROF                    CPU_PER_SESSION                  KERNEL   168000

           LUCKLY_PROF                    CPU_PER_CALL                     KERNEL   DEFAULT

           LUCKLY_PROF                    LOGICAL_READS_PER_SESSION        KERNEL   21888

           LUCKLY_PROF                    LOGICAL_READS_PER_CALL           KERNEL   DEFAULT

           LUCKLY_PROF                    IDLE_TIME                        KERNEL   10

           LUCKLY_PROF                    CONNECT_TIME                     KERNEL   180

           LUCKLY_PROF                    PRIVATE_SGA                      KERNEL   DEFAULT

           LUCKLY_PROF                    FAILED_LOGIN_ATTEMPTS            PASSWORD 3

           LUCKLY_PROF                    PASSWORD_LIFE_TIME               PASSWORD 60

 

           PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

           LUCKLY_PROF                    PASSWORD_REUSE_TIME              PASSWORD 1800

           LUCKLY_PROF                    PASSWORD_REUSE_MAX               PASSWORD UNLIMITED

           LUCKLY_PROF                    PASSWORD_VERIFY_FUNCTION         PASSWORD DEFAULT

           LUCKLY_PROF                    PASSWORD_LOCK_TIME               PASSWORD .0006

           LUCKLY_PROF                    PASSWORD_GRACE_TIME              PASSWORD 10

 

           16 rows selected.       

 

           RESOURCE_TYPEKERNEL表示這是一個資源限制,為PASSWORD表示為口令限制。

 

    3.修改配置檔案:

       ALTER PROFILE profile_name LIMIT

           ......

 

       例:ALTER PROFILE luck_prof LIMIT

           IDLE_TIME 40

 

    4.PROFILE賦予使用者:

       CREATE USER user_name [PROFILE { profile_name | DEFAULT }]

       ALTER USER user_name [PROFILE { profile_name | DEFAULT }]

      

       請參照:Oracle 使用者、物件許可權、系統許可權        

      

       SQL> CREATE USER andy IDENTIFIED BY oracle PROFILE luckly_prof;

 

       User created.

 

       SQL> ALTER USER robinson PROFILE luckly_prof;

 

       User altered.    

      

    5.刪除配置檔案:

       DROP PROFILE profile_name [CASCADE]

 

       如果一個概要檔案已經賦予了使用者,那麼在DROP PROFILE時要用CASCADE

       無法刪除DEFAULT配置檔案,也無法刪除MONITORING_PROFILE配置檔案

   

       --已被賦予給用的profile刪除時需要使用cascade,如下:

           SQL> DROP PROFILE luckly_prof;

           DROP PROFILE luckly_prof

           *

           ERROR at line 1:

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

 

 

           SQL> DROP PROFILE luckly_prof CASCADE;

 

           Profile dropped.

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

相關文章