Files
oracle/idev/example_database_resource_manager_setup.sql

153 lines
6.3 KiB
MySQL
Raw Permalink Normal View History

2026-03-12 21:23:47 +01:00
-- +----------------------------------------------------------------------------+
-- | Jeffrey M. Hunter |
-- | jhunter@idevelopment.info |
-- | www.idevelopment.info |
-- |----------------------------------------------------------------------------|
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
-- |----------------------------------------------------------------------------|
-- | DATABASE : Oracle |
-- | FILE : example_database_resource_manager_setup.sql |
-- | CLASS : Examples |
-- | PURPOSE : Example SQL syntax used setup and configure database resource |
-- | manager (DRM). |
-- | NOTE : As with any code, ensure to test this script in a development |
-- | environment before attempting to run it in production. |
-- +----------------------------------------------------------------------------+
connect system/manager
set serveroutput on
Prompt ====================
Prompt Clean-Up DRM Area...
Prompt ====================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
alter system set resource_manager_plan=system_plan;
exec DBMS_RESOURCE_MANAGER.create_pending_area;
-- exec dbms_resource_manager.DELETE_PLAN_CASCADE('daytime_plan');
-- exec dbms_resource_manager.DELETE_PLAN_CASCADE('night_weekend_plan');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('daytime_plan', 'oltp_group');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('daytime_plan', 'batch_group');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('daytime_plan', 'other_groups');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('night_weekend_plan', 'oltp_group');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('night_weekend_plan', 'batch_group');
exec dbms_resource_manager.DELETE_PLAN_DIRECTIVE('night_weekend_plan', 'other_groups');
exec dbms_resource_manager.DELETE_PLAN('daytime_plan');
exec dbms_resource_manager.DELETE_PLAN('night_weekend_plan');
exec dbms_resource_manager.DELETE_CONSUMER_GROUP('oltp_group');
exec dbms_resource_manager.DELETE_CONSUMER_GROUP('batch_group');
exec DBMS_RESOURCE_MANAGER.validate_pending_area;
exec DBMS_RESOURCE_MANAGER.submit_pending_area;
Prompt ========================
Prompt Creating Pending Area...
Prompt ========================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.create_pending_area;
Prompt ================================
Prompt Create Resource Plan Template...
Prompt ================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.create_plan('daytime_plan', 'Plan for daytime processing');
exec DBMS_RESOURCE_MANAGER.create_plan('night_weekend_plan', 'Plan for nights and weekends');
Prompt ==========================================
Prompt Create Resource Consumer Group Template...
Prompt ==========================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.create_consumer_group('oltp_group', 'data entry specialist');
exec DBMS_RESOURCE_MANAGER.create_consumer_group('batch_group', 'nightly batch jobs');
Prompt ==================================
Prompt Create Resource Plan Directives...
Prompt ==================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.create_plan_directive('daytime_plan', 'oltp_group', 'Daytime rule for oltp_group users', cpu_p1 => 90, parallel_degree_limit_p1 => 0);
exec DBMS_RESOURCE_MANAGER.create_plan_directive('daytime_plan', 'batch_group', 'Daytime rule for batch_group users', cpu_p1 => 10, parallel_degree_limit_p1 => 0);
exec DBMS_RESOURCE_MANAGER.create_plan_directive('daytime_plan', 'other_groups', 'Daytime rules for all other users/groups', cpu_p2 => 100, parallel_degree_limit_p1 => 0);
exec DBMS_RESOURCE_MANAGER.create_plan_directive('night_weekend_plan', 'oltp_group', 'Night/Weekend rule for oltp_group users', cpu_p1 => 10, parallel_degree_limit_p1 => 0);
exec DBMS_RESOURCE_MANAGER.create_plan_directive('night_weekend_plan', 'batch_group', 'Night/Weekend rule for batch_group users', cpu_p1 => 90, parallel_degree_limit_p1 => 0);
exec DBMS_RESOURCE_MANAGER.create_plan_directive('night_weekend_plan', 'other_groups', 'Night/Weekend rules for all other users/groups', cpu_p2 => 100, parallel_degree_limit_p1 => 0);
Prompt ==================================
Prompt Confirm (Validate) Pending Area...
Prompt ==================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.validate_pending_area;
Prompt ======================
Prompt Submit Pending Area...
Prompt ======================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.submit_pending_area;
-- exec DBMS_RESOURCE_MANAGER.clear_pending_area;
Prompt =========================================================================
Prompt ALLOW USER SCOTT TO SWITCH BETWEEN (oltp_group and batch_group) GROUPS...
Prompt =========================================================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER_PRIVS.grant_switch_consumer_group('scott', 'oltp_group', FALSE);
exec DBMS_RESOURCE_MANAGER_PRIVS.grant_switch_consumer_group('scott', 'batch_group', FALSE);
Prompt =========================================================
Prompt ASSIGN USER SCOTT TO INITIAL CONSUMER GROUP OF oltp_group...
Prompt =========================================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.set_initial_consumer_group('scott', 'oltp_group');
Prompt ==============================================
Prompt SWITCH USER SCOTT INTO THE oltp_group GROUP...
Prompt ==============================================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
exec DBMS_RESOURCE_MANAGER.switch_consumer_group_for_user('scott', 'oltp_group');
Prompt ==============================
Prompt Switch to DAYTIME_PLAN plan...
Prompt ==============================
Prompt
accept a1 Prompt "Hit <ENTER> to continue";
ALTER SYSTEM SET resource_manager_plan=daytime_plan;