Master Note: Overview of Oracle Resource Manager and DBMS_RESOURCE_MANAGER [ID 1484302.1] | To Bottom |
Modified:Jul 2, 2013Type:BULLETINStatus:PUBLISHEDPriority:1 |
|
In this Document
Purpose |
Details |
Concepts/Definitions |
Setup and Configuration |
Resource Manager Administration Privileges |
Resources Managed by the Resource Manager |
Elements of the Resource Manager |
Enabling the Database Resource Manager |
Getting Started with Resource Manager |
Create Simple Resource Plan using CREATE_SIMPLE_PLAN procedure |
Create Complex Resource Plan using CREATE_PLAN procedure |
Checking Configuration and Monitoring Resource Manager |
Cleaning the Resource Manager Plan |
Applications of Resource Manager (Additional Examples/Samples) |
12c: Using Oracle Resource Manager on pluggable databases (PDBs) in a multitenant container database (CDB) |
Oracle Resource Manager and Operating System (OS) Resource manager |
Oracle Database Services and Resource Manager |
Troubleshooting/Knownissues |
Recommended Patches |
References |
Applies to:
Oracle Database – Enterprise Edition – Version 10.2.0.1 and later
Information in this document applies to any platform.
Purpose
The Oracle Database Resource Manager is a tool for managing how multiple consumer groups (i.e. workloads) or databases use and share resources, such as CPU, I/O, and parallel servers.
The purpose of this Document is to provide an overview reference for the Oracle Database Resource Manager and allow you to quickly start using it
This is a LIVE document. Work is in progress to improve the quality of the content.
Details
Concepts/Definitions
The Oracle Database Resource Manager (the Resource Manager) is an infrastructure that provides granular control of database resources allocated to users, applications, and services. The Oracle Database Resource Manager (RM) enables you to manage multiple workloads that are contending for system and database resources.
Resources are allocated to users according to a resource plan specified by the database administrator. The plan specifies how the resources are to be distributed among resource consumer groups, which are user sessions grouped by resource requirements. A resource plan directive associates a resource consumer group with a plan and specifies how resources are to be allocated to the group. DBRM (database resource manager) process is responsible for setting resource plans and other resource manager related tasks.
Oracle Documentation on Oracle Database Resource Manager
For 12cR1 – Oracle® Database Administrator’s Guide 12c Release 1 (12.1) – Part Number E17636-17
Managing Resources with Oracle Database Resource Manager
http://docs.oracle.com/cd/E16655_01/server.121/e17636/dbrm.htm
DBMS_RESOURCE_MANAGER – Reference
http://docs.oracle.com/cd/E16655_01/appdev.121/e17602/d_resmgr.htm
Using Oracle Resource Manager on pluggable databases (PDBs) in a multitenant container database (CDB)
Sqlplus: http://docs.oracle.com/cd/E16655_01/server.121/e17636/cdb_dbrm.htm
EM: http://docs.oracle.com/cd/E16655_01/server.121/e17636/cdb_dbrm_em.htm
For 11gR2 – Oracle® Database Administrator’s Guide 11g Release 2 (11.2) – Part Number E25494-02
Managing Resources with Oracle Database Resource Manager
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm.htm
DBMS_RESOURCE_MANAGER – Reference
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_resmgr.htm
For 11gR1 – Oracle® Database Administrator’s Guide 11g Release 1 (11.1) – Part Number B28310-04
Managing Resource Allocation with Oracle Database Resource Manager
http://docs.oracle.com/cd/B28359_01/server.111/b28310/dbrm.htm
DBMS_RESOURCE_MANAGER – Reference
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_resmgr.htm
Please refer the Note 1119407.1 for the Video Tutorial on Resource Manager, which includes both Concepts and Lab practices
Note 1119407.1 Resource Manager Training (11.2 features included) [Video]
Setup and Configuration
The DBMS_RESOURCE_MANAGER package is to be used to setup and configure resourcemanager. The DBMS_RESOURCE_MANAGER package maintains plans, consumer groups, and plan directives. It also provides semantics so that you may group together changes to the plan schema.
Resource Manager Administration Privileges
You must have the system privilege ADMINISTER_RESOURCE_MANAGER to administer the Resource Manager. This privilege (with the ADMIN option) is granted to database administrators through the DBA role. GRANT_SYSTEM_PRIVILEGE and REVOKE_SYSTEM_PRIVILEGE procedures of DBMS_RESOURCE_MANAGER_PRIVS PL/SQL package are used to grant & revoke this.
The ADMINISTER_RESOURCE_MANAGER system privilege can only be granted or revoked using the DBMS_RESOURCE_MANAGER_PRIVS package. It cannot be granted or revoked through the SQL GRANT or REVOKE statements.
begin
dbms_resource_manager_privs.grant_system_privilege(
grantee_name => ‘DBADMIN’,
admin_option => false);
end;
/
In order to assign users to resource consumer groups other than default, the users must have been granted the system privilege grant_switch_consumer_group in order to be able to switch to that consumer group. GRANT_SWITCH_CONSUMER_GROUP and REVOKE_SWITCH_CONSUMER_GROUP procedures of DBMS_RESOURCE_MANAGER_PRIVS PL/SQL package are used to grant & revoke this.
begin
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => ‘PUBLIC’,
consumer_group => `GROUP_NAME’);
end;
/
Resources Managed by the Resource Manager
There are many types of resources, which are managed by the RM like CPU, Idle time, Undo pool, etc. Distribute CPU is the widely used RM feature. Complete list of resources managed by the RM is listed in the documentation below
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm003.htm
Elements of the Resource Manager
As explained in the concepts section, Resources are allocated to users according to a resource plan, distributed among resource consumer groups and resource plan directive used to specify how resources are to be allocated to the group. So The elements of the Resource Manager are Resource consumer group, Resource plan, Resource plan directive. These elements are stored in tables in the data dictionary. So you can view information about them with Resource manager related data dictionary views.
Enabling the Database Resource Manager
You can enable the Database Resource Manager by setting the RESOURCE_MANAGER_PLAN initialization parameter.
This parameter specifies the top plan, identifying the plan schema to be used for this instance. If no
plan is specified with this parameter, the Database Resource Manager is not activated. The following
example activates the Database Resource Manager and assigns the top plan as mydb_plan.
RESOURCE_MANAGER_PLAN = mydb_plan
You can also activate or deactivate the Database Resource Manager, or change the current top plan, using
the ALTER SYSTEM statement. In this example, the top plan is specified as mydb_plan.
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = mydb_plan;
An error message is returned if the specified plan does not exist in the data dictionary.
To deactivate the Database Resource Manager, issue the following statement:
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ”;
Note 223572.1 Resource Manager Setup and Configuration for the Database
A database can have multiple plans defined, but only one can be active at a given time per instance. Different instance of a RAC can activate different plans, if required.
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm006.htm
Getting Started with Resource Manager
If you use Resource Manager and have up to eight consumer groups and needed only CPU resource allocation to control then simple resource plan is adequate, using the DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN procedure. When your situation calls for a more complex resource plan, you must create the plan, with its directives and consumer groups, in a staging area called the pending area, and then validate the plan before storing it in the data dictionary (Complex Resource Plan). Resource plans can be associated with scheduler windows or jobs, So Integration with Oracle Database Scheduler (DBMS_SCHEDULER) is possible. Resource plans do not impose a hard limit, meaning if there is no other session is taking resource allocated, then this session can take all the available resource and not just the limit allocated. Please refer Note 1119407.1 for the Video Tutorials on Resource Manager, which contains both Concepts and Lab practices
Note 1119407.1 Resource Manager Training (11.2 features included) [Video]
Create Simple Resource Plan using CREATE_SIMPLE_PLAN procedure
You can specify up to eight consumer groups with this procedure. The only resource allocation method supported is CPU. The plan uses the EMPHASIS CPU allocation policy (the default) and each consumer group uses the ROUND_ROBIN scheduling policy (also the default). The following PL/SQL block creates a simple resource plan with two user-specified consumer groups:
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN(SIMPLE_PLAN => ‘mydb_plan’,
CONSUMER_GROUP1 => ‘MYGROUP1’, GROUP1_PERCENT => 80,
CONSUMER_GROUP2 => ‘MYGROUP2’, GROUP2_PERCENT => 20);
END;
/
Executing the preceding statements creates the following plan:
Consumer Group | Level 1 | Level 2 | Level 3 |
SYS_GROUP | 100% | – | – |
MYGROUP1 | – | 80% | – |
MYGROUP2 | – | 20% | – |
OTHER_GROUPS | – | – | 100% |
Each consumer group specified in the plan is allocated its CPU percentage at level 2. Also implicitly included in the plan are SYS_GROUP (a system-defined group that is the initial consumer group for the users SYS and SYSTEM) and OTHER_GROUPS. The SYS_GROUP consumer group is allocated 100% of the CPU at level 1, and OTHER_GROUPS is allocated 100% of the CPU at level 3. Refer Oracle Documentation for “Creating a Simple Resource Plan” mentioned below
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm004.htm
Create Complex Resource Plan using CREATE_PLAN procedure
A complex resource plan is any resource plan that is not created with the CREATE_SIMPLE_PLAN procedure. Note that any resource plan created by the Simple Resource Plan method using CREATE_SIMPLE_PLAN can also be created by the Complex Resource Plan (this) method, also creating resource plan with this method give more flexibility and can have more granularity. When your situation calls for a more complex resource plan, you must create the plan, with its directives and consumer groups, in a staging area called the pending area, and then validate the plan before storing it in the data dictionary. You can create sub-plans (plan within plans) for more granular resource management. If a consumer-group does not use its CPU-percentage, the remainder falls through to the next level, and the administrator can define explicit what to do with it. Up to eight levels can be specified.
Here is a general guideline of the steps in implementing a Database Resource Manager plan:
- Create resource plans
2. Create resource consumer groups
3. Create resource plan directives
4. Grant switch privilege for resource consumer groups to users or roles
5. Assign users to resource consumer groups
6. Specify a plan to be used by the instance
In addition to the above steps, we need to create these elements in a staging area called the pending area, so the below steps are related to the pending area, which can be repeated each time to create, validate and submit this pending area.
- Create pending area
ii. Validate Pending area
iii. Submit pending area
Following example assign 80% of the CPU-resources to sessions in the OLTP-group, and 10% to ADHOC- and remaining 10% to BATCH-group each. assuming we have created 3 users, ADHOC, BATCH, and OLTP and assigned a consumer group for each of them. The CPU-resources are allocated across all consumer-groups by the percentages given to each group. Specifying a zero percentage for a consumer-group means that it should not get any processing resources at that level, given a CPU consumption of 100%. This can force sessions for that consumer-group to wait forever in an overloaded system. It does not mean that users belonging to OTHER_GROUPS (having 0%) never are able to run, but for a fully loaded system, sessions for OTHER_GROUPS have to wait for the others to finish work. If this is the only one active session running, it is of course allowed to utilize all available CPU resources up to 100%. But if another session is started in another group, Resource Manager will balance CPU resources according to the plan directives.
—Create pending area for plan, consumer group and directives
begin
dbms_resource_manager.create_pending_area();
end;
/
—1. Create resource plans
begin
dbms_resource_manager.create_plan(
plan => ‘MYDB_PLAN’,
comment => ‘Resource plan/method for Single level sample’);
end;
/
—2. Create resource consumer groups
begin
dbms_resource_manager.create_consumer_group(
consumer_group => ‘OLTP_Group’,
comment => ‘Resource consumer group/method for online users sessions’);
dbms_resource_manager.create_consumer_group(
consumer_group => ‘BATCH_Group’,
comment => ‘Resource consumer group/method for users sessions who run batch jobs’);
dbms_resource_manager.create_consumer_group(
consumer_group => ‘ADHOC_Group’,
comment => ‘Resource consumer group/method for users sessions who execute Ad-Hoc Queries’);
end;
/
—3. Create resource plan directives
begin
dbms_resource_manager.create_plan_directive(
plan => ‘mydb_plan’,
group_or_subplan => ‘OLTP_Group’,
comment => ‘Online day users sessions at level 1’,
cpu_p1 => 80,
parallel_degree_limit_p1 => 0);
dbms_resource_manager.create_plan_directive(
plan => ‘mydb_plan’,
group_or_subplan => ‘BATCH_Group’,
comment => ‘batch day users sessions at level 1’,
cpu_p1 => 10,
parallel_degree_limit_p1 => 10);
dbms_resource_manager.create_plan_directive(
plan => ‘mydb_plan’,
group_or_subplan => ‘ADHOC_Group’,
comment => ‘ADHOC day users sessions at level 1’,
cpu_p1 => 10,
parallel_degree_limit_p1 => 5);
dbms_resource_manager.create_plan_directive(
plan => ‘mydb_plan’,
group_or_subplan => ‘OTHER_GROUPS’,
comment => ‘OTHER_GROUPS day users sessions at level 1’,
cpu_p1 => 0,
parallel_degree_limit_p1 => 0);
end;
/
—Validate Pending area for plan, consumer group and directives
begin
dbms_resource_manager.validate_pending_area();
end;
/
—submit pending area for plan, consumer group and directives
begin
dbms_resource_manager.submit_pending_area();
end;
/
—Next, we have to grant privileges in order to assign consumer groups to users:
—We need to again create a pending area, till we submit the pending area
—Create pending area for privilages, roles and assign users
begin
dbms_resource_manager.create_pending_area();
end;
/
—4. Grant switch privilege for resource consumer groups to users or roles
begin
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => ‘ADHOC’,
consumer_group => ‘ADHOC_Group’,
grant_option => FALSE);
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => ‘OLTP’,
consumer_group => ‘OLTP_Group’,
grant_option => FALSE);
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => ‘BATCH’,
consumer_group => ‘BATCH_Group’,
grant_option => FALSE);
end;
/
—5. Assign users to resource consumer groups
begin
dbms_resource_manager.set_initial_consumer_group(
user => ‘ADHOC’,
consumer_group => ‘ADHOC_Group’);
dbms_resource_manager.set_initial_consumer_group(
user => ‘OLTP’,
consumer_group => ‘OLTP_Group’);
dbms_resource_manager.set_initial_consumer_group(
user => ‘BATCH’,
consumer_group => ‘BATCH_Group’);
end;
/
—Validate Pending area for privilages, roles and assign users
begin
dbms_resource_manager.validate_pending_area();
end;
/
—submit pending area for privilages, roles and assign users
begin
dbms_resource_manager.submit_pending_area();
end;
/
- Specify a plan to be used by the instance
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = MYDB_PLAN;
Refer Oracle Documentation for “Creating a Complex Resource Plan” mentioned below and the Note 106948.1
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm005.htm
Checking Configuration and Monitoring Resource Manager
We can use dynamic performance views to help us monitor the results of our Oracle Database Resource Manager
Resource Plans:
select plan, cpu_method, status from dba_rsrc_plans order by 1;
PLAN CPU_METHOD STATUS
————- ———– ———
MYDB_PLAN EMPHASIS ACTIVE
1 row selected.
Resource Consumer Groups:
select consumer_group,cpu_method, status from dba_rsrc_consumer_groups order by 1;
CONSUMER_GROUP CPU_METHOD STATUS
—————————— —————————— ——————————
ADHOC_GROUP ROUND-ROBIN ACTIVE
BATCH_GROUP ROUND-ROBIN ACTIVE
DEFAULT_CONSUMER_GROUP ROUND-ROBIN ACTIVE
OLTP_GROUP ROUND-ROBIN ACTIVE
OTHER_GROUPS ROUND-ROBIN ACTIVE
5 rows selected.
Resource Plan Directives:
select plan, group_or_subplan, type, cpu_p1, cpu_p2, cpu_p3, cpu_p4, status
from dba_rsrc_plan_directives order by 1,2,3,4,5,6;
PLAN GROUP_OR_SUBPLAN TYPE CPU_P1 CPU_P2 CPU_P3 CPU_P4 STATUS
———————- ——————– ————– ———- ———- ———- ———- ——-
MYDB_PLAN ADHOC_GROUP CONSUMER_GROUP 10 0 0 0 ACTIVE
MYDB_PLAN BATCH_GROUP CONSUMER_GROUP 10 0 0 0 ACTIVE
MYDB_PLAN OLTP_GROUP CONSUMER_GROUP 80 0 0 0 ACTIVE
MYDB_PLAN OTHER_GROUPS CONSUMER_GROUP 0 0 0 0 ACTIVE
4 rows selected.
Resource consumer group privileges:
select * from dba_rsrc_consumer_group_privs;
GRANTEE GRANTED_GROUP GRA INI
—————————— —————————— — —
BATCH BATCH_GROUP NO YES
OLTP OLTP_GROUP NO YES
PUBLIC DEFAULT_CONSUMER_GROUP YES YES
ADHOC ADHOC_GROUP NO YES
4 rows selected.
These above users have the privilege to switch to a consumer group other than default.
Default consumer groups for users:
select username, initial_rsrc_consumer_group from dba_users;
USERNAME INITIAL_RSRC_CONSUMER_GROUP
—————————— ——————————
SYS DEFAULT_CONSUMER_GROUP
SYSTEM DEFAULT_CONSUMER_GROUP
OLTP OLTP_GROUP
ADHOC ADHOC_GROUP
OUTLN DEFAULT_CONSUMER_GROUP
DBSNMP DEFAULT_CONSUMER_GROUP
BATCH BATCH_GROUP
7 rows selected.
Monitor CPU Usage and Waits by Consumer Group:
In this example, the server has 16 CPUs which means that a maximum of 16 sessions can run at any time. Refer Note 1338988.1
select to_char(m.begin_time, ‘HH:MI’) time, m.consumer_group_name, m.cpu_consumed_time / 60000 avg_running_sessions, m.cpu_wait_time / 60000 avg_waiting_sessions, d.mgmt_p1*(select value from v$parameter where name = ‘cpu_count’)/100 allocation from v$rsrcmgrmetric_history m, dba_rsrc_plan_directives d, v$rsrc_plan p where m.consumer_group_name = d.group_or_subplan and p.name = d.plan order by m.begin_time, m.consumer_group_name;
TIME NAME AVG_RUNNING AVG_WAITING ALLOCATION
—– —————— ———– ———– ———-
13:34 ADHOC_GROUP 1.76 8.4 .8
13:34 BATCH_GROUP 2.88 .4 2.4
13:34 ETL_GROUP 0 0 2.4
13:34 INTERACTIVE_GROUP 10.4 6.8 5.6
13:34 OTHER_GROUPS .32 .08 .8
13:34 SYS_GROUP 0 0 4
The Below Articles gives more Scripts/Tips for Monitoring Oracle Resource Manager
Note 1338988.1 Scripts and Tips for Monitoring CPU Resource Manager
Note 106948.1 Database Resource Manager samples includes scripts and quires to check/monitor
Note 240877.1 Script to monitor PX limits from Resource Manager for active sessions
Note 428325.1 How to Find the Sessions Killed by MAX_IDLE_BLOCKER_TIME Plan Directive
Monitoring Oracle Database Resource Manager
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm011.htm
Resource Manager Data Dictionary Views
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm013.htm#i1008772
Cleaning the Resource Manager Plan
In order to delete the current plan, first it has to be `switched off’ or another plan has to be selected as current.
alter system set resource_manager_plan=”;
—Create pending area for delete plan and consumer group
begin
dbms_resource_manager.create_pending_area();
end;
/
–Delete plan (assuming we have created 2 plans – MYDB_PLAN, ANY_OTHER_CREATED_PLAN)
begin
dbms_resource_manager.delete_plan(
plan => ‘MYDB_PLAN’);
dbms_resource_manager.delete_plan(
plan => ‘ANY_OTHER_CREATED_PLAN’);
end;
/
–Delete consumer group
begin
dbms_resource_manager.delete_consumer_group(
consumer_group => ‘OLTP_GROUP’);
dbms_resource_manager.delete_consumer_group(
consumer_group => ‘BATCH_GROUP’);
dbms_resource_manager.delete_consumer_group(
consumer_group => ‘ADHOC_GROUP’);
end;
/
—Validate Pending area for delete plan and consumer group
begin
dbms_resource_manager.validate_pending_area();
end;
/
—submit pending area for delete plan and consumer group
begin
dbms_resource_manager.submit_pending_area();
end;
/
–Clearing only the Pending Area, if you dont want to validate and submit
BEGIN
DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
END;
/
Applications of Resource Manager (Additional Examples/Samples)
Resource Manager can be used in various ways to control and distribute the resources in Oracle Database Environment. The below Articles provides more samples/examples using resource manager for the database for different scenarios.
Note 106948.1 Database Resource Manager samples
Note 471265.1 Example: How to control CPU Resources using the Resource Manager and Scheduler
Note 1266650.1 How To Switch Users Between Resource Plans Based On Schedule Window
Note 1168574.1 How to Force RESOURCE_MANAGER_PLAN with the Scheduler window boundaries
Note 971991.1 How To Incorporate Pre-Defined jobs into your Resource Manager Plan
Note 277419.1 Prevention of long-running queries with RM MAX_EST_EXEC_TIME Plan Directive
Note 1359043.1 Configuring Parallel Statement Queuing to Manage Mixed Priority Workloads in a DataWarehouse
Note 470764.1 How to Control Resources used by a Statisics Job using the Resource Manager
Note 848666.1 How to Limit max number of concurrently active sessions with Resource Manager
Note 1321099.1 How to limit the Parallel Degree for PX Queries with Resource Manager
Note 1345429.1 Parallel Statement Queuing in 11.2.0.2
Note 1269321.1 Automatic Degree of Parallelism in 11.2.0.2
Note 1388634.1 Reverse Engineering a Resource Manager Plan From Within the Database
Note 987436.1 How to Identify the Session that Started the Resource Manager Pending Area
Note 398985.1 How to set Resource Manager to Disconnect Idle Users after a Predetermined time?
Note 233651.1 Why Resource Manager Is Not Distributing CPU As Per Resource Plan
Note 786346.1 Resource Manager and Sql Tunning Advisory DEFAULT_MAINTENANCE_PLAN
Note 1296086.1 Using PL/SQL To Execute SQL or Stored Procedure/Function Calls for a Set of Users
Note 727062.1 Configuring and using Calibrate I/O
Note 1393405.1 How To Delete Calibrate I/O In The Instance
Note 884082.1 Resource Manager Enhancements in Oracle Database 11g
Note 451889.1 Logical Standby and Resource Manager
Note 1339769.1 Master Note for Oracle Database Resource Manager for EXADATA
Note 1358709.1 Configuring Resource Manager for Mixed Workloads in a Database
Note 1362445.1 Configuring and Monitoring Instance Caging
Oracle Database Resource Manager Examples
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm007.htm
12c: Using Oracle Resource Manager on pluggable databases (PDBs) in a multitenant container database (CDB)
Oracle Resource Manager can be used to allocate resources to pluggable databases (PDBs) in a multitenant container database (CDB).
In a non-CDB, you can use Resource Manager to manage multiple workloads that are contending for system and database resources. However, in a CDB, you can have multiple workloads within multiple PDBs competing for system and CDB resources.
Please refer the Oracle Documentation Below
Using Oracle Resource Manager for PDBs with SQL*Plus
http://docs.oracle.com/cd/E16655_01/server.121/e17636/cdb_dbrm.htm
Using Oracle Resource Manager for PDBs with Cloud Control
http://docs.oracle.com/cd/E16655_01/server.121/e17636/cdb_dbrm_em.htm
Oracle Resource Manager and Operating System (OS) Resource manager
The Oracle Database Resource Manager solves many resource allocation problems that an operating system does not manage well like Excessive overhead, Inefficient scheduling, Inappropriate allocation of resources, Inability to manage database-specific resources.
http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm012.htm
The Resource Manager helps overcome these problems by giving the database more control over allocation of hardware resources and enabling you to prioritize work within the database. You can classify sessions into groups based on session attributes, and then allocate resources to these groups to optimize hardware utilization. Refer the Note 1102753.1 mentioned below, if you want to enable Oracle Resource Manager and an Operating System Resource Manager together on one system
Note 1102753.1 Operating System Resource Manager and Oracle Resource Manager support
Oracle Database Services and Resource Manager
Database Resource Manager can map services to consumer groups. Therefore, you can automatically manage the priority of one service relative to others. You can use consumer groups to define relative priority in terms of either ratios or resource consumption. Services are integrated with the Resource Manager, which enables you to restrict the resources that are used by the users who connect to an instance by using a service. The Resource Manager enables you to map a consumer group to a service so that users who connect to an instance using that service are members of the specified consumer group.
Troubleshooting/Knownissues
The following Troubleshooting Guide (TSG) can assist you for investigating the knownissues and will help you to fix those.
Note 975455.1 Troubleshooting Guide: Oracle Resource Manager
Recommended Patches
The following Notes will list out the recommended patches for Oracle Database Resource Manager, so that you can use RM without issues.
Note 1340184.1 Recommended Patches for Managing Runaway Queries with RM (Supercedes Note 1208133.1)
Note 1339803.1 Recommended Patches for CPU Resource Manager (Supersedes Note 1207483.1)
Note 1340172.1 Recommended Patches for Instance Caging (Supersedes Note 1208064.1)
Note 1340178.1 Recommended Patches for Resource Manager Utilization Limits(Supercedes Note 1208104.1)
Note 1340180.1 Recommended Patches for Parallel Statement Queuing
Note 1340181.1 Recommended Patches for Exadata I/O Resource Manager