Oracle限制某個使用者的連線數及PROFILE介紹

kakaxi9521發表於2016-12-08


今天有同事打電話來,說要限制一個使用者的連結數,可以透過ORACLE的PROFILE檔案來實現

1.     檢視resource_limit引數:

SQL> show parameter resource_limit

如果為FALSE,設定 RESOURCE_LIMIT引數為TRUE,即開啟資源限制:

alter system set resource_limit =TRUE; 

該改變對密碼資源無效,密碼資源總是可用的

2.     建立PROFILE

SQL>create  profile sess limit sessions_per_user 20; --最大連線數限制為20

3.     將PROFILE指定給使用者:

SQL>alter user ydgwb profile sess;

 

附:PROFILE介紹

ORACLE的PROFILE檔案是限制資料庫使用者使用資源的一種手段。

如:控制sessionsql能使用的CPU、控制使用者的密碼管理策略等。資料庫建立後,系統則存在名為DEFAULT的預設PROFILE,若不做特殊指定,建立使用者時使用者預設使用的PROFILE就是DEFAULT

1.     檢視檢視dba_profiles可找出資料庫中有哪些PROFILE

SQL> select distinct profile from dba_profiles;

2.     檢視所有的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 限制會話在SGAShared 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 }

}

修改profilealter profile [資原始檔名] limit [資源名] unlimited;

如:alter profile default limit failed_login_attempts 100;

刪除PROFILEdrop 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

以上PROFILE介紹部分內容摘自百度文庫


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

相關文章