【PROFILE】使用Oracle PROFILE限制會話中每一次呼叫所使用的CPU資源
關於Oracle PROFILE的詳細用法請參見文章《【PROFILE】使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索》(http://space.itpub.net/519536/viewspace-616287)。
本文給出使用PROFILE實現限制具體使用者會話中的呼叫所使用的CPU時間。
1.建立VERIFY_FUNCTION函式
sys@ora10g> @?/rdbms/admin/utlpwdmg.sql
Function created.
Profile altered.
2.建立名為SEC_PROFILE的PROFILE
sys@ora10g> CREATE PROFILE sec_profile LIMIT
2 CPU_PER_CALL 500
3 /
Profile created.
規則是:會話中一次呼叫的CPU時間不能超過5秒!
3.檢視SEC_PROFILE定義資訊
sys@ora10g> col PROFILE for a12
sys@ora10g> col RESOURCE_NAME for a25
sys@ora10g> col LIMIT for a15
sys@ora10g> select * from dba_profiles where profile = 'SEC_PROFILE' order by 1,2;
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------ ------------------------- -------- ---------------
SEC_PROFILE COMPOSITE_LIMIT KERNEL DEFAULT
SEC_PROFILE CONNECT_TIME KERNEL DEFAULT
SEC_PROFILE CPU_PER_CALL KERNEL 500
SEC_PROFILE CPU_PER_SESSION KERNEL DEFAULT
SEC_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
SEC_PROFILE IDLE_TIME KERNEL DEFAULT
SEC_PROFILE LOGICAL_READS_PER_CALL KERNEL DEFAULT
SEC_PROFILE LOGICAL_READS_PER_SESSION KERNEL DEFAULT
SEC_PROFILE PASSWORD_GRACE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_LIFE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_LOCK_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_REUSE_MAX PASSWORD DEFAULT
SEC_PROFILE PASSWORD_REUSE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
SEC_PROFILE PRIVATE_SGA KERNEL DEFAULT
SEC_PROFILE SESSIONS_PER_USER KERNEL DEFAULT
16 rows selected.
4.調整resource_limit引數使PROFILE的限制生效
sys@ora10g> show parameter resource_limit
NAME TYPE VALUE
----------------- -------------------- ------------
resource_limit boolean FALSE
sys@ora10g> alter system set resource_limit=true;
System altered.
sys@ora10g> show parameter resource_limit
NAME TYPE VALUE
----------------- -------------------- ------------
resource_limit boolean TRUE
5.將新建立的PROFILE SEC_PROFILE指定給具體使用者SEC
sys@ora10g> alter user sec profile sec_profile;
User altered.
sys@ora10g> select USERNAME,PROFILE from dba_users where USERNAME = 'SEC';
USERNAME PROFILE
------------------------------ ------------
SEC SEC_PROFILE
6.模擬長時間無法完成的呼叫
sec@ora10g> EXEC DBMS_STATS.GATHER_DATABASE_STATS;
BEGIN DBMS_STATS.GATHER_DATABASE_STATS; END;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02393: exceeded call limit on CPU usage
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_UTILITY"
ORA-06512: at "SYS.DBMS_STATS", line 13206
ORA-02393: exceeded call limit on CPU usage
ORA-06512: at "SYS.DBMS_STATS", line 13556
ORA-06512: at "SYS.DBMS_STATS", line 13700
ORA-06512: at "SYS.DBMS_STATS", line 13664
ORA-06512: at line 1
這裡分析語句在執行5秒鐘後報錯,此處的“ORA-02393: exceeded call limit on CPU usage”報錯資訊已經清楚地指出了我們所做的限制。
依此類推,SEC使用者下所有超過5秒的操作都會遭遇此類報錯。
7.小結
當遭遇由於PROFILE限制導致具體操作無法完成的問題時,我們有兩種處理方法,一種是徹底關掉PROFILE功能(最簡便的方法就是將resource_limit引數調整為FALSE);另外一種方法便是細緻的調整PROFIE定義內容到合適值。
Good luck.
secooler
11.08.04
-- The End --
本文給出使用PROFILE實現限制具體使用者會話中的呼叫所使用的CPU時間。
1.建立VERIFY_FUNCTION函式
sys@ora10g> @?/rdbms/admin/utlpwdmg.sql
Function created.
Profile altered.
2.建立名為SEC_PROFILE的PROFILE
sys@ora10g> CREATE PROFILE sec_profile LIMIT
2 CPU_PER_CALL 500
3 /
Profile created.
規則是:會話中一次呼叫的CPU時間不能超過5秒!
3.檢視SEC_PROFILE定義資訊
sys@ora10g> col PROFILE for a12
sys@ora10g> col RESOURCE_NAME for a25
sys@ora10g> col LIMIT for a15
sys@ora10g> select * from dba_profiles where profile = 'SEC_PROFILE' order by 1,2;
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------ ------------------------- -------- ---------------
SEC_PROFILE COMPOSITE_LIMIT KERNEL DEFAULT
SEC_PROFILE CONNECT_TIME KERNEL DEFAULT
SEC_PROFILE CPU_PER_CALL KERNEL 500
SEC_PROFILE CPU_PER_SESSION KERNEL DEFAULT
SEC_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
SEC_PROFILE IDLE_TIME KERNEL DEFAULT
SEC_PROFILE LOGICAL_READS_PER_CALL KERNEL DEFAULT
SEC_PROFILE LOGICAL_READS_PER_SESSION KERNEL DEFAULT
SEC_PROFILE PASSWORD_GRACE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_LIFE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_LOCK_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_REUSE_MAX PASSWORD DEFAULT
SEC_PROFILE PASSWORD_REUSE_TIME PASSWORD DEFAULT
SEC_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
SEC_PROFILE PRIVATE_SGA KERNEL DEFAULT
SEC_PROFILE SESSIONS_PER_USER KERNEL DEFAULT
16 rows selected.
4.調整resource_limit引數使PROFILE的限制生效
sys@ora10g> show parameter resource_limit
NAME TYPE VALUE
----------------- -------------------- ------------
resource_limit boolean FALSE
sys@ora10g> alter system set resource_limit=true;
System altered.
sys@ora10g> show parameter resource_limit
NAME TYPE VALUE
----------------- -------------------- ------------
resource_limit boolean TRUE
5.將新建立的PROFILE SEC_PROFILE指定給具體使用者SEC
sys@ora10g> alter user sec profile sec_profile;
User altered.
sys@ora10g> select USERNAME,PROFILE from dba_users where USERNAME = 'SEC';
USERNAME PROFILE
------------------------------ ------------
SEC SEC_PROFILE
6.模擬長時間無法完成的呼叫
sec@ora10g> EXEC DBMS_STATS.GATHER_DATABASE_STATS;
BEGIN DBMS_STATS.GATHER_DATABASE_STATS; END;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02393: exceeded call limit on CPU usage
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_UTILITY"
ORA-06512: at "SYS.DBMS_STATS", line 13206
ORA-02393: exceeded call limit on CPU usage
ORA-06512: at "SYS.DBMS_STATS", line 13556
ORA-06512: at "SYS.DBMS_STATS", line 13700
ORA-06512: at "SYS.DBMS_STATS", line 13664
ORA-06512: at line 1
這裡分析語句在執行5秒鐘後報錯,此處的“ORA-02393: exceeded call limit on CPU usage”報錯資訊已經清楚地指出了我們所做的限制。
依此類推,SEC使用者下所有超過5秒的操作都會遭遇此類報錯。
7.小結
當遭遇由於PROFILE限制導致具體操作無法完成的問題時,我們有兩種處理方法,一種是徹底關掉PROFILE功能(最簡便的方法就是將resource_limit引數調整為FALSE);另外一種方法便是細緻的調整PROFIE定義內容到合適值。
Good luck.
secooler
11.08.04
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-704216/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PROFILE】使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索Oracle密碼
- Oracle profile 使用者資源限制 說明Oracle
- 使用Oracle PROFILE控制會話空閒時間Oracle會話
- [轉載] 使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索Oracle密碼
- Oracle profile的使用Oracle
- 修改profile實現資源限制
- profile資源限制基礎記載
- ORACLE SQL PROFILE使用OracleSQL
- MySQL Profile檢視SQL的資源使用MySql
- profile中SESSIONS_PER_USER 資源限制特性測試Session
- Oracle Profile 使用詳解Oracle
- Oracle Profile 使用詳解(轉)Oracle
- sql profile的使用SQL
- 利用profile限制某使用者的連線數
- sql profile使用SQL
- Oracle限制某個使用者的連線數及PROFILE介紹Oracle
- Oracle使用者profile詳解Oracle
- Oracle 使用者 profile 屬性Oracle
- profile對密碼的限制密碼
- Oracle profileOracle
- sql_profile的使用(一)SQL
- SQL Server profile使用技巧SQLServer
- spring @profile註解的使用Spring
- 檢視SQL PROFILE使用的HINTSQL
- 西瓜狼的profile使用入門
- MAVEN中的profileMaven
- profile限制user連線session數Session
- 使用Profile標準化資料庫管理資料庫
- AIX環境oracle使用者的.profile檔案(轉)AIOracle
- Oracle OCP(29):PROFILEOracle
- oracle profile 試驗Oracle
- oracle .bash_profileOracle
- Oracle Profile學習Oracle
- profile使用者密碼管理密碼
- oracle之profile的應用Oracle
- oracle之 profile的應用Oracle
- Oracle中的使用者資源限制的幾點說明Oracle
- Docker CPU資源限制Docker