- 1.了解Resource Manager術語
- 2.了解Resource Manager分配方法
- 3.了解DEFAULT_PLAN
- 4.新建資源計划
- 5.創建使用者組
- 6.了解資源分配方法
- 7.分配使用者組
- 8.激活資源計划
- 9.了解Resource Manager視圖
- 10.監視Resource Manager
- Reference
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 FALSE
resource_manager_cpu_allocation integer 2
resource_manager_plan string
--設置resource_manager_plan為DEFAULT_PLAN
SQL> alter system set resource_manager_plan = 'DEFAULT_PLAN';
System altered.
SQL> show parameter resource
NAME TYPE VALUE
resource_limit boolean FALSE
resource_manager_cpu_allocation integer 2
resource_manager_plan string DEFAULT_PLAN
如果未設置resource_manager_plan參數的值,則不在實例中執行資源管理。
<h1 id="4">4.新建資源計划</h1>可以使用PL/SQL包“DBMS_RESOURCE_MANAGER”的CREATE_PLAN、UPDATE_PLAN和DELETE_PLAN來創建、更新和刪除資源計划。
--為資源管理器會話創建等待區(必須要創建)
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
--新建資源計划,名稱DEVELOPERS
execute DBMS_RESOURCE_MANAGER.CREATE_PLAN -
(Plan => 'DEVELOPERS', -
Comment => 'Developers, in Development database');
<h1 id="5">5.創建使用者組</h1>
新建兩個使用者組:ONLINE_DEVELOPERS和BATCH_DEVELOPERS
--新建使用者組 ONLINE_DEVELOPERS
exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
(Consumer_Group => 'ONLINE_DEVELOPERS', -
Comment => 'Online developers');
--新建使用者組 BATCH_DEVELOPERS
exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
(Consumer_Group => 'BATCH_DEVELOPERS', -
Comment => 'Batch developers');
<h1 id="6">6.了解資源分配方法</h1>
創建兩個計划指導,以便將75%的CPU資源分配給ONLINE_DEVELOPERS組,25%的CPU資源分配給BATCH_DEVELOPERS組。
另外,將ONLINE_DEVELOPERS組並行性限制為12,將BATCH_DEVELOPERS組的並行性限制為6。
--ONLINE_DEVELOPERS
exec 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_DEVELOPERS
exec 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();
<h1 id="7">7.分配使用者組</h1>
將用戶合理分配到使用者組中,
將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');
<h1 id="8">8.激活資源計划</h1>
--激活資源計划 DEVELOPERS
alter system set resource_manager_plan = 'DEVELOPERS';
<h1 id="9">9.了解Resource Manager視圖</h1>
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 120
col plan for a30
col status for a30
select plan, status, num_plan_directives, mandatory from dba_rsrc_plans;
status列值為PENDING說明計划尚未經過驗證並成功提交;
mandatory列值為YES說明無法刪除計划。
<h1 id="10">10.監視Resource Manager</h1>
下面3個動態性能視圖顯示Resource Manager的統計信息:
v$rsrc_consumer_group -> 按使用者組列出的CPU使用率
v$sysstat -> 所有會話的CPU使用率
v$sesstat -> 按會話列出的CPU使用率
還可以通過EM的Resource Manager下statistics連接查詢CPU、I/O、等待時間和排隊會話的明細。
<h1 id="11">Reference</h1>
- OCP 認證考試指南 (1Z0-053)[M]. 清華大學出版社, 2010.