Oracle 12c PDB资源管理之IO、内存、CPU

Oracle 12c 可以为不同的PDB做IO、内存、CPU限制。

1IO 资源管理

1.1 参数介绍

MAX_IOPS设置每个可插拔数据库(PDB)每秒可发出的最大I/O数
MAX_MBPS设置每个可插拔数据库(PDB)的基础上每秒发出的I/O的最大兆字节(MB)数
12cR2中,引入了两个参数MAX_IOPS和MAX_MBPS来限制PDB的物理IO。这两个参数只作用于PDB,不对CDB和非多租户环境生效。另外,这两个参数不限制redo log的写入(LGWR进程)和buffercache脏块写入磁盘(DBWR进程)
此功能仅对多租户容器数据库(CDB)启用。该功能在Oracle Exadata上不受支持。
这两个参数可以在PDB中设置。如果参数在CDB中设置,则该CDB中的所有PDB将继承CDB中的参数值。该参数不能在非CDB环境中设置。
MAX_IOPS默认值0意味着在PDB中每秒可以发出的最大I/O数量上没有设置限制。
MAX_MBP默认值0意味着在PDB中每秒可发出的I/O的最大兆字节数(MB)上不设置限制。
MAX_IOPS,MAX_MBP 不推荐使用非常低的值,例如:MAX_IOPS 小于100 , MAX_MBP 小于25
一些需要注意的地方:
·参数是独立的。 您可以使用none,one或both。
·当参数设置在CDB级别时,它们成为所有PDB使用的默认值。
·当它们设置在PDB级别时,它们覆盖任何默认值。
·如果在CDB和PDB级别的值为“0”,则没有I / O限制。
·实例的正常功能所必需的关键I/O不受限制,但只要涉及极限,就会计入总I/O,因此I/O可能暂时超过限制。
·这些参数仅适用于多租户架构。
·此功能不适用于Exadata。
·限制将导致名为I/O rate limit的等待事件。

1.2 设置I/O参数

下面是在CDB级别设置MAX_IOPS 和MAX_MBPS参数,值是对所有PDB。
--设置参数值
SQL>ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
SQL>ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
--移除参数值
SQL>ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
SQL>ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;
下面是PDB级别设置这两个参数:
SQL>ALTER SESSION SET CONTAINER = pdbcndba;
-- 设置指定PDB参数值
SQL>ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
SQL>ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
-- 移除指定PDB参数值
SQL>ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
SQL>ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;

1.3 监控PDB的I/O使用情况

Oracle现在提供视图去监控PDB的资源使用(CPU, I/O, parallel execution, memory)
如:
·V$RSRCPDBMETRIC:每个PDB一行,保存1分钟样本的最后一个。
·V$RSRCPDBMETRIC_HISTORY:每个PDB有61行,从V $ RSRCPDBMETRIC视图保存最后60分钟的样本。
·DBA_HIST_RSRC_PDB_METRIC:AWR快照,基于AWR保留期保留。
下面是具体的SQL:
SET LINESIZE 180
COLUMN pdb_name FORMAT A10
COLUMN begin_time FORMAT A26
COLUMN end_time FORMAT A26
ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';
-- 每个PDB最后样本
SELECT r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       r.iops,
       r.iombps,
       r.iops_throttle_exempt,
       r.iombps_throttle_exempt,
       r.avg_io_throttle
FROM   v$rsrcpdbmetric r,
       cdb_pdbs p
WHERE  r.con_id = p.con_id
ORDER BY p.pdb_name;
        CON_ID PDB_NAME   BEGIN_TIME END_TIME  IOPS   IOMBPS IOPS_THROTTLE_EXEMPT IOMBPS_THROTTLE_EXEMPT AVG_IO_THROTTLE
---------- ---------- -------------------------- -------------------------- ---------- ---------- -------------------- ---------------------- ---------------
 3 PDBCNDBA   10-JUN-2018 17:27:01 10-JUN-2018 17:28:01    .583333333 .016666667    .583333333    0    0
 5 PDBCNDBA2  10-JUN-2018 17:27:01 10-JUN-2018 17:28:01    .3 .016666667    .3    0    0

-- pdbcndba的最后几个小时的样本
SELECT r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       r.iops,
       r.iombps,
       r.iops_throttle_exempt,
       r.iombps_throttle_exempt,
       r.avg_io_throttle
FROM   v$rsrcpdbmetric_history r,
       cdb_pdbs p
WHERE  r.con_id = p.con_id
AND    p.pdb_name = 'pdbcndba'
ORDER BY r.begin_time;

-- pdbcndba的所有AWR快照的信息
SELECT r.snap_id,
       r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       r.iops,
       r.iombps,
       r.iops_throttle_exempt,
       r.iombps_throttle_exempt,
       r.avg_io_throttle
FROM   dba_hist_rsrc_pdb_metric r,
       cdb_pdbs p
WHERE  r.con_id = p.con_id
AND    p.pdb_name = 'pdbcndba'
ORDER BY r.begin_time;
当数据库中出现resmgr: I/O rate limit等待事件时,可以通过如下视图查询当前IO过载影响到的sql,p1值标示当前pdb_id,出现此等待事件就需要合理的调整max_iops 和max_mbps值,避免影响到关键性业务。
SELECT H.EVENT,
H.P1 AS PDB_ID,
C.PDB_NAME,
H.SQL_ID,
TO_CHAR(H.SAMPLE_TIME, 'YYYY-MM-D HH24:MI') AS SAMPLE_TIME,
H.INSTANCE_NUMBER
FROM DBA_HIST_ACTIVE_SESS_HISTORY H
JOIN CDB_PDBS C
ON C.PDB_ID = H.P1
AND H.EVENT = 'resmgr: I/O rate limit'
ORDER BY 4;

2内存资源管理

2.1 介绍

在Oracle 12c的多租户环境中,PDB的SGA使用情况可能会很不均衡,有些PDB占用了大量的SGA内存,导致某些PDB得不到足够的SGA,进而影响性能。在Oracle 12.2的多租户环境中,可以控制和监控每个PDB的主机资源使用情况。要控制每个PDB的主机资源使用,以下两个条件需要满足:
1). CDB$ROOT中初始化参数NONCDB_COMPATIBLE保持为默认的FALSE
2). CDB$ROOT中初始化参数MEMORY_TARGET没有设置或设置为0

2.2 管理PDB的SGA

1). SGA_TARGET参数控制PDB使用的最大SGA大小
   在PDB中,SGA_TARGET必须要小于或等于CDB$ROOT中的SGA_TARGET
2). SGA_MIN_SIZE参数控制PDB最小SGA大小
   SGA_MIN_SIZE参数的设置指导如下:
   SGA_MIN_SIZE设置的值必须要小于CDB$ROOT中SGA_TARGET的值50%
   SGA_MIN_SIZE设置的值必须要小于PDB中SGA_TARGET值的50%
   所有PDB的SGA_MIN_SIZE值总和必须要小于CDB$ROOT中SGA_TARGET的值50%

注意:只有当CDB$ROOT中SGA_TARGET为非0值时,PDB中的SGA_TARGET和SGA_MIN_SIZE才生效。
   alter session set container=pdbcndba;
   ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH;
   ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;

对于更细致的控制,可以设置PDB的DB_CACHE_SIZE和SHARED_POOL_SIZE。

2.3 管理PDB的PGA

在PDB级别上设置PGA_AGGREGATE_TARGET和PGA_AGGREGATE_LIMIT可以控制某个PDB的PGA使用情况。
PGA_AGGREGATE_TARGET是目标值,PGA_AGGREGATE_LIMIT是限制值。
如果PGA使用量达到PGA_AGGREGATE_LIMIT这个限制值,会话就会报错。
PGA_AGGREGATE_TARGET设置指导如下:
   必须小于或等于CDB$ROOT的PGA_AGGREGATE_TARGET
   必须小于或等于CDB$ROOT的PGA_AGGREGATE_LIMIT的50%
   必须小于或等于PDB的PGA_AGGREGATE_LIMIT的50%

PGA_AGGREGATE_LIMIT设置PDB的最大PGA使用量,设置指导如下:
   必须小于或等于CDB$ROOT的PGA_AGGREGATE_LIMIT
   必须大于或等于PDB的PGA_AGGREGATE_TARGET × 2

在PDB上设置PGA参数如下:
   alter session set container=pdbcndba;
   ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 500M SCOPE = BOTH;
   ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 300M SCOPE = BOTH;

2.4 监控PDB的内存使用

以下两个视图用于监控PDB的资源使用
•  V$RSRCPDBMETRIC 
•  V$RSRCPDBMETRIC_HISTORY
SQL> show parameter NONCDB_COMPATIBLE
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
noncdb_compatible     boolean FALSE
SQL> show parameter MEMORY_TARGET;
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target     big integer 1520M
SQL> alter system set MEMORY_TARGET=0 SCOPE = BOTH;

System altered.
SQL> show parameter MEMORY_TARGET;

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target     big integer 0

SQL> alter session set container=pdbcndba;

Session altered.

SQL> ALTER SYSTEM SET SGA_TARGET = 500M SCOPE = BOTH;

System altered.

SQL> ALTER SYSTEM SET SGA_MIN_SIZE = 100M SCOPE = BOTH;

System altered.

SQL>  ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 300M SCOPE = BOTH;

System altered.

SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 100M SCOPE = BOTH;

System altered.

SQL> COLUMN PDB_NAME FORMAT A10
SQL> SELECT r.CON_ID, p.PDB_NAME, 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;
  2  
    CON_ID PDB_NAME    SGA_BYTES  PGA_BYTES BUFFER_CACHE_BYTES SHARED_POOL_BYTES
---------- ---------- ---------- ---------- ------------------ -----------------
 3 PDBCNDBA29335384    5145798      1327759316057790
 5 PDBCNDBA252131113  0      4190208010229033
SGA_BYTES – PDB当前SGA大小
BUFFER_CACHE_BYTES – PDB当前buffer cache大小
SHARED_POOL_BYTES – PDB当前shared pool大小
PGA_BYTES – PDB当前PGA大小
历史统计信息可以参考:DBA_HIST_RSRC_PDB_METRIC

2.5 控制PDB存储器的初始化参数

几个初始化参数可以控制PDB的内存使用情况。
当您使用PDB作为当前容器设置以下初始化参数时,这些参数将控制当前PDB的内存使用情况。当为PDB设置了一个或多个这些参数时,请确保CDB和其他PDB具有足够的内存用于其操作。
DB_CACHE_SIZE:
为PDB设置最小保证缓冲区缓存空间。
必须满足以下要求:
• 它必须小于或等于DB_CACHE_SIZECDB根目录设置的50%。
• DB_CACHE_SIZE所有PDB 的设置总和必须小于或等于DB_CACHE_SIZECDB根目录中设置的50%。
如果SGA_TARGET初始化参数在CDB根目录中设置为非零值,则这些要求不适用。
当SGA_TARGET初始化参数设置为非零,下列要求必须满足:
• DB_CACHE_SIZE的值加上SHARED_POOL_SIZE在PDB必须小于或等于该PDB的50%SGA_TARGET值。
• PDB中的DB_CACHE_SIZE加号值SHARED_POOL_SIZE必须小于或等于SGA_TARGETCDB级别值的50%。
• CDB中所有PDB 的DB_CACHE_SIZE加和总和SHARED_POOL_SIZE必须小于或等于SGA_TARGETCDB级别的50%。
SHARED_POOL_SIZE:
设置PDB的最小保证共享池空间。
必须满足以下要求:
•它必须小于或等于SHARED_POOL_SIZECDB根目录设置的50%。
•SHARED_POOL_SIZE所有PDB 的设置总和必须小于或等于SHARED_POOL_SIZECDB根目录中设置的50%。
如果SGA_TARGET初始化参数在CDB根目录中设置为非零值,则这些要求不适用。
当SGA_TARGET初始化参数设置为非零,下列要求必须满足:
•DB_CACHE_SIZE的值加上SHARED_POOL_SIZE在PDB必须小于或等于该PDB的50%SGA_TARGET值。
•PDB中的DB_CACHE_SIZE加号值SHARED_POOL_SIZE必须小于或等于SGA_TARGETCDB级别值的50%。
•CDB中所有PDB 的DB_CACHE_SIZE加和总和SHARED_POOL_SIZE必须小于或等于SGA_TARGETCDB级别的50%。
PGA_AGGREGATE_LIMIT:
设置PDB的最大PGA尺寸。
必须满足以下要求:
•它必须小于或等于PGA_AGGREGATE_LIMITCDB根目录中的设置。
•它必须大于或等于PGA_AGGREGATE_TARGETPDB中设置的两倍。
PGA_AGGREGATE_TARGET:
设置PDB的目标聚合PGA大小。
必须满足以下要求:
•它必须小于或等于PGA_AGGREGATE_TARGETCDB级别设定的值。
•它必须小于或等于PGA_AGGREGATE_LIMIT在CDB级设置的初始化参数值的50%。
•它必须小于或等于PGA_AGGREGATE_LIMITPDB中设置的值的50%。
SGA_MIN_SIZE:
设置PDB的最小SGA大小。
必须满足以下要求:
•它必须小于或等于SGA_TARGETCDB根目录设置的50%。
•它必须小于或等于SGA_TARGETPDB中设置的50%。
•SGA_MIN_SIZE所有PDB 的设置总和必须小于或等于SGA_TARGETCDB根目录中设置的50%。
如果SGA_TARGET初始化参数未设置或0在CDB根目录中设置为(零),则这些要求不适用。
最佳做法是将SGA_MIN_SIZE所有PDB 的值的总和限制为CDB的SGA大小的50%或更少。
SGA_TARGET:
设置PDB的最大SGA大小。
SGA_TARGET只有在SGA_TARGET初始化参数在CDB根目录中设置为非零值时,才会强制执行PDB中的设置。SGA_TARGETPDB中的设置必须小于或等于SGA_TARGETCDB根中的设置。

3CPU资源管理

数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resource plans来管理不同pdb对CPU资源的使用。
PDB数量很多的情况下,使用这种CDB级别的资源计划对每个PDB进行资源限制会很麻烦。在12cR2版本中,引入了PDB Performance profile特性,来使一组PDB使用相同的resource plan,而不是一个个PDB进行配置。一些资源需求相同的PDB,可以创建一个performance profile,这些PDB只要设置一下DB_PERFORMANCE_PROFILE初始化参数,就可以使用相同的性能配置。

3.1 分配资源给PDB的份额

要在PDB之间分配资源,请为每个PDB或每个PDB性能配置文件分配一个共享值。较高的份额值可为PDB或使用PDB性能配置文件的PDB提供更多的保证资源。
可以使用软件包中的CREATE_CDB_PLAN_DIRECTIVE过程为PDB指定共享值DBMS_RESOURCE_MANAGER。shares此过程中的参数指定PDB的份额值。
可以使用软件包中的CREATE_CDB_PROFILE_DIRECTIVE过程为PDB性能配置文件指定共享值DBMS_RESOURCE_MANAGER。shares此过程中的参数指定PDB性能配置文件的份额值。多个PDB可以使用相同的PDB性能配置文件。
下图显示了一个在CDB资源计划中为他们指定了共享值的三个PDB的示例
Oracle 12c PDB资源管理之IO、内存、CPU_第1张图片
显示shares总数为7(3加3加1)。的salespdb和servicespdbPDB是资源的每个保证3/7,而hrpdbPDB是保证资源的1/7。但是,如果没有资源争用,任何PDB都可以使用比保证的资源更多的资源。

3.2 PDB的默认指令

当您没有明确定义PDB的指令时,PDB使用PDB的默认指令。

指令 属性值
shares 1
utilization_limit 100
parallel_server_limit 100

当PDB插入CDB并且没有为其定义指令时,PDB使用PDB的默认指令。

您可以为新的PDB创建新的指令。您还可以使用包中的UPDATE_CDB_DEFAULT_DIRECTIVE过程更改PDB的默认指令属性值DBMS_RESOURCE_MANAGER。

当一个PDB从CDB拔出时,PDB的指令被保留。如果同一个PDB被插回到CDB中,那么如果指令没有被手动删除,它将使用为其定义的指令。说

3.3 CDB资源计划中的默认指令

Oracle 12c PDB资源管理之IO、内存、CPU_第2张图片
上图说明默认的pdb指令share值为1,utilization_limit为50%,parallel_server_limit 是50%,当pdb没有指定指令时,例如marketingpdb和testingpdb就会使用默认的performance profile,因此marketingpdb和testingpdb每个都拿到1和cpu使用的50%。

一个指令可以给多个PDB使用,但是一个PDB不能用多个指令。

3.4 创建PDB性能配置的CDB资源计划

3.4.1使用以下CREATE_PENDING_AREA步骤创建挂起区域

exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

3.4.2创建一个newcdb_plan使用该CREATE_CDB_PLAN过程命名的CDB资源计划

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
    plan    => 'newcdb_plan',
    comment => 'CDB resource plan for newcdb');
END;
/

3.4.3使用该CREATE_CDB_PLAN_DIRECTIVE过程为PDB创建CDB资源计划指令

--创建PDB profile, gold
BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
    plan                  => 'newcdb_plan', 
    profile               => 'gold', 
    shares                => 3, 
    utilization_limit     => 100,
    parallel_server_limit => 100);
END;
/
--创建PDB profile, silver
BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
    plan                  => 'newcdb_plan', 
    profile               => 'silver', 
    shares                => 2, 
    utilization_limit     => 40,
    parallel_server_limit => 40);
END;
/
--创建PDB profile, silver
BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
    plan                  => 'newcdb_plan', 
    profile               => 'bronze', 
    shares                => 1, 
    utilization_limit     => 20,
    parallel_server_limit => 20);
END;
/

此CDB中的所有其他PDB都使用默认的PDB指令。

3.4.4更新当前默认CDB资源计划指令

如果PDB的当前默认CDB资源计划指令不符合您的要求,则使用该UPDATE_CDB_DEFAULT_DIRECTIVE过程更新指令
BEGIN
  DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE(
    plan                      => 'newcdb_plan', 
    new_shares                => 1, 
    new_utilization_limit     => 10,
    new_parallel_server_limit => 10);
END;
/

3.4.5更新当前自动任务CDB资源计划指令

如果当前自动任务CDB资源计划指令不符合您的要求,则使用该UPDATE_CDB_AUTOTASK_DIRECTIVE过程更新指令, autotask指令适用于在root 维护窗口中运行的自动维护任务
BEGIN
  DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE(
    plan                      => 'newcdb_plan', 
    new_shares                => 1, 
    new_utilization_limit     => 60,
    new_parallel_server_limit => 60);
END;
/

3.4.6使用以下VALIDATE_PENDING_AREA步骤验证pending area

exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();

3.4.7使用以下SUBMIT_PENDING_AREA步骤提交pending area

exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

3.4.8启动资源管理

在CDB$ROOT中
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'newcdb_plan';

3.4.9设置PDB db_performance_profile

alter session set container=pdbcndba;
ALTER SYSTEM SET DB_PERFORMANCE_PROFILE=gold SCOPE=spfile;

3.4.10重启pdb

alter session set container=pdbcndba;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN;

3.4.11检查PDB的参数

Alter session set container=CDB$ROOT;
col value for a20
col name from a50
set line 200
SQL> Select inst_id, name, con_id, value, ispdb_modifiable from gv$system_parameter2 where name = 'db_performance_profile' order by 1,2,3,4;

   INST_ID NAME   CON_ID VALUE      ISPDB
---------- -------------------------------------------------- ---------- -------------------- -----
 1 db_performance_profile       0      TRUE
 1 db_performance_profile       3 GOLD      TRUE

3.4.12检查PDB的资源管理设置

Alter session set container=CDB$ROOT;
Select p.name,shares,utilization_limit,parallel_server_limit,profile from v$rsrc_plan r,v$pdbs p where r.con_id = p.con_id;
SQL> Select p.name,shares,utilization_limit,parallel_server_limit,profile from v$rsrc_plan r,v$pdbs p where r.con_id = p.con_id;

NAME       SHARES UTILIZATION_LIMIT PARALLEL_SERVER_LIMIT PROFILE
-------------------------------------------------- ---------- ----------------- --------------------- --------------------------------
PDB$SEED    1     10    10
PDBCNDBA    3      GOLD
PDBCNDBA2    1     10    10
我们只需要在相应的pdb中设置db_performance_profile初始化参数即可让当前的PDB使用哪个profile了。

3.4.13监视PDB的CPU使用情况

该V$RSRCPDBMETRIC视图使您能够以毫秒为单位,以会话数量或过去一分钟的利用率来跟踪CPU指标。它为每个PDB提供实时指标,并且在您正在运行工作负载并希望持续监视CPU资源利用率的情况下非常有用。

PDB的CPU使用率是使用PDB的CDB的活动CDB资源计划管理的。您可以使用此视图来比较具有其他PDB设置的PDB的最大可能CPU利用率和平均CPU利用率百分比,例如CPU使用时间,CPU等待时间,CPU使用的平均会话数以及正在等待的会话数用于CPU分配。例如,您可以查看PDB使用的CPU资源数量以及等待资源分配的时间。或者,您可以查看每个PDB执行的会话数与活动会话总数的关系。
--根据PDB的CPU利用率跟踪CPU消耗
要根据CPU利用率跟踪CPU消耗,请使用CPU_UTILIZATION_LIMIT和AVG_CPU_UTILIZATION列。AVG_CPU_UTILIZATION列出PDB消耗的服务器CPU的平均百分比。CPU_UTILIZATION_LIMIT表示PDB可以使用的服务器CPU的最大百分比。此限制是使用UTILIZATION_LIMIT指令属性设置的
COLUMN PDB_NAME FORMAT A10
SELECT r.CON_ID, p.PDB_NAME, r.CPU_UTILIZATION_LIMIT, r.AVG_CPU_UTILIZATION 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;
    CON_ID PDB_NAME   CPU_UTILIZATION_LIMIT AVG_CPU_UTILIZATION
---------- ---------- --------------------- -------------------
 3 PDBCNDBA100      0
 5 PDBCNDBA2 10      0
--跟踪PDB的CPU消耗和节流
使用CPU_CONSUMED_TIME和CPU_TIME_WAIT列来跟踪每个PDB的CPU消耗和限制(以毫秒为单位)。该列NUM_CPUS表示Resource Manager正在管理的CPU数量。
COLUMN PDB_NAME FORMAT A10
SELECT r.CON_ID, p.PDB_NAME, r.CPU_CONSUMED_TIME, r.CPU_WAIT_TIME, r.NUM_CPUS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;
    CON_ID PDB_NAME   CPU_CONSUMED_TIME CPU_WAIT_TIMENUM_CPUS
---------- ---------- ----------------- ------------- ----------
 3 PDBCNDBA      0     0       1
 5 PDBCNDBA2      0     0       1
--根据PDB会话数跟踪CPU消耗和节流
跟踪会话的数量方面的CPU消耗和限制,使用RUNNING_SESSIONS_LIMIT,AVG_RUNNING_SESSIONS和AVG_WAITING_SESSIONS列。RUNNING_SESSIONS_LIMIT列出可以随时运行的特定PDB的最大会话数。此限制由UTILIZATION_LIMIT您为PDB设置的指令属性定义。AVG_RUNNING_SESSIONS列出正在使用CPU的会话的平均数量,并AVG_WAITING_SESSIONS列出正在等待CPU的平均会话数量。
COLUMN PDB_NAME FORMAT A10
SELECT r.CON_ID, p.PDB_NAME, r.RUNNING_SESSIONS_LIMIT, r.AVG_RUNNING_SESSIONS, r.AVG_WAITING_SESSIONS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;
    CON_ID PDB_NAME   RUNNING_SESSIONS_LIMIT AVG_RUNNING_SESSIONS AVG_WAITING_SESSIONS
---------- ---------- ---------------------- -------------------- --------------------
 3 PDBCNDBA   10     0
 5 PDBCNDBA2  .10     0

参考链接:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/admin/using-oracle-resource-manager-for-pdbs-with-sql-plus.html#GUID-2708E76D-E18B-4586-920A-BD4B904AE14D

你可能感兴趣的:(Oracle,12c)