相关文章
用资源管理器限制大数据量查询
2024-11-01 23:30

  最近生产库上经常因为一些查询账号登陆数据仓库,做了大数据量查询,sql语句甚至不带条件,严重拖累了数据库性能,
因此我增加了resource manager限制这些查询账号的最大执行时间,以及cpu使用率,目的是降低这些账号查询对数据库正常业务的影响。

用资源管理器限制大数据量查询

1.资源管理器创建的步骤:
Step 1: Create a pending area.

Step 2: Create, modify, or delete consumer groups.

Step 3: Create the resource plan.

Step 4: Create resource plan directives.

Step 5: Validate the pending area.

Step 6: Submit the pending area.


2.我的创建脚本
BEGIN
    DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
 
 

    DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    'MAIN_GROUP',
    'rptdw main users group');
   
    DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    'QUERY_GROUP',
    'using for query users ,limit parallel threads and cpu consume percentage');
   
 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN(
    'RPTDW_PLAN',
    'Plan for limit long-running queries and too many parallel querys');
 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    'RPTDW_PLAN', 'OTHER_GROUPS', 'Directive for rptdw system users activity',
    mgmt_p1 => 100);
 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    'RPTDW_PLAN', 'QUERY_GROUP', 'Directive for query users activity',
    mgmt_p2 => 80,
    parallel_degree_limit_p1 => 2,
    max_est_exec_time => 120);
 
  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
   
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

3.如果中间报错,需要清空悬挂区。
BEGIN
  DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
END;
/

4,到所有RAC的节点用sys用户执行,让资源管理器计划生效。
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = rptdw_plan ;

5.我想把以下数据库账号加入新建的资源计划的QUERY_GROUP消费组
SUPPORT
FROMBI
MAIN1
MAIN4
MAIN_DBA
MREAD_Q
OPS$MON
BOCO4A
REPORT1

-- 是否有必要?
BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'SUPPORT', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'FROMBI', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'MAIN1', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'MAIN4', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'MAIN_DBA', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'MREAD_Q', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'OPS$MON', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'BOCO4A', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'MAIN2', 'QUERY_GROUP');
  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

执行成功
PL/SQL procedure successfully completed


我想把其他数据库账号加入消费组OTHER_GROUPS

DET

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'DET', 'OTHER_GROUPS');
  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/
报错:
ERROR at line 1:
ORA-29396: cannot switch group to OTHER_GROUPS
ORA-06512: at "SYS.DBMS_RMIN", line 302
ORA-06512: at "SYS.DBMS_RESOURCE_MANAGER", line 709
ORA-06512: at line 3
注意,无法把数据库用户映射到OTHER_GROUPS,OTHER_GROUPS相当于默认组

6.给账号分配权限,然后修改这些账号的初始化的消费者组
begin
  dbms_resource_manager_privs.grant_system_privilege(grantee_name=>'MAIN2',admin_option=>true);
end;
/

begin
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'SUPPORT',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'FROMBI',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'MAIN1',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'MAIN4',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'MAIN_DBA',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'MREAD_Q',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'OPS$MON',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'BOCO4A',consumer_group =>'QUERY_GROUP',grant_option => false);
  dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name =>'MAIN2',consumer_group =>'QUERY_GROUP',grant_option => false);
end;
/
                                 
begin
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('SUPPORT','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('FROMBI','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('MAIN1','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('MAIN4','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('MAIN_DBA','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('MREAD_Q','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('OPS$MON','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('BOCO4A','QUERY_GROUP');
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('MAIN2','QUERY_GROUP');
end;
/


7.回头看了最大执行时间2分钟,感觉太少了,修改消费组QUERY_GROUP的计划指导
BEGIN
  DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.update_plan_directive(
         PLAN                  => 'RPTDW_PLAN',
         GROUP_OR_SUBPLAN      => 'QUERY_GROUP',
         new_max_est_exec_time => 1800
        );
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

    以上就是本篇文章【用资源管理器限制大数据量查询】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/127.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://mip.xhstdz.com/ , 查看更多   
最新文章
Real Moto 2(真实摩托2游戏手机版)摩托手机「Real Moto 2(真实摩托2游戏手机版)」
《真实摩托2》是一款超级好玩的摩托车驾驶竞速类游戏,游戏采用了高清物理引擎打造,拥有逼真的画面和场景,真实的玩法内容,激
家居“新物种”:行业新革命!叶盛明珠发热岩板颠覆家居采暖逻辑
  展会盛况:科技与美学的完美结合  2025年3月27 - 30日,第14届广州定制家居展暨轻高定展在广州保利世贸博览馆盛大举行。展
如何连接usbusb怎么连接手机「如何连接usb」
在日常生活中,USB(Universal Serial Bus,通用串行总线)接口已成为我们连接各种设备与计算机的重要桥梁。无论是传输数据、充
售17.98万起! 北京BJ40增程版上市!双电机四驱+三把锁,硬派越野SUV的新扛把子?
4月7日,增程正式上市,新车共推出2款配置车型,售价区间为17.98-19.98万元。作为北京BJ40新增动力版本,该车搭载1.5T增程混动,
新增20+项新功能 提供高阶智驾选装 领克EM-P超电双子星OTA 1.8.0推送更新
近日, EM-P和08 EM-P正式迎来了OTA 1.8.0版本的升级。据悉,本次双车总计升级新增20+项功能,并优化了60+项体验,可实现“iOS+
vivo Y300 Pro+/Y300t发布,更实惠的千元手机
  vivo千元机又更新了,vivo Y300 Pro+与Y300t于3月31日正式亮相,为广大消费者带来实惠。  vivo Y300 Pro+是vivo Y系列首款
Canvalr手机版「Canva」
Canva是一款非常专业的图片制作app,能够给用户制作图片提供许多的帮助,让用户轻轻松松就能进行图片设计,非常的方便实用,可以
Nothing 2025 放大招:Phone(3)手机领衔,里程碑式新机登场phone手机「Nothing 2025 放大招:Phone(3)手机领衔,里程碑式新机登场」
IT之家 1 月 14 日消息,消息源 Evan Blass 昨日(1 月 13 日)在 X 平台发布推文,分享了裴宇发送给 Nothing 员工的内部电子邮
心有千千结 | 手机危害七宗罪&手机脸手机脸「心有千千结 | 手机危害七宗罪&手机脸」
手机无处不在方便生活的同时也给我们带来了极大的危害那么危害究竟有哪些我们又该怎样减少呢首先,带着大家看一下最爱手机的“民