【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(29):PROFILEOracle
- 靈活使用Maven ProfileMaven
- MAVEN中的profileMaven
- 使用Profile標準化資料庫管理資料庫
- 如何解讀Oracle的LOAD PROFILEOracle
- ORACLE user profile配置/管理/維護Oracle
- 使用Android Profile做效能分析及優化Android優化
- [20181119]使用sql profile優化問題.txtSQL優化
- Spring @Profile註解使用和原始碼解析Spring原始碼
- Spring入門(七):Spring Profile使用講解Spring
- [20220324]toad與sql profile使用問題.txtSQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- 使用Oracle自帶profile以及函式簡單設定Oracle使用者名稱密碼規則Oracle函式密碼
- mac-profileMac
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- Kubernetes中如何使用CPU請求和限制? - daniele
- profile的resource limits和資源計劃resource_manager_plan的limitMIT
- Oracle優化案例-coe_xfr_sql_profile固定執行計劃與刪除profile(二十五)Oracle優化SQL
- 使用maven的profile切換專案各環境的引數Maven
- 【BASIS】系統profile
- SpringBoot 教程之 profileSpring Boot
- yml檔案中使用profile配置切換多環境
- maven中profile元素的作用意義和用法Maven
- 深入理解Kubernetes資源限制:CPU
- Profile標準化資料庫管理資料庫
- Linux下/etc/profile、~/.bash_profile等幾個檔案的執行過程Linux
- Github 新玩法 -- Profile ReadMeGithub
- DevEco Studio:Profile Manager功能dev
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- 【PROFILE】Oracle11g密碼複雜度說明Oracle密碼複雜度
- CRM User Status profile中Business Transaction欄位的用途
- ubuntu系統中java -version所顯示的版本與/etc/profile中配置的$JAVA_HOME的關係UbuntuJava
- 使用V8和node輕鬆profile分析nodejs應用程式NodeJS
- SQL Profile(第三篇)SQL
- SQL Profile(第二篇)SQL
- SQL Profile(第四篇)SQL
- A valid provisioning profile for this executable was not found.
- profile builder 3漢化版UI
- shell 在/etc/profile中設定後不生效