數據庫創建後,系統則存在名爲DEFAULT的默認PROFILE,若不做特殊指定,創建用戶時用戶默認使用的PROFILE就是DEFAULT。
使用profile
一:創建profile
create profile文件名limit failed_login_attempts 3 password_lock_time 2 password_life_time 10 password_grace _time 2;
alter user用戶名 profile 文件名;
注意:
用戶所有擁有的PROFILE中有關資源的限制與resource_limit參數的設置有關,當爲TRUE時生效,當爲FALSE時(默認值)設置任何值都無效。
resource_limit默認爲false.創建profile需要相應的權限,show parameter resource_limit同樣需要權限.
SQL>
show parameter resource_limit
NAME TYPE VALUE
-------------------- ----------- -------
resource_limit boolean FALSE
SQL>
alter system set resource_limit=true;
二:修改profile
如:alter profile default limit failed_login_attempts 100;
三:刪除profile
刪除PROFILE:drop profile [資源文件名] [CASCADE] ;
若創建的PROFILE已經授權給了某個用戶,使用CASCADE級聯收回相應的限制,收回限制信息後將以系統默認的PROFILE對該用戶進行限制。
已分配的profile,刪除時必須加cascade選項。
如果不刪除profile,只是取消單個用戶的profile:
SQL>alter user dinya profile default;
查詢profile
一:查看視圖dba_profiles可找出數據庫中有哪些PROFILE。
SQL> select distinct profile from dba_profiles;PROFILE
--------------------
MONITORING_PROFILE
DEFAULT
二:查看所有的PROFILE
SQL> select * from dba_profiles order by PROFILE;PROFILE RESOURCE_NAME RESOURCE LIMIT
-------------------- ------------------------------ -------- ----------
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
三.參數解釋
1、對數據庫資源做限制{ { SESSIONS_PER_USER 每個用戶名所允許的並行會話數
| CPU_PER_SESSION 一個會話一共可以使用的CPU時間,單位是百分之一秒
| CPU_PER_CALL 一次SQL調用(解析、執行和獲取)允許使用的CPU時間
| CONNECT_TIME 限制會話連接時間,單位是分鐘
| IDLE_TIME 允許空閒會話的時間,單位是分鐘
| LOGICAL_READS_PER_SESSION 限制會話對數據塊的讀取,單位是塊
| LOGICAL_READS_PER_CALL 限制SQL調用對數據塊的讀取,單位是塊
| COMPOSITE_LIMIT “組合打法”
} { integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA 限制會話在SGA中Shared Pool中私有空間的分配 { size_clause | UNLIMITED | DEFAULT}
}
2、對密碼做限制
{ { FAILED_LOGIN_ATTEMPTS 帳戶被鎖定之前可以錯誤嘗試的次數
| PASSWORD_LIFE_TIME 密碼可以被使用的天數,單位是天,默認值180天
| PASSWORD_REUSE_TIME 密碼可重用的間隔時間(結合PASSWORD_REUSE_MAX)
| PASSWORD_REUSE_MAX 密碼的最大改變次數(結合PASSWORD_REUSE_TIME)
| PASSWORD_LOCK_TIME 超過錯誤嘗試次數後,用戶被鎖定的天數,默認1天
| PASSWORD_GRACE_TIME 當密碼過期之後還有多少天可以使用原密碼
} { expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
}
1.如果用戶超過了connect_time或idle_time的會話資源限制,數據庫就回滾當前事務,並結束會話。用戶再次執行命令,數據庫則返回一個錯誤,
2.如果用戶試圖執行超過其他的會話資源限制的操作,數據庫放棄操作,回滾當前事務並立即返回錯誤。用戶之後可以提交或回滾當前事務,必須結束會話。
提示:可以將一條分成多個段,如1小時(1/24天)來限制時間,可以爲用戶指定資源限制,但是數據庫只有在參數生效後纔會執行限制。