LAB – Multitenant Resource Management
Introduction
Oracle 12c Release 2 New Features:
Controlling Memory allocation and Disk I/O on individual PDB.
In the previous release (12.1) oracle introduced Multitenant Database, allowing better management of resources and cost reduction.
On oracle 12c release 1 there was no easy way to control the amount of disk I/O and memory usage on individual PDB. As a result a “Noise Neighbor” could use lots of Memory and I/O impacting the performance of other PDB in the same instance.
In oracle 12c release 2 we can restrict the amount of memory and disk I/O on PDB Level, as well as creating resource plans based on performance profiles, which defines the resource management for groups of PDBs.
Requirements
Oracle 12c release 2 onward.
Container Database (Multitenant).
PDB Memory Parameters
The following parameters can be set at the PDB level.
DB_CACHE_SIZE: The minimum buffer cache size for the PDB.
SHARED_POOL_SIZE: The minimum shared pool size for the PDB.
PGA_AGGREGATE_LIMIT: The maximum PGA size for the PDB.
PGA_AGGREGATE_TARGET: The target PGA size for the PDB.
SGA_MIN_SIZE: The minimum SGA size for the PDB.
SGA_TARGET: The maximum SGA size for the PDB.These initialization parameters control the memory usage of PDBs only if the following conditions are met:
- The NONCDB_COMPATIBLE initialization parameter is set to false in the CDB root.
- The MEMORY_TARGET initialization parameter is not set or is set to 0 (zero) in the CDB root.
SQL> show parameter target
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- ------------------------------------------
memory_max_target big integer 0
memory_target big integer 0
pga_aggregate_target big integer 200M
sga_target big integer 800M
SQL> show parameter NONCDB_COMPATIBLE
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- ------------------------------------------
noncdb_compatible boolean FALSESet PDB as current Container
SQL> alter session set container = WINTPDB;Set SGA_TARGET for the current PDB
SQL> alter system set sga_target=300M scope=both;
Sistema alterado.
SQL> show parameter sga_target
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- -----------------------------
sga_target big integer 300MI/O Parameters
The following parameters can be set at the PDB level.
MAX_IOPS : The maximum I/O operations per second for the PDB.
MAX_MBPS : The maximum megabytes of I/O per second for the PDB.View parameter on CDB level. (If set at the CDB level they become default values used on all PDBs)
SQL> show parameter max_iops
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- -------------------------------
max_iops integer 0Set PDB as current Container
SQL> alter session set container = WINTPDB;Set MAX_IOPS for the current PDB
SQL> alter system set max_iops=100 scope=both;
Sistema alterado.
SQL> show parameter max_iops
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- -----------------------------
max_iops integer 100Monitoring Resources
The following views can be used to monitor PDB Resources (CPU, I/O, Parallel Execution, Memory).
V$RSRCPDBMETRIC : A single row per PDB, holding the last of the 1 minute samples.
V$RSRCPDBMETRIC_HISTORY : 61 rows per PDB, holding the last 60 minutes worth of samples from the V$RSRCPDBMETRIC view.
V$RSRC_PDB : Cumulative statistics since the CDB resource plan ws set.
DBA_HIST_RSRC_PDB_METRIC : AWR snaphots, retained based on the AWR retention period.Monitor I/O and Memory Usage for PDBs (Last 1 minute samples)
COLUMN pdb_name FORMAT A10
COLUMN begin_time FORMAT A21
COLUMN end_time FORMAT A21
SELECT r.con_id,
p.pdb_name,
r.begin_time,
r.end_time,
round(r.iops ,3) iops,
round(r.iombps ,3) iombps,
round(r.iops_throttle_exempt ,3) iops_throttle_exempt,
round(r.iombps_throttle_exempt ,3) iombps_throttle_exempt,
r.avg_io_throttle,
r.sga_bytes,
r.pga_bytes,
r.buffer_cache_bytes,
r.shared_pool_bytes
FROM v$rsrcpdbmetric r,
cdb_pdbs p
WHERE r.con_id = p.con_id
ORDER BY p.pdb_name;DB Performance Profiles
In Oracle 12c Release 2 is possible to create a resource plan based on performance profiles which defines the resource management for groups of PDBs.
Each profile directive is made up of the following elements:
profile : The profile the directive relates to.
shares : The proportion of the CDB resources available to the PDB.
utilization_limit : The percentage of the CDBs available CPU that is available to the PDB.
parallel_server_limit : The percentage of the CDBs available parallel servers (PARALLEL_SERVERS_TARGET initialization parameter) that are available to the PDB.
Creating CDB Resource Plan:
DECLARE
l_plan VARCHAR2(30) := 'CDB_PLAN_TESTE';
BEGIN
DBMS_RESOURCE_MANAGER.clear_pending_area;
DBMS_RESOURCE_MANAGER.create_pending_area;
DBMS_RESOURCE_MANAGER.create_cdb_plan(
plan => l_plan,
comment => 'Profile Plan para Testes');
DBMS_RESOURCE_MANAGER.create_cdb_profile_directive(
plan => l_plan,
profile => 'gold',
shares => 3,
memory_min => 50);
DBMS_RESOURCE_MANAGER.create_cdb_profile_directive(
plan => l_plan,
profile => 'silver',
shares => 2,
utilization_limit => 40,
memory_limit => 25);
DBMS_RESOURCE_MANAGER.validate_pending_area;
DBMS_RESOURCE_MANAGER.submit_pending_area;
END;
/Information about the available CDB resource plans can be queried using the DBA_CDB_RSRC_PLANS view.
col comments format a30
col plan format a30
col profile format a30
SELECT PLAN, PROFILE, SHARES, UTILIZATION_LIMIT, PARALLEL_SERVER_LIMIT, MEMORY_MIN, MEMORY_LIMIT, COMMENTS
FROM DBA_CDB_RSRC_PLAN_DIRECTIVES
WHERE PLAN = 'CDB_PLAN_TESTE';View parameter on CDB level. (If set at the CDB level they become default values used on all PDBs)
SHOW PARAMETER RESOURCE_MANAGER_PLAN
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'CDB_PLAN_TESTE';Setting performance profile on PDB
ALTER SESSION SET CONTAINER=WINTPDB;
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'CDB_PLAN_TESTE';
ALTER SYSTEM SET DB_PERFORMANCE_PROFILE=gold SCOPE=SPFILE;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN;
SHOW PARAMETER DB_PERFORMANCE_PROFILE;
References:
https://oracle-base.com/articles/12c/multitenant-disk-iops-mdps-resource-management-for-pdbs-12cr2
https://oracle-base.com/articles/12c/multitenant-memory-resource-management-for-pdbs-12cr2
https://oracle-base.com/articles/12c/multitenant-resource-manager-pdb-performance-profiles-12cr2
https://www.linkedin.com/pulse/oracle-12c-release-2-new-feature-controlling-memory-gavin-soorma/
Atualizado em 9 de janeiro de 2019.