Oracle資料庫資源管理

來源:互聯網
上載者:User

Oracle資料庫資源管理
1.瞭解Resource Manager術語

Resource Manager的3個基本結構:資源使用者組、資源計劃(和輔助計劃)、資源計劃嚮導。

使用資料庫總管可以協助管理資源 (如 CPU 和還原空間) 在使用者會話間的分配方式。繼續執行以下步驟可以配置資源管理員:

  • 使用者組 定義根據資源處理需求將使用者會話分組的使用者組。資源計劃將資源分派給使用者組。指定一些使用者和角色, 他們可以在每個使用者組中開始會話, 或者將他們的會話切換到每個使用者組。
  • 使用者組映射 定義使用者組映射規則, 此規則基於會話屬性 (例如使用者名稱, 服務名, 模組名等) 將使用者會話映射到使用者組。要解決映射衝突, 請按映射規則優先順序的順序應用映射規則。
  • 計劃 定義資源計劃, 其中包含指定將資源分派給使用者組方式的指令。例如, 對於每個計劃, 需要指定分配給每個使用者組的 CPU 資源百分比。可以選擇指定其他限制, 如使用者組中的會話可以執行或保持閒置最大時間, 或者會話在自動切換到低優先順序的使用者組之前消耗的 CPU 或 I/O 資源的最大量。
  • 設定 查看當前活動的資源計劃。啟用資源計劃。
  • 效能統計資訊 監視當前啟用的資源計劃的統計資訊。按使用者組監視 CPU 和 I/O 的使用方式, 並按使用者組監視資源管理員為 CPU 執行的約束數。
2.瞭解Resource Manager分配方法

Resource Manager可以根據以下一個或多個度量單位分配資源:

  • CPU使用率
  • 並行程度
  • 活動會話數量
  • 撤銷空間
  • CPU時限
  • 閑置時間限制
3.瞭解DEFAULT_PLAN

資源計劃resource_manager_plan參數:

SQL> show parameter resourceNAME                                 TYPE                              VALUE------------------------------------ --------------------------------- ------------------------------resource_limit                       boolean                           FALSEresource_manager_cpu_allocation      integer                           2resource_manager_plan                string--設定resource_manager_plan為DEFAULT_PLANSQL> alter system set resource_manager_plan = 'DEFAULT_PLAN';System altered.SQL> show parameter resourceNAME                                 TYPE                              VALUE------------------------------------ --------------------------------- ------------------------------resource_limit                       boolean                           FALSEresource_manager_cpu_allocation      integer                           2resource_manager_plan                string                            DEFAULT_PLAN

如果未設定resource_manager_plan參數的值,則不在執行個體中執行資源管理。

4.建立資源計劃

可以使用PL/SQL包“DBMS_RESOURCE_MANAGER”的CREATE_PLAN、UPDATE_PLAN和DELETE_PLAN來建立、更新和刪除資源計劃。

 

--為資源管理員會話建立等待區(必須要建立)exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();--建立資源計劃,名稱DEVELOPERSexecute DBMS_RESOURCE_MANAGER.CREATE_PLAN -(Plan => 'DEVELOPERS', -Comment => 'Developers, in Development database');
5.建立使用者組

建立兩個使用者組:ONLINE_DEVELOPERS和BATCH_DEVELOPERS

--建立使用者組 ONLINE_DEVELOPERSexec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -(Consumer_Group => 'ONLINE_DEVELOPERS', -Comment => 'Online developers');--建立使用者組 BATCH_DEVELOPERSexec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -(Consumer_Group => 'BATCH_DEVELOPERS', -Comment => 'Batch developers');
6.瞭解資源分派方法

建立兩個計劃指導,以便將75%的CPU資源分派給ONLINE_DEVELOPERS組,25%的CPU資源分派給BATCH_DEVELOPERS組。
另外,將ONLINE_DEVELOPERS組並行性限制為12,將BATCH_DEVELOPERS組的並行性限制為6。

--ONLINE_DEVELOPERSexec dbms_resource_manager.create_plan_directive -(Plan => 'DEVELOPERS', -Group_or_subplan => 'ONLINE_DEVELOPERS', -Comment => 'Online developers', -Cpu_p1 => 75, -Cpu_p2 => 0, -Parallel_degree_limit_p1 => 12);--BATCH_DEVELOPERSexec dbms_resource_manager.create_plan_directive -(Plan => 'DEVELOPERS', -Group_or_subplan => 'BATCH_DEVELOPERS', -Comment => 'Batch developers', -Cpu_p1 => 25, -Cpu_p2 => 0, -Parallel_degree_limit_p1 => 6);--OTHER_GROUPS(計劃中必須包含此組)exec dbms_resource_manager.create_plan_directive -(Plan => 'DEVELOPERS', -Group_or_subplan => 'OTHER_GROUPS', -Comment => 'Everyone else', -Cpu_p1 => 0, -Cpu_p2 => 100, -Parallel_degree_limit_p1 => 6);--驗證是否有效exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();--提交更改exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();--清除更改exec DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
7.分配使用者組

將使用者合理分配到使用者組中,
將JINGYU分配到Online_developers使用者組:

--賦予JINGYU切換到ONLINE_DEVELOPERS使用者組的許可權exec dbms_resource_manager_privs.grant_switch_consumer_group -(grantee_name=>'jingyu', -consumer_group=>'ONLINE_DEVELOPERS', -grant_option=>true);--將JINGYU分配到Online_developers使用者組exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP -('JINGYU','ONLINE_DEVELOPERS');

將ALFRED分配到Batch_developers使用者組:

--賦予ALFRED切換到BATCH_DEVELOPERS使用者組的許可權exec dbms_resource_manager_privs.grant_switch_consumer_group -(grantee_name=>'alfred', -consumer_group=>'BATCH_DEVELOPERS', -grant_option=>true);--賦予使用者administer_resource_manager許可權begin  dbms_resource_manager_privs.grant_system_privilege(  grantee_name=>'alfred',  privilege_name=>'administer_resource_manager',  admin_option=>true);end;/--將alfred分配到Batch_developers使用者組exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP -('alfred','BATCH_DEVELOPERS');
8.啟用資源計劃
--啟用資源計劃 DEVELOPERSalter system set resource_manager_plan = 'DEVELOPERS';
9.瞭解Resource Manager視圖
DBA_RSRC_PLANS                  -> 資源計劃和每個計劃的狀態DBA_RSRC_PLAN_DIRECTIVES        -> 資源計劃指導DBA_RSRC_CONSUMER_GROUPS        -> 資源計劃使用者組DBA_RSRC_CONSUMER_GROUP_PRIVS   -> 使用者組使用者和角色指派DBA_RSRC_GROUP_MAPPINGS         -> 會話屬性與使用者組之間的使用者組映射DBA_RSRC_MAPPING_PRIORITY       -> 資源地圖優先順序DBA_USERS                       -> INITIAL_RSRC_CONSUMER_GROUP列包含使用者的初始化使用者DBA_RSRC_MANAGER_SYSTEM_PRIVS   -> 被授予DBMS_RESOURCE_MANAGER包上的許可權的使用者

查看每個計劃的狀態和特點:

set linesize 120col plan for a30col status for a30select plan, status, num_plan_directives, mandatory from dba_rsrc_plans;status列值為PENDING說明計劃尚未經過驗證並成功提交;mandatory列值為YES說明無法刪除計劃。
10.監視Resource Manager

下面3個動態效能檢視顯示Resource Manager的統計資訊:

v$rsrc_consumer_group   -> 按使用者組列出的CPU使用率v$sysstat               -> 所有會話的CPU使用率v$sesstat               -> 按會話列出的CPU使用率

還可以通過EM的Resource Manager下statistics串連查詢CPU、I/O、等待時間和排隊會話的明細。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.