日期:2014-05-16  浏览次数:20409 次

Oracle 性能调优学习笔记(十)-- 使用资源管理包

?使用资源管理器
????????? 使用资源管理器:
??? 1.无论系统负荷多大,保证系统不同会话获取适当的资源.
??? 2.针对不同用户和程序使用不同的CPU.
??? 3.可以分配多个用户组,限制并发操作.
??? 4.创建活动的会话池(资源池原理).
??? 5.管理运行会话是否超过指定的CPU或者IO界限,会话将过期或者将被切换到一个不同的优先级的组中.
??? 6.设置seesion的空闲时间,超过则清除.
??? 7.优化器检查执行时间,查过规定时间不执行.
??? 8.配置一个实例使用一个特殊的schema.
???
???DBMS_RESOURCE_MANAGER:最多可以分配8个组,只能分配CPU.
???使用如下;
???SIPLE_PLAN的名字:SIPLE_PLAN;
???创建第一个GRP1,使用80%的CPU.
???创建第一个GRP2,使用20%的CPU.
???
???? begin
?????? dbms_resource_manager.create_simple_plan(SIMPLE_PLAN=>'SIPLE_PLAN',
????? CONSUMER_GRP1=>'GRP1',GRP1_PERCENT=>80,
????? CONSUMER_GRP2=>'GRP2',GRP2_PERCENT=>20
???? );
???? end;
??? 例如:
???? begin
?????? dbms_resource_manager.create_simple_plan('bbkplan',
?????'grp1',80,
?????'grp2',20
?????);
???? end;
????
??????????? dbms_resource_manager_privs:
???
??dbms_resource_manager_privs.grant_system_privilege(
??????? grantee_name=>'OE',
???? privilege_name=>'ADMINISTER RESOURCE MANAGER',
???? admin_option=>False
??);
??改变用户的会话组
??dbms_session.switch_current_consumer_group(
?????????? new_consumer_group=>'DSS',
???? old_consumer_group=>v_old_group,
???? initial_group_on_error=>False
??);
??查询用户的会话
??select sid,serial#,username from v$session;
??dba设置一个用户的一个会话信息
??dbms_resource_manager.switch_consumer_group_for_sess(
?????????? session_id=>7,
???? session_serial=>13,
???? consumer_group=>'OLTP'
??);
??dba设置一个用户的所有会话中的session
??dbms_resource_manager.switch_consumer_group_for_sess(
???? user=>'SCOTT',
???? consumer_group=>'OLTP'
??);
??
??dba_rsrc_plans:
??dba_rsrc_plan_directives:
??dba_rsrc_consumer_groups:
??dba_rsrc_consumer_group_privs:
??dba_users:
??dba_rsrc_manager_system_privs:
??查询资源执行组
??select plan,group_or_subplan,cpu_p1,cpu_p2,cpu_p3,parallel_degree_limit_p1,
??? status from dba_rsrc_plan_directives;
??查询资源计划的权限信息?
??select * from dba_rsrc_consumer_group_privs;
??
??v$session: 包含一个列resource_consumer_group.
??v$rsrc_plan:当前活动的资源plan.
??v$rsrc_consumer_group:活动的组.