• DBMS_RESOURCE_MANAGER


    参考文档:

    Database Administrator’s Guide

    27 Managing Resources with Oracle Database Resource Manager

    27.5.5 Creating a Resource Plan
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'bugdb_plan',
    4. COMMENT => 'Resource plan/method for bug users sessions');
    5. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'maildb_plan',
    6. COMMENT => 'Resource plan/method for mail users sessions');
    7. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'mydb_plan',
    8. COMMENT => 'Resource plan/method for bug and mail users sessions');
    9. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Online_group',
    10. COMMENT => 'Resource consumer group/method for online bug users sessions');
    11. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Batch_group',
    12. COMMENT => 'Resource consumer group/method for batch job bug users sessions');
    13. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Bug_Maint_group',
    14. COMMENT => 'Resource consumer group/method for users sessions for bug db maint');
    15. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Users_group',
    16. COMMENT => 'Resource consumer group/method for mail users sessions');
    17. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Postman_group',
    18. COMMENT => 'Resource consumer group/method for mail postman');
    19. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'Mail_Maint_group',
    20. COMMENT => 'Resource consumer group/method for users sessions for mail db maint');
    21. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
    22. GROUP_OR_SUBPLAN => 'Online_group',
    23. COMMENT => 'online bug users sessions at level 1',
    24. MGMT_P1 => 80,
    25. MGMT_P2 => 0);
    26. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
    27. GROUP_OR_SUBPLAN => 'Batch_group',
    28. COMMENT => 'batch bug users sessions at level 1',
    29. MGMT_P1 => 20,
    30. MGMT_P2 => 0,
    31. PARALLEL_DEGREE_LIMIT_P1 => 8);
    32. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
    33. GROUP_OR_SUBPLAN => 'Bug_Maint_group',
    34. COMMENT => 'bug maintenance users sessions at level 2',
    35. MGMT_P1 => 0,
    36. MGMT_P2 => 100);
    37. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
    38. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    39. COMMENT => 'all other users sessions at level 3',
    40. MGMT_P1 => 0,
    41. MGMT_P2 => 0,
    42. MGMT_P3 => 100);
    43. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
    44. GROUP_OR_SUBPLAN => 'Postman_group',
    45. COMMENT => 'mail postman at level 1',
    46. MGMT_P1 => 40,
    47. MGMT_P2 => 0);
    48. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
    49. GROUP_OR_SUBPLAN => 'Users_group',
    50. COMMENT => 'mail users sessions at level 2',
    51. MGMT_P1 => 0,
    52. MGMT_P2 => 80);
    53. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
    54. GROUP_OR_SUBPLAN => 'Mail_Maint_group',
    55. COMMENT => 'mail maintenance users sessions at level 2',
    56. MGMT_P1 => 0,
    57. MGMT_P2 => 20);
    58. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
    59. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    60. COMMENT => 'all other users sessions at level 3',
    61. MGMT_P1 => 0,
    62. MGMT_P2 => 0,
    63. MGMT_P3 => 100);
    64. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan',
    65. GROUP_OR_SUBPLAN => 'maildb_plan',
    66. COMMENT => 'all mail users sessions at level 1',
    67. MGMT_P1 => 30);
    68. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan',
    69. GROUP_OR_SUBPLAN => 'bugdb_plan',
    70. COMMENT => 'all bug users sessions at level 1',
    71. MGMT_P1 => 70);
    72. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    73. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    74. END;
    75. /
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'MAXCAP_PLAN',
    4. COMMENT => 'Limit overall database CPU');
    5. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'MAXCAP_PLAN',
    6. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    7. COMMENT => 'This group is mandatory',
    8. UTILIZATION_LIMIT => 90);
    9. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    10. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    11. END;
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'START_GROUP',
    4. COMMENT => 'Sessions start here');
    5. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'QUARANTINE_GROUP',
    6. COMMENT => 'Sessions switched here to quarantine them');
    7. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'Quarantine_plan',
    8. COMMENT => 'Quarantine runaway queries');
    9. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'Quarantine_plan',
    10. GROUP_OR_SUBPLAN => 'START_GROUP',
    11. COMMENT => 'Max CPU 10 minutes before switch',
    12. MGMT_P1 => 75,
    13. switch_group => 'QUARANTINE_GROUP',
    14. switch_time => 600);
    15. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'Quarantine_plan',
    16. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    17. COMMENT => 'Mandatory',
    18. MGMT_P1 => 25);
    19. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'Quarantine_plan',
    20. GROUP_OR_SUBPLAN => 'QUARANTINE_GROUP',
    21. COMMENT => 'Limited CPU',
    22. MGMT_P2 => 100,
    23. UTILIZATION_LIMIT => 20);
    24. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    25. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    26. END;
    27. /
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP1_GROUP',
    4. COMMENT => 'Apps group 1');
    5. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP2_GROUP',
    6. COMMENT => 'Apps group 2');
    7. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP3_GROUP',
    8. COMMENT => 'Apps group 3');
    9. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP4_GROUP',
    10. COMMENT => 'Apps group 4');
    11. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'apps_plan',
    12. COMMENT => 'Application consolidation');
    13. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'apps_plan',
    14. GROUP_OR_SUBPLAN => 'APP1_GROUP',
    15. COMMENT => 'Apps group 1',
    16. UTILIZATION_LIMIT => 30);
    17. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'apps_plan',
    18. GROUP_OR_SUBPLAN => 'APP2_GROUP',
    19. COMMENT => 'Apps group 2',
    20. UTILIZATION_LIMIT => 30);
    21. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'apps_plan',
    22. GROUP_OR_SUBPLAN => 'APP3_GROUP',
    23. COMMENT => 'Apps group 3',
    24. UTILIZATION_LIMIT => 30);
    25. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'apps_plan',
    26. GROUP_OR_SUBPLAN => 'APP4_GROUP',
    27. COMMENT => 'Apps group 4',
    28. UTILIZATION_LIMIT => 30);
    29. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'apps_plan',
    30. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    31. COMMENT => 'Mandatory',
    32. UTILIZATION_LIMIT => 20);
    33. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    34. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    35. END;
    36. /
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP1_GROUP',
    4. COMMENT => 'Group for application #1');
    5. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP2_OLTP_GROUP',
    6. COMMENT => 'Group for OLTP activity in application #2');
    7. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP2_ADHOC_GROUP',
    8. COMMENT => 'Group for ad-hoc queries in application #2');
    9. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APP2_REPORT_GROUP',
    10. COMMENT => 'Group for reports in application #2');
    11. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'APPS_PLAN',
    12. COMMENT => 'Plan for managing 3 applications');
    13. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'APP2_SUBPLAN',
    14. COMMENT => 'Subplan for managing application #2',
    15. SUB_PLAN => TRUE);
    16. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'APP2_REPORTS_SUBPLAN',
    17. COMMENT => 'Subplan for managing reports in application #2',
    18. SUB_PLAN => TRUE);
    19. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APPS_PLAN',
    20. GROUP_OR_SUBPLAN => 'APP1_GROUP',
    21. COMMENT => 'Limit CPU for application #1 to 40%',
    22. UTILIZATION_LIMIT => 40);
    23. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APPS_PLAN',
    24. GROUP_OR_SUBPLAN => 'APP2_SUBPLAN',
    25. COMMENT => 'Limit CPU for application #2 to 40%',
    26. UTILIZATION_LIMIT => 40);
    27. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APP2_SUBPLAN',
    28. GROUP_OR_SUBPLAN => 'APP2_OLTP_GROUP',
    29. COMMENT => 'Limit CPU for OLTP to 90% of application #2',
    30. UTILIZATION_LIMIT => 90);
    31. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APP2_SUBPLAN',
    32. GROUP_OR_SUBPLAN => 'APP2_REPORTS_SUBPLAN',
    33. COMMENT => 'Subplan for ad-hoc and normal reports for application #2');
    34. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APP2_REPORTS_SUBPLAN',
    35. GROUP_OR_SUBPLAN => 'APP2_ADHOC_GROUP',
    36. COMMENT => 'Limit CPU for ad-hoc queries to 50% of application #2 reports',
    37. UTILIZATION_LIMIT => 50);
    38. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APP2_REPORTS_SUBPLAN',
    39. GROUP_OR_SUBPLAN => 'APP2_REPORT_GROUP',
    40. COMMENT => 'Limit CPU for reports to 50% of application #2 reports',
    41. UTILIZATION_LIMIT => 50);
    42. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'APPS_PLAN',
    43. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    44. COMMENT => 'No directives for default users');
    45. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    46. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    47. END;
    48. /
    1. BEGIN
    2. DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    3. DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'erp_plan',
    4. COMMENT => 'Resource plan/method for ERP Database');
    5. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'oltp',
    6. COMMENT => 'Resource consumer group/method for OLTP jobs');
    7. DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'batch',
    8. COMMENT => 'Resource consumer group/method for BATCH jobs');
    9. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'erp_plan',
    10. GROUP_OR_SUBPLAN => 'oltp',
    11. COMMENT => 'OLTP sessions',
    12. MGMT_P1 => 60,
    13. SWITCH_GROUP => 'batch',
    14. SWITCH_TIME => 3,
    15. UNDO_POOL => 200,
    16. SWITCH_FOR_CALL => TRUE,
    17. SESSION_PGA_LIMIT => 20);
    18. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'erp_plan',
    19. GROUP_OR_SUBPLAN => 'batch',
    20. COMMENT => 'BATCH sessions',
    21. MGMT_P1 => 30,
    22. PARALLEL_SERVER_LIMIT => 8,
    23. PARALLEL_QUEUE_TIMEOUT => 600,
    24. MAX_EST_EXEC_TIME => 3600);
    25. DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'erp_plan',
    26. GROUP_OR_SUBPLAN => 'OTHER_GROUPS',
    27. COMMENT => 'mandatory',
    28. MGMT_P1 => 10);
    29. DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    30. DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    31. END;
    32. /

    END

  • 相关阅读:
    智慧电力运维系统助力实现配电室无人值守
    【笔记】从ES到ClickHouse:B站海量日志分析场景迁移的实践与思考
    Python Day3 爬虫-数据接口和selenium基础
    java 并发AQS 理解
    小米面试——计算机视觉算法实习生
    【移动应用开发期末复习】第五/六章
    【CSP】2021-09-2 非零段划分 索引+递推/差分+前缀和
    MMSeg搭建自己的网络
    由浅入深理解latent diffusion/stable diffusion(3):一步一步搭建自己的stable diffusion models
    视频教程下载:用ChatGPT的 API 开发AI应用指南
  • 原文地址:https://blog.csdn.net/xxzhaobb/article/details/132687595