oracle数据库管理-pdb内存、IO、CPU

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

IO 资源管理

相关的参数如下:

  • 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;

扫描二维码关注公众号,回复: 12740242 查看本文章

下面是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;

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内存资源管理

在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的示例

显示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资源计划中的默认指令


上图说明默认的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资源计划

 
  1. BEGIN

  2. DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(

  3. plan => 'newcdb_plan',

  4. comment => 'CDB resource plan for newcdb');

  5. END;

  6. /

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

 
  1. --创建PDB profile, gold

  2. BEGIN

  3. DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(

  4. plan => 'newcdb_plan',

  5. profile => 'gold',

  6. shares => 3,

  7. utilization_limit => 100,

  8. parallel_server_limit => 100);

  9. END;

  10. /

  11. --创建PDB profile, silver

  12. BEGIN

  13. DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(

  14. plan => 'newcdb_plan',

  15. profile => 'silver',

  16. shares => 2,

  17. utilization_limit => 40,

  18. parallel_server_limit => 40);

  19. END;

  20. /

  21. --创建PDB profile, silver

  22. BEGIN

  23. DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(

  24. plan => 'newcdb_plan',

  25. profile => 'bronze',

  26. shares => 1,

  27. utilization_limit => 20,

  28. parallel_server_limit => 20);

  29. END;

  30. /

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

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

 
  1. 如果PDB的当前默认CDB资源计划指令不符合您的要求,则使用该UPDATE_CDB_DEFAULT_DIRECTIVE过程更新指令

  2. BEGIN

  3. DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE(

  4. plan => 'newcdb_plan',

  5. new_shares => 1,

  6. new_utilization_limit => 10,

  7. new_parallel_server_limit => 10);

  8. END;

  9. /

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

 
  1. 如果当前自动任务CDB资源计划指令不符合您的要求,则使用该UPDATE_CDB_AUTOTASK_DIRECTIVE过程更新指令, autotask指令适用于在root 维护窗口中运行的自动维护任务

  2. BEGIN

  3. DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE(

  4. plan => 'newcdb_plan',

  5. new_shares => 1,

  6. new_utilization_limit => 60,

  7. new_parallel_server_limit => 60);

  8. END;

  9. /

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启动资源管理

 
  1. 在CDB$ROOT中

  2. ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'newcdb_plan';

3.4.9设置PDB db_performance_profile

 
  1. alter session set container=pdbcndba;

  2. ALTER SYSTEM SET DB_PERFORMANCE_PROFILE=gold SCOPE=spfile;

3.4.10重启pdb

 
  1. alter session set container=pdbcndba;

  2. ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

  3. ALTER PLUGGABLE DATABASE OPEN;

3.4.11检查PDB的参数

 
  1. Alter session set container=CDB$ROOT;

  2. col value for a20

  3. col name from a50

  4. set line 200

  5. 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;

  6.  
  7. INST_ID NAME CON_ID VALUE ISPDB

  8. ---------- -------------------------------------------------- ---------- -------------------- -----

  9. 1 db_performance_profile 0 TRUE

  10. 1 db_performance_profile 3 GOLD TRUE

3.4.12检查PDB的资源管理设置

 
  1. Alter session set container=CDB$ROOT;

  2. 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;

  3. 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;

  4.  
  5. NAME SHARES UTILIZATION_LIMIT PARALLEL_SERVER_LIMIT PROFILE

  6. -------------------------------------------------- ---------- ----------------- --------------------- --------------------------------

  7. PDB$SEED 1 10 10

  8. PDBCNDBA 3 GOLD

  9. PDBCNDBA2 1 10 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

 

猜你喜欢

转载自blog.csdn.net/oradbm/article/details/103472238