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、等待時間和排隊會話的明細。