分類  >  資料庫 >

ORACLE 中 PROFILE的治理

tags:    時間:2014-05-04 12:36:04
ORACLE 中 PROFILE的管理

PROFILE的管理(資源文件)
      當需要設置資源限制時,必須設置資料庫系統啟動參數RESOURCE_LIMIT,此參數默認值為FALSE
      可以使用如下命令來啟動當前資源限制:
      alter system set RESOURCE_LIMIT=true;
      當需要以後啟動時也啟動限制,必須在init<SID>.ora中設置
      RESOURCE_LIMIT=true

建立語法:
CREATE PROFILE profile LIMIT 
{ resource_parameters | password_parameters } 
[ resource_parameters | password_parameters ]...;

{ { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME    
     | LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | COMPOSITE_LIMIT }
     { integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA { integer [ K | M ] | UNLIMITED | DEFAULT }
}

{ { FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME | PASSWORD_REUSE_TIME
     | PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME }
     { expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
}

CREATE PROFILE new_profile
     LIMIT PASSWORD_REUSE_MAX DEFAULT
           PASSWORD_REUSE_TIME UNLIMITED;

CREATE PROFILE app_user LIMIT 
      SESSIONS_PER_USER             UNLIMITED 
      CPU_PER_SESSION               UNLIMITED 
      CPU_PER_CALL                  3000 
      CONNECT_TIME                  45 
      LOGICAL_READS_PER_SESSION     DEFAULT 
      LOGICAL_READS_PER_CALL        1000 
      PRIVATE_SGA                   15K
      COMPOSITE_LIMIT               5000000; 

CREATE PROFILE app_user2 LIMIT
      FAILED_LOGIN_ATTEMPTS 5
      PASSWORD_LIFE_TIME 60
      PASSWORD_REUSE_TIME 60
      PASSWORD_REUSE_MAX UNLIMITED
      PASSWORD_VERIFY_FUNCTION verify_function
      PASSWORD_LOCK_TIME 1/24
      PASSWORD_GRACE_TIME 10;
          
一、PROFILE的管理內容:
       1、CPU的時間
       2、I/O的使用
       3、IDLE TIME(空閑時間)
       4、CONNECT TIME(連接時間)
       5、併發會話數量
       6、口令機制:

二、DEFAULT PROFILE:
       1、所有的用戶創建時都會被指定這個PROFILE
       2、DEFAULT PROFILE的內容為空,無限制

三、PROFILE的劃分:
       If a user attempts to perform an operation that exceeds the limit for other session resources, 
Oracle aborts the operation, rolls back the current statement, and immediately returns an error. 
The user can then commit or roll back the current transaction, and must then end the session. 
       that exceeds the limit(超過限制) for other session resources(範圍之外的其他資源) 
       被理解為:連接控制資源範圍之外的其他資源。
    
       當一個用戶試圖操作超過限制的資源時,Oracle終止當前操作,取消正在執行的處理,並且返回一個錯誤,
用戶可以提交或回滾當前事物,之後必須斷開會話。

       如果一個用戶試圖操作一個超出他限制的資源,Oracle將放棄這個操作,取消正在執行的處理,並立即返
回一個錯誤。這個用戶然後提交或回滾當前的處理,之後必須終止這個會話。

       如果是調用限制時,Oracle終止當前操作,取消正在執行的處理,並且返回一個錯誤,回滾整個事務。

       1、CALL級LIMITE:
          對象是語句:
          當該語句資源使用溢出時:
          A、該語句終止
          B、事物回退
          C、SESSION連接保持

       2、SESSION級LIMITE:
          對象是:整個會話過程
          溢出時:連接終止

四、如何管理一個PROFILE
       1、CREATE PROFILE
       2、分配給一個用戶
       3、象開關一樣打開限制。

五、如何創建一個PROFILE:
       1、命令:
          CREATE PROFILE 名稱 
          LIMIT 
          SESSION_PER_USER 2
          CPU_PER_SESSION 1000
          IDLE_TIME 60     用戶在資料庫終止前,可以讓連接空閑多長時間(分鐘)
          CONNECT_TIME 480
       
六、限制參數:
       0、UNLIMITED 取消資源限制
          DEFAULT      缺剩資源限制,即使用default資源限制

       1、CONNECT_TIME        :一個連接會話的最長連接時間(分鐘)
                             當用戶會話時間超過CONNECT_TIME指定的時間,Oracle將回滾當前事務,並且結束他的會話
          IDLE_TIME           :一個連接會話的最長連接時間
                             當用戶空閑時間超過IDLE_TIME指定的時間,Oracle將回滾當前事務,並且結束他的會話

       2、SESSIONS_PER_USER:一個用戶允許同時(併發)會話的總數,超過後系統禁止該用戶的後續會話,並返回錯誤:
                             ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit


       3、SESSION級LIMITE:
          CPU_PER_SESSION:定義了一個SESSION佔用的CPU的時間(1/100 秒),當達到這個限制用戶不能在此會話中執行任何操作,
                           此時必須先斷開連接,再連接才行。
          CPU_PER_CALL      :限制每次調用SQL語句期間(parse、execute、fetch)可用的CPU時間總量,單位是百分之一秒。達到限制時
                           語句以報錯結束。不同於CPU_PER_SESSION的是,沒達到CPU_PER_SESSION限制,還可以進行新的查詢。
    
       4、LOGICAL_READS_PER_SESSION: 一個會話允許讀寫的邏輯塊的數量限制
    
       5、CALL級LIMITE
          CPU_PER_CALL:每個語句佔用的CPU時間
          LOGICAL_READS_PER_CALL:一次調用的SQL期間,允許讀資料庫塊數限制
       6、PRIVATE_SGA:一個會話允許分配的最大SGA大小,使用K/M定義
          COMPOSITE_LIMIT:一個會話的資源成本限制,CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA
       
七、分配給一個用戶:
       CREATE USER 名稱。。。。。。
       PROFILE 名稱
       ALTER USER 名稱 PROFILE 名稱

八、打開資源限制:
       1、RESOURCE_LIMT:資源文件中含有
       2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
       3、默認不打開

九、修改PROFIE的內容:
       1、ALTER PROFILE 名稱參數      新值
       2、對於當前連接修改不生效。

       DROP一個PROFILE
       1、DROP PROFILE 名稱
          刪除一個新的尚未分配給用戶的PROFILE,
       2、DROP PROFILE 名稱 CASCADE
       3、注意事項
          A、一旦PROFILE被刪除,用戶被自動載入DEFAULT PROFILE
          B、對於當前連接無影響
          C、DEFAULT PROFILE不可以被刪除

十、信息獲取:
       1、DBA_USERS:
          用戶名,PROFILE 
       2、DBA_PROFILES:
          PROFILE及各種限制參數的值
          每個用戶的限制:PROFILE(關鍵欄位)

十一、PROFILE的口令機制限制
       1、限制內容
          A、限制連續多少次登錄失敗,用戶被加鎖
          B、限制口令的生命周期
          C、限制口令的使用間隔
       2、限制生效的前提:
          A、RESOURCE_LIMIT:=TRUE
          B、ORACLE\RDBMS\ADMIN\UTLPWDMG.SQL
       3、如何創建口令機制:
          CREATE PROFILE 名稱
          SESSIONS_PER_USER 
          .....
          password_life_time 30
          failed_log_attempts 3
          password_reuse_time 3
       4、參數的含義:
          A、FAILED_LOGIN_ATTEMPTS      :當連續登陸失敗次數達到該參數指定值時,用戶被加鎖;
                                       經過DBA解鎖(或PASSWORD_LOCK_TIME天)后可繼續使用
          B、PASSWORD_LIFE_TIME         :口令的有效期(天),默認為UNLIMITED
          C、PASSWORD_LOCK_TIME         :帳戶因FAILED_LOGIN_ATTEMPTS鎖定時,加鎖天數
          D、PASSWORD_GRACE_TIME        :口令修改的寬限期(天)
          E、PASSWORD_REUSE_TIME        :口令被修改後原有口令隔多少天被重新使用,默認為UNLIMITED
          F、PASSWORD_REUSE_MAX         :口令被修改後原有口令被修改多少次才允許被重新使用。
          G、PASSWORD_VERIFY_FUNCTION:口令效驗函數

十二、錯誤信息及解決方法
ORA-02390 exceeded COMPOSITE_LIMIT, you are being logged off
Cause: The COMPOSITE_LIMIT for the profile is exceeded. That is, the weighted sum of the connection time, logical reads per session, CPU usage per session, and private SGA space used during the session exceeded the limit set by the COMPOSITE_LIMIT clause set in the user profile.
Action: If this happens often, ask the database administrator to raise the COMPOSITE_LIMIT of the user profile, or determine which resource is used the most and raise the limit on that resource.

ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit
Cause: An attempt was made to exceed the maximum number of concurrent sessions allowed by the SESSIONS_PER_USER clause of the user profile.
Action: End one or more concurrent sessions or ask the database administrator to increase the SESSIONS_PER_USER limit of the user profile. For more information about SESSIONS_PER_USER and the database administrator's specific tasks of adjusting concurrent sessions, see the Oracle9i SQL Reference and the Oracle9i Database Administrator's Guide.

ORA-02392 exceeded session limit on CPU usage, you are being logged off
Cause: An attempt was made to exceed the maximum CPU usage allowed by the CPU_PER_SESSION clause of the user profile.
Action: If this happens often, ask the database administrator to increase the CPU_PER_SESSION limit of the user profile.

ORA-02393 exceeded call limit on CPU usage
Cause: An attempt was made to exceed the maximum CPU time for a call, a parse, execute, or fetch, allowed by the CPU_PER_CALL clause of the user profile.
Action: If this happens often, ask the database administrator to increase the CPU_PER_CALL limit of the user profile.

ORA-02394 exceeded session limit on IO usage, you are being logged off
Cause: An attempt was made to exceed the maximum I/O allowed by the LOGICAL_READS_PER_SESSION clause of the user profile.
Action: If this happens often, ask the database administrator to increase the LOGICAL_READS_PER_SESSION limit of the user profile.

ORA-02395 exceeded call limit on IO usage
Cause: An attempt was made to exceed the maximum I/O for a call, a parse, execute, or fetch, allowed by the LOGICAL_READS_PER_CALL clause of the user profile.
Action: If this happens often, ask the database administrator to increase the LOGICAL_READS_PER_CALL limit of the user profile.

ORA-02396 exceeded maximum idle time, please connect again
Cause: A user has exceeded the maximum time allowed to remain idle.
Action: The user must reconnect to the database.

ORA-02397 exceeded PRIVATE_SGA limit, you are being logged off
Cause: This error occurs only when using a multi-threaded server.
Action: Contact the database administrator to expand the PRIVATE_SGA limit.

 

-- 創建profile create profile <profile_name> LIMIT SESSIONS_PER_USER 1 -- 用戶最大併發會話數 CPU_PER_CALL 10 -- 單語句的最大CPU時間,超過語句會終止(單位:百分之一秒) CPU_PER_SESSION UNLIMITED -- 單會話CPU佔用無限制 LOGICAL_READS_PER_CALL 1000 -- 單語句的最大讀取數據塊數(包括讀緩存和物理磁碟),沒完成語句終止,數據回滾 LOGICAL_READS_PER_SESSION UNLIMITED -- 單語句的最大讀取數據塊數(包括讀緩存和物理磁碟),沒完成語句終止,數據回滾 CONNECT_TIME 1000 -- 連接的最長時間(單位:分鐘) IDLE_TIME 1; -- 不執行任何數據活動的情況下保持連接的最長時間(單位:分鐘)  -- 為用戶指定配置文件 alter user <user_name> profile test_profile;  --修改resource_limit為TRUE,否則資源限制無效 alter system set resource_limit = TRUE;

推薦閱讀文章

Bookmark the permalink ,來源:互聯網