程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 理解Oracle Resource Manager

理解Oracle Resource Manager

編輯:Oracle數據庫基礎
Oracle Resource Manager是Oracle8i開始提供的數據庫組件,目的是可以讓Oracle定義數據庫資源的利用,通過監控數據庫各Users的資源利用情況, 可以合理的調整數據庫的使用.數據庫是運行在操作系統之上的一個應用,OS為數據庫分配了資源,但OS不能細粒度的控制數據庫怎樣去使用這些 資源,ORM可以幫助DBA合理規劃這些資源.ORM的使用不會影響數據庫的性能.跟OS的資源管理相比較,ORM(Oracle Resource Manager)可以提供下列特性:

  防止資源的過度消耗:ORM可以從session級別控制CPU、Undo等系統資源的過度消耗.通過定義使用比例的方法防止CPU被某個session獨占耗光;合理調度系統資源:單獨控制各session的資源利用率,可以將寶貴的系統資源(比如CPU)按照比例分配給不同的用戶組,給一些重要的應用提供 足夠的資源,回收浪費的資源; 控制數據庫資源:通過ORM,控制數據庫的有限資源(Undo,CPU等)的分配方式; 兼容操作系統的資源調整:在一個多CPU系統中,ORM兼容OS調度分配,均衡分配CPU的使用;

  Oracle Resource Manager相關內容

  ORM由一系列的組件組成,這些組件的相互配合可以完成比較復雜的數據庫資源分配.

  Resource Plans:定義資源配置計劃,plans是一個樹形結構的組織,可以創建多個plans,但同時只能有一個plan激活被系統使用;

  Resource consumer groups:資源組定義

  Resource allocation method:每個計劃中可以定義和控制分配的數據庫資源;

  Resource plans directives:將每個計劃配置分配到相應的資源組;

  levels:定義了CPU的優先級別,目前可以支持8個級別,當上級的group沒有消耗分配的CPU,可以順延到下個level使用;

  Oracle 9i中ORM(Oracle Resource Manager)

  9i對ORM進行了增強,在8i的基礎上提供了多種可控的Oracle資源.

  CPU Method(8i提供)

  通過該方法可以對非常稀缺的CPU資源進行分配,Oracle提供了8個levels控制CPU的使用,對不同的group按照百分比分配不同比例的CPU;上一級沒有使用完的CPU 資源會自動過度到下個level的group繼續使用;

  Degree of Parallelism Limit(8i提供)

  限制每個資源組並行操作的最大並行度;

  Active Session Pool with Queuing

  控制每個resource group可以創建的最大sessions,這裡指活動的session,如果一個session進入inactive狀態,會自動退出session pool,讓一下session進入session pool,Oracle默認利用FIFO(First In First Out)的原則維護active session pool隊列.如果一個並行的會話進入隊列,Oracle會默認其多個session為一個獨立的session.

  Execution Time Limit

  有時間我們需要防止一個長查詢或大事務耗光系統資源,可通過該參數定義大型查詢或事務的運行時間,如果超過了設定的時間,Oracle會自動終止查詢或事物,以秒為單位.

  Automatic Consumer Group Switching

  8i中允許session或user可以在資源組之間手動切換,9i增強了這一功能,允許其自動切換。9i提供了兩個參數控制資源組的自動替換:

  SWITCH_GROUP:定義session或user切換的新的group;

  SWITCH_TIME:以秒為單位,定義了session或user在原group中任務多長時間後還沒結束就可以切換到新的group;

  Undo Pool

  控制每個group可用使用的最大Undo空間,如果事務執行的過程中發現Undo消耗殆盡,後續事務會持續等待直到有可用的Undo空間.

  ORM的管理

  OEM:圖形化的ORM管理接口,支持創建、監控ORM等操作;

  DBMS_RESOURCE_MANAGER:ORM的PL/SQL API;

  DBMS_RESOURCE_MANAGER_PRIVS:ORM權限管理API

  ORM相關視圖:

  DBA_RSRC_PLANS

  DBA_RSRC_CONSUMER_GROUPS

  DBA_RSRC_PLAN_DIRECTIVES

  DBA_RSRC_CONSUMER_GROUP_PRIVS

  V$RSRC_PLAN

  V$RSRC_CONSUMER_GROUP

ORM(Oracle Resource Manager)的權限

  ORM只有ADMINISTER_RESOURCE_MANAGER系統權限,不支持通過grant,revoke的管理方式;必須通過DBMS_RESOURCE_MANAGER_PRIVS進行GRANT和REVOKE;

  Oracle中使用ORM(Oracle Resource Manager)

  Oracle有一個跟ORM相關的參數:RESOURCE_MANAGER_PLAN,定義好了RESOURCE PLAN之後,必須設置此參數以啟用ORM,只有一個RESOURCE PLAN可以激活使用,此參數支持ALTER SESSION/ALTER SYSTEM動態修改.

  ORM舉例

  REM 創建測試用戶

  CREATE USER OA_USER IDENTIFIED BY iv1234

  DEFAULT TABLESPACE USERS

  TEMPORARY TABLESPACE TEMP

  ACCOUNT UNLOCK;

  CREATE USER OA_ADMIN IDENTIFIED BY iv1234

  DEFAULT TABLESPACE USERS

  TEMPORARY TABLESPACE TEMP    ACCOUNT UNLOCK;

  GRANT CONNECT TO OA_USER;

  GRANT CONNECT TO OA_ADMIN;

  –創建相關的組

  BEGIN

  --清楚ORM臨時區域

  DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

  --創建新的ORM臨時區域

  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(

  CONSUMER_GROUP  =>'OA_USER_ONLINE',

  COMMENT         =>'創建OA系統的資源管理組');

  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(

  CONSUMER_GROUP  =>'OA_USER_ADMIN',

  COMMENT         =>'OA 系統的後台服務資源組');

  --創建PLAN

  DBMS_RESOURCE_MANAGER.CREATE_PLAN(

  PLAN             =>'OA_ORM',

  COMMENT          =>'OA 數據庫資源計劃');

  --創建PLAN DIRECTIVES

  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  PLAN               =>'OA_ORM',      GROUP_OR_SUBPLAN   =>'OA_USER_ONLINE',      COMMENT            =>'oa在線用戶資源控制計劃',

  CPU_P1             =>70,

  CPU_P2             =>0,

  ACTIVE_SESS_POOL_P1 =>3000,

  PARALLEL_DEGREE_LIMIT_P1 =>2,

  MAX_EST_EXEC_TIME =>900);

  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  PLAN               =>'OA_ORM',

  GROUP_OR_SUBPLAN   =>'OA_USER_ADMIN',

  COMMENT            =>'oa在線用戶後台服務資源控制計劃',

  CPU_P1             =>10,

  CPU_P2             =>0,

  ACTIVE_SESS_POOL_P1 =>5,

  PARALLEL_DEGREE_LIMIT_P1 =>2,

  MAX_EST_EXEC_TIME =>900);

  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  PLAN               =>'OA_ORM',      GROUP_OR_SUBPLAN   =>'OTHER_GROUPS',      COMMENT            =>'其他應用的資源計劃',

  CPU_P1             =>0,

  CPU_P2             =>100,

  PARALLEL_DEGREE_LIMIT_P1 =>2);

  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;

  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

  END;

  /

–初始化OA_USER、OA_ADMIN的資源組

  BEGIN

  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(

  GRANTEE_NAME =>'OA_USER',

  CONSUMER_GROUP=>'OA_USER_ONLINE',

  GRANT_OPTION=>FALSE);

  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(

  GRANTEE_NAME =>'OA_ADMIN',

  CONSUMER_GROUP=>'OA_USER_ADMIN',

  GRANT_OPTION=>FALSE);

  DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(

  USER =>'OA_USER',

  CONSUMER_GROUP=>'OA_USER_ONLINE');

  DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(

  USER =>'OA_ADMIN',

  CONSUMER_GROUP=>'OA_USER_ADMIN');

  --允許OA_ADMIN可以替換到GROUP OA_USER_ONLINE

  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(

  GRANTEE_NAME =>'OA_ADMIN',

  CONSUMER_GROUP=>'OA_USER_ADMIN',

  GRANT_OPTION=>FALSE);

  END;

  /

  –查詢GROUP的切換

  select username,initial_rsrc_consumer_group from dba_users WHERE username IN('OA_USER','OA_ADMIN');

  USERNAME

  ------------------------------------------------------------

  INITIAL_RSRC_CONSUMER_GROUP

  ------------------------------------------------------------

  OA_ADMIN

  OA_USER_ADMIN

  OA_USER

  OA_USER_ONLINE

  –在數據庫中啟用OA_ORM plans

  ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='OA_ORM' scope=BOTH;

  System altered.

  –看看session的登錄信息

  select username,resource_consumer_group from v$session where username='OA_USER';

  USERNAME

  ------------------------------------------------------------

  RESOURCE_CONSUMER_GROUP

  ----------------------------------------------------------------

  OA_USER

  OA_USER_ONLINE

  select username,resource_consumer_group from v$session where username='OA_ADMIN';

  USERNAME

  ------------------------------------------------------------

  RESOURCE_CONSUMER_GROUP

  ----------------------------------------------------------------

  OA_ADMIN

  OA_USER_ADMIN

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved