Oracle 資源管理(resource manager)
假如管理一下具有如下問題的產品資料庫:
後臺批作業佔用了大量的資源,將會阻礙了其他要同時執行的更重要的作業。
如要排程大型作業,但不能預計它們何時才能完成。
作業的優先次序沒有得到區分,而致使重要的作業不能預先完成。
某些使用者使用過量的CPU時間,從而導致總體資源缺乏,這時,不得不結束其會話。
有些使用者在操作中使用非常高的並行度,這會降低系統的整體效能。
所有這些問題都源於DBA不能夠在競爭中有效地分配有限的資源,這時,很可能會收到憤怒的客戶電話。
針對於這些問題,我們可以使用 Oracle database resource manager 來進行管理。
下面我們以例子的形式來介紹Oracle資源管理(resource manager)的使用。
一、授權
對於DBA,已經具有執行dbms_resource_manager程式包下的所有過程的許可權,但對於其他使用者,需要授予名為
administer_resource_manager的系統許可權,以便使用Oracle resource manager。如下:
SQL> begin
2 dbms_resource_manager_privs.grant_system_privilege(
3 grantee_name=>'djp01',
4 privilege_name=>'administer_resource_manager',
5 admin_option=>true);
6 end;
7 /
PL/SQL procedure successfully completed.
SQL>
SQL> begin
2 dbms_resource_manager_privs.grant_system_privilege(
3 grantee_name=>'imadmin',
4 privilege_name=>'administer_resource_manager',
5 admin_option=>true);
6 end;
7 /
PL/SQL procedure successfully completed.
SQL>
說明:我們利用dbms_resource_manager_privs.包中的gratn_system_privilege過程為使用者djp01和imadmin授予administer_resource_manager許可權。
二、建立未決區
未決區是建立與資源消費組,資源計劃,資源指示的臨時工作區。建立如下:
SQL> exec dbms_resource_manager.create_pending_area;
PL/SQL procedure successfully completed.
SQL>
三、建立資源消費組
資源消費組用來根據資源需求將類似的使用者放到一起。例子如下:
SQL> begin
2 dbms_resource_manager.create_consumer_group(
3 consumer_group=>'app',
4 comment=>'app user');
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>
SQL> begin
2 dbms_resource_manager.create_consumer_group(
3 consumer_group=>'admin',
4 comment=>'user admin system');
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>
說明:consuber_group用來指定資源消費組名,connent用來給資源消費組新增註釋。還有一些預設的引數,如CPU_MTH,該引數有兩個值為:run_to_completion和round_robin(預設)。run_to_completion方法為優先排程那些佔用較長時間的會話,
round_robin是使用一個迴圈排程系統。對於上述,我們使用預設的CPU排程方法建立消費組app和admin。我們可以用如下的資料字典檢視:
SQL> select consumer_group,cpu_method,mgmt_method
2 from dba_rsrc_consumer_groups
3 where consumer_group in (upper('app'),upper('admin'))
4 /
CONSUMER_GROUP
------------------------------------------------------------
CPU_METHOD
------------------------------------------------------------
MGMT_METHOD
------------------------------------------------------------
ADMIN
ROUND-ROBIN
ROUND-ROBIN
APP
ROUND-ROBIN
ROUND-ROBIN
SQL>
四、建立資源計劃:
資源計劃包含各資源消費組之間資源分配的指示。例子如下:
SQL> begin
2 dbms_resource_manager.create_plan(
3 plan=>'membership_plan',
4 cpu_mth=>'ratio',
5 comment=>'new membership resource plan');
6 end;
7 /
PL/SQL procedure successfully completed.
SQL>
說明:plan用來指定資源計劃的名稱,CPU_mth指定資源消費組之間分配CPU的方法,預設為emphasisI(百分比),另一個值為ratio(比率)。connect新增註釋。還有一些其他預設的引數:active_sess_pool_mth此引數確定資源組中活動會話數目的限制;到11g版本,唯一一個值為active_sess_pool_absolute方法。parallel_degree_limit_mth此引數確定某個特定操作的並行度,到11g版本,唯一一個值為parallel_degree_limit_absolute。sub_plan此引數確定是否子計劃,預設為false。queueing_mth此引數確定排隊會話將執行的順序,可以選項為fifo_timeout。
五、建立資源計劃指示
資源計劃指示(resource plan directive)用來把資源計劃分配到資源消費組中。例子如下:
SQL> begin
2 dbms_resource_manager.create_plan_directive(
3 plan=>'membership_plan',
4 group_or_subplan=>'app',
5 comment=>'app grooup',
6 cpu_p1=>100);
7 end;
8 /
PL/SQL procedure successfully completed.
SQL> begin
2 dbms_resource_manager.create_plan_directive(
3 plan=>'membership_plan',
4 group_or_subplan=>'admin',
5 comment=>'admin group',
6 cpu_p2=>70);
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>
說明:plan用於指定資源計劃,group_or_subplan用於指定資源消費組或子計劃,connent用於新增註釋。
cpu_pn此引數指定可在消費組或子計劃中分配CPU資源。可以使用多層CPU資源分配,以區分出CPU的優先順序。如,保證僅在層次一需求後還剩的CPU時,層次二才能獲得CPU資源。 ACTIVE_SESS_POOL_P1此引數用來設定活動會話開啟的最大數目。 PARALLEL_DEGREE_LIMIT_P1此引數用來設定並行度的限制,MAX_IDLE_TIME此引數用來設定單個會話空間的最大時間。 SWITCH_GROUP此引數指定會話可根據特定的切換條件進行切換的消費組。兩個切換組為cancel_sql 和kill_session。與
SWITCH_GROUP有關引數的設定,SWITCH_IO_MEGABYTES此引數指定會話在資料庫在採取措施前可以傳送的IO位元組資料。 SWITCH_IO_REQS指定可執行的IO數目。SWITCH_FOR_CALL如果設定為true,Oracle將完成頂層後被切換以原來的會話。
六、驗證並提交未決區
SQL> exec dbms_resource_manager.validate_pending_area;
PL/SQL procedure successfully completed.
SQL> exec dbms_resource_manager.submit_pending_area;
PL/SQL procedure successfully completed.
SQL>
我們用如下的方式進行檢視:
SQL> select group_or_subplan,cpu_p1,cpu_p2,cpu_p3,status
2 from dba_rsrc_plan_directives
3 where plan = upper('membership_plan')
4 /
GROUP_OR_SUBPLAN CPU_P1
------------------------------------------------------------ ----------
CPU_P2 CPU_P3
---------- ----------
STATUS
------------------------------------------------------------
APP 90
0 0
ADMIN 0
70 0
SQL>
七、指派使用者到資源消費組中,如下:
建立使用者後,Oracle會分配一個預設的資源消費組,為default_consumer_group,如果指派使用者到其他消費組,那麼,
需要授予如下許可權:
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group-
> (grantee_name=>'djp01',-
> consumer_group=>'app',-
> grant_option=>true);
PL/SQL procedure successfully completed.
SQL>
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group-
> (grantee_name=>'imadmin',-
> consumer_group=>'admin',-
> grant_option=>true);
PL/SQL procedure successfully completed.
SQL>
下面我們進行使用者分配:
SQL> exec dbms_resource_manager.set_initial_consumer_group('djp01','app');
PL/SQL procedure successfully completed.
SQL> exec dbms_resource_manager.set_initial_consumer_group('imadmin','admin');
PL/SQL procedure successfully completed.
SQL>
關於會話資源消費組的自動指派和消費組之間的切換及複雜管理,我這裡沒有列出,方法一樣,只是多了幾道手續而已,有需要的請查閱相關資料或給我留言。
下面,我們檢視使用者djp01,imadmin的屬性:
SQL> select username,initial_rsrc_consumer_group
2 from dba_users
3 where username in(upper('djp01'),upper('imadmin'))
4 /
USERNAME
------------------------------------------------------------
INITIAL_RSRC_CONSUMER_GROUP
------------------------------------------------------------
IMADMIN
ADMIN
DJP01
APP
SQL>
八、啟用Oracle Resource Manager
通過設定init.ora或spfile.ora檔案中的resource_manager_plan引數來進行啟用,如下:
SQL> alter system set resource_manager_plan = membership_plan
2 /
System altered.
SQL>
說明:如果需要停止,那麼將其設定為空即可(resource_manager_plan=' ')。下面,我們檢視當前的活動資源:
SQL> select name,is_top_plan
2 from v$rsrc_plan
3 /
NAME IS_TOP_PLA
---------------------------------------------------------------- ----------
MEMBERSHIP_PLAN TRUE
SQL>
該資源成功使用。
關於消費組的、資源計劃與指示的更改和刪除,用法一樣,我這裡沒有列出,有需要的,請查閱相關資料或給我留言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1098090/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫資源管理器(Database Resource Manager)資料庫Database
- Resource Manager資源管理之使用組切換分析
- Oracle Database Resource ManagerOracleDatabase
- Oracle Resource Manager概述Oracle
- 2.7 Overview of Oracle Resource Manager in a CDBViewOracle
- oracle resource manager (ORM)舉例OracleORM
- profile的resource limits和資源計劃resource_manager_plan的limitMIT
- C# Resource Management (資源管理器)C#
- Resource Manager Enhancements in Oracle Database 11g (文件 ID 884082.1)OracleDatabase
- Oracle OCP 1Z0 053 Q690(Resource Manager&Undo)Oracle
- 資源路由resource index 不是get路由Index
- REST – 如何抽象為資源(Resource)REST抽象
- REST - 如何抽象為資源(Resource)REST抽象
- Oracle資源管理器Oracle
- 一個RESOURCE MANAGER引起的問題分析
- 《Effective C++》第三版-3. 資源管理(Resource Management)C++
- dbms_resource_manager.calibrate_io測試資料庫IO效能資料庫
- MySQL8.0——Resource Group(資源組)MySql
- Oracle OCP 1Z0 053 Q435(Resource Manager&OHTER_GROUP)Oracle
- zt_Limiting I/O and CPU resources using 11g Oracle Resource ManagerMITOracle
- oracle資源管理器(一)Oracle
- oracle 資源管理器(二)Oracle
- [原創] Oracle資料庫資源管理Oracle資料庫
- Enterprise Manager之oracle效能與管理Oracle
- Oracle Enterprises Manager安裝及管理Oracle
- Oracle OCP 1Z0-053 Q169(Maintain Task Window&Resource Manager)OracleAI
- Oracle OCP 1Z0-053 Q20(Resource Manager&CPU_WAIT_TIME)OracleAI
- 利用資源限制效能診斷resource limitMIT
- 【PDB】Oracle PDB資源管理參考Oracle
- 使用resource_manager限制使用者並行度並行
- 雅虎開源的Kafka叢集管理器(Kafka Manager)Kafka
- Yahoo開源的Apache Kafka管理工具:Kafka ManagerApacheKafka
- ORACLE RAC的DRM (動態資源管理)Oracle
- oracle安裝工具目錄常用解釋oracle wallet manager/Oracle Directory Manager /oracle net manager /Oracle Net ManagOracle
- oracle net manager 資料傳輸安全Oracle
- Oracle simple resource planOracle
- 利用Resource Timing監控資源載入速度
- 前端效能優化 - Resource Hints 資源預載入前端優化