Oracle Database Consolidation: Noel Yuhanna
Oracle Database Consolidation: Noel Yuhanna
Noel Yuhanna
Agenda
Current environment
Why Consolidate?
How to Consolidate?
Challenges and Guidelines
Resource Manager – OS and Database
Steps in using DB Resource Manager
Benchmark results
Recommendations
How to proceed?
Development
UAT
Test Production
Training
60%
10%
5%
20%
Average utilization = 30%
50%
Payroll
Payroll
Financials
HR HR
Single Database
Multi-Instance
New Schema
Payroll Financials
New Instance
Existing Instance
Cluster Interconnect
S S
G Server Server G
A A
Shared Storage
FIN HR
HR
FIN
DB
Example:
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN => ‘SIEBEL_PLAN’,
COMMENT => ‘Plan for Siebel DB Server’);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP => ‘group_name’,
COMMENT => ‘Comment here’);
Example:
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP => ‘OLTP’,
COMMENT => ‘Group for OLTP users’);
Example:
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN => ‘SIEBEL_PLAN’,
GROUP_OR_SUBPLAN => ‘OLTP’,
COMMENT => ‘Plan directive for OLTP users’,
CPU_P1 => 80,
PARALLEL_DEGREE_LIMIT_P1 => 4);
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => ‘grantee name’,
CONSUMER_GROUP => ‘Consumer group name’,
GRANT_OPTION => ‘True/False’);
Example:
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
GRANTEE_NAME => ‘NOEL’,
CONSUMER_GROUP => ‘OLTP’,
GRANT_OPTION => ‘TRUE’);
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(
USER => ‘ user name’,
CONSUMER_GROUP => ‘Initial consumer group’);
Example:
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(
USER => ‘NOEL’,
CONSUMER_GROUP => ‘OLTP’);
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS(
SESSION_ID => ‘session_id’,
SESSION_SERIAL => ‘session serial number’,
CONSUMER_GROUP => ‘group_name’);
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER(
USER => ‘User name’,
CONSUMER_GROUP => ‘group_name’);
Example:
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER(
USER => ‘NOEL’,
CONSUMER_GROUP => ‘OLTP’);
Persistent (init.ora)
RESOURCE_MANAGER_PLAN = “SIEBEL_PLAN”
Dynamic
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN =
“SIEBEL_PLAN”;
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN=“”;
VIEWS/SYSTEM TABLES
V$RSRC_CONSUMER_GROUP
V$RSRC_PLAN
V$RSRC_CONSUMER_GROUP_CPU_MTH
V$RSRC_PLAN_CPU_MTH
V$SESSION
DBA_RSRC_CONSUMER_GROUPS
DBA_RSRC_CONSUMER_GROUP_PRIVS
DBA_RSRC_MANAGER_SYSTEM_PRIVS
DBA_RSRC_PLANS
DBA_RSRC_PLAN_DIRECTIVIES
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'CON_PLAN',
COMMENT => 'COMMENT');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'oltp',
COMMENT => 'Resource consumer group for OLTP');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'batch',
COMMENT => 'BATCH');
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'CON_PLAN',
GROUP_OR_SUBPLAN => 'oltp', COMMENT => 'OLTP SESS', CPU_P1 => 80);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'CON_PLAN',
GROUP_OR_SUBPLAN => 'batch', COMMENT => 'BATCH',CPU_P2 => 100);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'CON_PLAN',
GROUP_OR_SUBPLAN => 'OTHER_GROUPS',COMMENT => 'mandatory',CPU_P3 => 100);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
100 OLTP
100 Others 70.86 36.39
Others
Use active-active OS cluster
Multi-domain functionality – offered by H/W vendors