Oracle Resource Manager Enhancements in Oracle Database 12c Release 1 (12.1)
This article describes the enhancements to automatic consumer group switching in Oracle 12c Release 1 (12.1).
oracle 12cconfigurationintermediate
by OracleDba
14 views
This article describes the enhancements to automatic consumer group switching in Oracle 12c Release 1 (12.1).
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
CONN sys/SysPassword1@//localhost:1521/pdb1 AS SYSDBA
--DROP USER testuser1 CASCADE;
CREATE USER testuser1 IDENTIFIED BY testuser1 QUOTA UNLIMITED ON users;
GRANT CREATE SESSION, CREATE PROCEDURE TO testuser1;
BEGIN
DBMS_RESOURCE_MANAGER.clear_pending_area;
DBMS_RESOURCE_MANAGER.create_pending_area;
-- Create plan
DBMS_RESOURCE_MANAGER.create_plan(
plan => 'long_running_query_plan',
comment => 'Plan to handle long running queries.');
-- Create consumer groups
DBMS_RESOURCE_MANAGER.create_consumer_group(
consumer_group => 'normal_cg',
comment => 'Consumer group for normal sessions.');
-- Assign consumer groups to plan and define priorities
DBMS_RESOURCE_MANAGER.create_plan_directive (
plan => 'long_running_query_plan',
group_or_subplan => 'normal_cg',
comment => 'Normal Priority',
mgmt_p1 => 100,
switch_group => 'CANCEL_SQL',
switch_time => 60,
switch_for_call => TRUE);
DBMS_RESOURCE_MANAGER.create_plan_directive(
plan => 'long_running_query_plan',
group_or_subplan => 'OTHER_GROUPS',
comment => 'Default',
mgmt_p2 => 100);
DBMS_RESOURCE_MANAGER.validate_pending_area;
DBMS_RESOURCE_MANAGER.submit_pending_area;
END;
/
BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.grant_switch_consumer_group(
grantee_name => 'testuser1',
consumer_group => 'normal_cg',
grant_option => FALSE);
DBMS_RESOURCE_MANAGER.set_initial_consumer_group('testuser1', 'normal_cg');
END;
/
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'long_running_query_plan';
COLUMN username FORMAT A30
COLUMN resource_consumer_group FORMAT A30
SELECT username, resource_consumer_group
FROM v$session
WHERE username = 'TESTUSER1';
CONN testuser1/testuser1@//localhost:1521/pdb1
CREATE OR REPLACE FUNCTION burn_cpu (p_mins IN NUMBER)
RETURN NUMBER
AS
l_start_time DATE;
l_number NUMBER := 1;
BEGIN
l_start_time := SYSDATE;
LOOP
EXIT WHEN SYSDATE - l_start_time > (p_mins/24/60);
l_number := l_number + 1;
END LOOP;
RETURN 0;
END;
/
SELECT burn_cpu (5) FROM dual;
COLUMN username FORMAT A30
COLUMN resource_consumer_group FORMAT A30
SELECT username, resource_consumer_group
FROM v$session
WHERE username = 'TESTUSER1';
USERNAME RESOURCE_CONSUMER_GROUP
------------------------------ ------------------------------
TESTUSER1 NORMAL_CG
SQL>
SQL> SELECT burn_cpu (5) FROM dual;
Error starting at line : 1 in command -
SELECT burn_cpu (5) FROM dual
Error report -
ORA-00040: active time limit exceeded - call aborted
SQL>
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '';
BEGIN
DBMS_RESOURCE_MANAGER.clear_pending_area;
DBMS_RESOURCE_MANAGER.create_pending_area;
DBMS_RESOURCE_MANAGER.delete_plan_cascade(
plan => 'long_running_query_plan');
DBMS_RESOURCE_MANAGER.validate_pending_area;
DBMS_RESOURCE_MANAGER.submit_pending_area;
END;
/Please to add comments
No comments yet. Be the first to comment!