ORACLE的PROFILE限制ORACLE使用者
ORACLE的PROFILE檔案是限制資料庫教程使用者使用的資源的一種手段。如:控制session或sql能使用的CPU、控制使用者的密碼管理原則等。
資料庫建立後,系統則存在名為DEFAULT的預設PROFILE,若不做特殊指定,建立使用者時使用者預設使用的PROFILE就是DEFAULT。
查看視圖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 }
}
修改profile:alter profile [資源檔名] limit [資源名] unlimited;
如:alter profile default limit failed_login_attempts 100;
刪除PROFILE:drop profile [資源檔名] [CASCADE] ;
若建立的PROFILE已經授權給了某個使用者,使用CASCADE級聯收回相應的限制,收回限制資訊後將以系統預設的PROFILE對該使用者進行限制。
設定PROFILE參數的生效時間
1、使用者所有擁有的PROFILE中有關密碼的限制立即生效,不受限制。從這個可看出Oracle對使用者密碼的重視程度。
2、使用者所有擁有的PROFILE中有關資源的限制與resource_limit參數的設定有關,當為TRUE時生效,當為FALSE時(預設值)設定任何值都無效。
SQL> show parameter resource_limit
NAME TYPE VALUE
-------------------- ----------- -------
resource_limit boolean FALSE
其他:
1、設定SQL列顯示寬度:col 列名 for 大小;
如col username for a20;
2、許可權控制的策略在使用前一定要做好充分的測試,確保透徹理解每一條限制規則,另外將每一步的限制規則記錄到一個特定的資料庫維護手冊中。