oracle 資源管理器(二)

逍遙三人發表於2012-03-24
轉載:http://hi.baidu.com/embrace_you/blog/item/ffb2d7dbf491656ad0164e96.html
一、資源管理器(DRM)由三個要素組成:
資源消費群(resource_consumer_group)
資源計劃(resource_plan)
資源計劃指令(resource_plan_directive)
執行與DRM有關的操作,必須具有 administer_resource_manager 系統許可權。
二、未決域(pending area)
DRM的三個要素都必須建立在未決域中,然後提交。
1、建立未決域
exec dbms_resource_manager.create_pending_area;
2、驗證未決域
exec dbms_resource_manager.validate_pending_area;
驗證域中的內容是否合法。
3、清除未決域
exec dbms_resource_manager.clear_pending_area;
執行此命令後,未決域以及未決域中的內容一起被刪除。
4、提交未決域
exec dbms_resource_manager.submit_pending_area;
執行此命令後,相當於執行了驗證、提交、清除三個命令。未決域中的內容會被儲存在資料字典中,等待啟用。
三、資源消費群
一個使用者可以隸屬於多個消費群,但一個會話同一時間只能隸屬於一個消費群。
ORACLE 已經預定義了4個消費群:
default_consumer_group :未分配消費群的使用者和會話。
other_groups :當前的資源計劃中沒有明確指定資源分配所有消費群。任何一個資源計劃中都必須包含此群。
sys_group 和 low_group :用於執行系統計劃的消費群。
1、建立、更新、刪除消費群()
建立:
exec dbms_resource_manager.create_cosumer_group('群名','註釋');
更新:
exec dbms_resource_manager.update_consumer_group('群名','註釋');
刪除:
exec dbms_resource_manager.delete_consumer_group('群名');
執行此命令後,隸屬於此群的使用者和會話將自動轉到 default_consumer_group.
2、將使用者會話分配給消費群(消費群對映)
可以基於會話的屬性將會話動態分配給消費群,成為消費群對映。
(1)設定對映:
dbms_resource_manager.set_consumer_group_mapping(
attribute => oracle_user,
value => 'user1,
consumer_group => 'low_group');
如上,當會話的oracle使用者屬性值為user1時,就將之分配給消費群low_group。
(2)設定對映優先權:
由於可能會出現某會話的兩個屬性分別滿足兩個不同的對映規則,那麼該服從哪個規則呢?——可以設定各個屬性的優先權,服從優先順序高的屬性。
dbms_resource_manager.set_mapping_priority(
oracle_user => 1,
client_os_user => 2);
(3)動態轉換會話的消費群
基於會話的唯一標識轉換消費群:(會話唯一標識由 session_id 和 session_serial 共同組成,這兩個引數的值在 v$session 檢視中)。
dbms_resource_manager.switch_consumer_group_for_sess(
session_id => '56',
session_serial => '106',
consumer_group => 'low_group');
基於會話所屬的使用者轉換消費群:(將使用者下的所有會話轉換消費群)
dbms_resource_manager.switch_consumer_group_for_user(
user => 'user1',
consumer_group => 'low_group');
使用者轉換自己當前會話的消費群:(使用 dbms_session 包)
dbms_session.switch_current_consumer_group(
new_consumer_group => 'low_group');
轉換自己當前會話的消費群需要特定許可權:
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => 'user1',
consumer_group => 'low_group',
grant_option => 'false');
撤銷此許可權:
dbms_resource_manager_privs.revoke_switch_consumer_group(
grantee_name => 'user1',
consumer_group => 'low_group');
四、資源計劃
分為簡單資源計劃和複雜資源計劃。
1、簡單資源計劃
有如下特點:
(1)三要素在一個過程中定義。
(2)只能分配cpu資源。
(3)只能使用emphasis方式分配cpu資源(即百分比)。
(4)分配的消費群最大數為8個。
建立:
dbms_resource_manager.create_simple_plan(
simple_plan => '計劃名',
consumer_group1 => '消費群1',
group1_cpu => 50,
consumer_group2 => '消費群2',
group2_cpu => 50);
2、複雜資源計劃
特點:
(1)三要素必須單獨建立。
(2)可以巢狀子計劃。
建立:
dbms_resource_manager.create_plan(
plan => '計劃名',
comment => '註釋');
3、修改資源計劃:
dbms_resource_manager.update_plan(
plan => '計劃名',
new_屬性 => '新值');
4、刪除資源計劃:
dbms_resource_manager.delete_plan('計劃名');
dbms_resource_manager.delete_plan_cascade('計劃名');
加上cascade引數,刪除計劃內的要素。
五、計劃指令
建立:
dbms_resource_manager.create_plan_directive(
plan => '計劃名',
group_or_subplan => '消費群或子計劃',
資源限制引數);
注:可以為子計劃建立指令,但只能分配cpu資源。
更新:
dbms_resource_manager.update_plan_directive(
兩個必需引數,
new_屬性 => '新值');
刪除:
dbms_resource_manager.delete_plan_directive(
兩個必需引數);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21584437/viewspace-719436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章