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

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

1IO 资源管理

1.1 参数介绍

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

1.2 设置I/O参数

  1. 下面是在CDB级别设置MAX_IOPS 和MAX_MBPS参数,值是对所有PDB。
  2. --设置参数值
  3. SQL>ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
  4. SQL>ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
  5. --移除参数值
  6. SQL>ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
  7. SQL>ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;
  8. 下面是PDB级别设置这两个参数:
  9. SQL>ALTER SESSION SET CONTAINER = pdbcndba;
  10. -- 设置指定PDB参数值
  11. SQL>ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
  12. SQL>ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
  13. -- 移除指定PDB参数值
  14. SQL>ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
  15. SQL>ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;

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

  1. Oracle现在提供视图去监控PDB的资源使用(CPU, I/O, parallel execution, memory)
  2. 如:
  3. ·V$RSRCPDBMETRIC:每个PDB一行,保存1分钟样本的最后一个。
  4. ·V$RSRCPDBMETRIC_HISTORY:每个PDB有61行,从V $ RSRCPDBMETRIC视图保存最后60分钟的样本。
  5. ·DBA_HIST_RSRC_PDB_METRIC:AWR快照,基于AWR保留期保留。
  6. 下面是具体的SQL:
  7. SET LINESIZE 180
  8. COLUMN pdb_name FORMAT A10
  9. COLUMN begin_time FORMAT A26
  10. COLUMN end_time FORMAT A26
  11. ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
  12. ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';
  13. -- 每个PDB最后样本
  14. SELECT r.con_id,
  15. p.pdb_name,
  16. r.begin_time,
  17. r.end_time,
  18. r.iops,
  19. r.iombps,
  20. r.iops_throttle_exempt,
  21. r.iombps_throttle_exempt,
  22. r.avg_io_throttle
  23. FROM v$rsrcpdbmetric r,
  24. cdb_pdbs p
  25. WHERE r.con_id = p.con_id
  26. ORDER BY p.pdb_name;
  27. CON_ID PDB_NAME BEGIN_TIME END_TIME IOPS IOMBPS IOPS_THROTTLE_EXEMPT IOMBPS_THROTTLE_EXEMPT AVG_IO_THROTTLE
  28. ---------- ---------- -------------------------- -------------------------- ---------- ---------- -------------------- ---------------------- ---------------
  29. 3 PDBCNDBA 10-JUN-2018 17:27:01 10-JUN-2018 17:28:01 .583333333 .016666667 .583333333 0 0
  30. 5 PDBCNDBA2 10-JUN-2018 17:27:01 10-JUN-2018 17:28:01 .3 .016666667 .3 0 0
  31. -- pdbcndba的最后几个小时的样本
  32. SELECT r.con_id,
  33. p.pdb_name,
  34. r.begin_time,
  35. r.end_time,
  36. r.iops,
  37. r.iombps,
  38. r.iops_throttle_exempt,
  39. r.iombps_throttle_exempt,
  40. r.avg_io_throttle
  41. FROM v$rsrcpdbmetric_history r,
  42. cdb_pdbs p
  43. WHERE r.con_id = p.con_id
  44. AND p.pdb_name = 'pdbcndba'
  45. ORDER BY r.begin_time;
  46. -- pdbcndba的所有AWR快照的信息
  47. SELECT r.snap_id,
  48. r.con_id,
  49. p.pdb_name,
  50. r.begin_time,
  51. r.end_time,
  52. r.iops,
  53. r.iombps,
  54. r.iops_throttle_exempt,
  55. r.iombps_throttle_exempt,
  56. r.avg_io_throttle
  57. FROM dba_hist_rsrc_pdb_metric r,
  58. cdb_pdbs p
  59. WHERE r.con_id = p.con_id
  60. AND p.pdb_name = 'pdbcndba'
  61. ORDER BY r.begin_time;
  62. 当数据库中出现resmgr: I/O rate limit等待事件时,可以通过如下视图查询当前IO过载影响到的sql,p1值标示当前pdb_id,出现此等待事件就需要合理的调整max_iops 和max_mbps值,避免影响到关键性业务。
  63. SELECT H.EVENT,
  64. H.P1 AS PDB_ID,
  65. C.PDB_NAME,
  66. H.SQL_ID,
  67. TO_CHAR(H.SAMPLE_TIME, 'YYYY-MM-D HH24:MI') AS SAMPLE_TIME,
  68. H.INSTANCE_NUMBER
  69. FROM DBA_HIST_ACTIVE_SESS_HISTORY H
  70. JOIN CDB_PDBS C
  71. ON C.PDB_ID = H.P1
  72. AND H.EVENT = 'resmgr: I/O rate limit'
  73. ORDER BY 4;

2内存资源管理

2.1 介绍

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

2.2 管理PDB的SGA

  1. 1). SGA_TARGET参数控制PDB使用的最大SGA大小
  2. 在PDB中,SGA_TARGET必须要小于或等于CDB$ROOT中的SGA_TARGET
  3. 2). SGA_MIN_SIZE参数控制PDB最小SGA大小
  4. SGA_MIN_SIZE参数的设置指导如下:
  5. SGA_MIN_SIZE设置的值必须要小于CDB$ROOT中SGA_TARGET的值50%
  6. SGA_MIN_SIZE设置的值必须要小于PDB中SGA_TARGET值的50%
  7. 所有PDB的SGA_MIN_SIZE值总和必须要小于CDB$ROOT中SGA_TARGET的值50%
  8. 注意:只有当CDB$ROOT中SGA_TARGET为非0值时,PDB中的SGA_TARGET和SGA_MIN_SIZE才生效。
  9. alter session set container=pdbcndba;
  10. ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH;
  11. ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;
  12. 对于更细致的控制,可以设置PDB的DB_CACHE_SIZE和SHARED_POOL_SIZE。

2.3 管理PDB的PGA

  1. 在PDB级别上设置PGA_AGGREGATE_TARGET和PGA_AGGREGATE_LIMIT可以控制某个PDB的PGA使用情况。
  2. PGA_AGGREGATE_TARGET是目标值,PGA_AGGREGATE_LIMIT是限制值。
  3. 如果PGA使用量达到PGA_AGGREGATE_LIMIT这个限制值,会话就会报错。
  4. PGA_AGGREGATE_TARGET设置指导如下:
  5. 必须小于或等于CDB$ROOT的PGA_AGGREGATE_TARGET
  6. 必须小于或等于CDB$ROOT的PGA_AGGREGATE_LIMIT的50%
  7. 必须小于或等于PDB的PGA_AGGREGATE_LIMIT的50%
  8. PGA_AGGREGATE_LIMIT设置PDB的最大PGA使用量,设置指导如下:
  9. 必须小于或等于CDB$ROOT的PGA_AGGREGATE_LIMIT
  10. 必须大于或等于PDB的PGA_AGGREGATE_TARGET × 2
  11. 在PDB上设置PGA参数如下:
  12. alter session set container=pdbcndba;
  13. ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 500M SCOPE = BOTH;
  14. ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 300M SCOPE = BOTH;

2.4 监控PDB的内存使用

  1. 以下两个视图用于监控PDB的资源使用
  2. · V$RSRCPDBMETRIC
  3. · V$RSRCPDBMETRIC_HISTORY
  4. SQL> show parameter NONCDB_COMPATIBLE
  5. NAME TYPE VALUE
  6. ------------------------------------ ----------- ------------------------------
  7. noncdb_compatible boolean FALSE
  8. SQL> show parameter MEMORY_TARGET;
  9. NAME TYPE VALUE
  10. ------------------------------------ ----------- ------------------------------
  11. memory_target big integer 1520M
  12. SQL> alter system set MEMORY_TARGET=0 SCOPE = BOTH;
  13. System altered.
  14. SQL> show parameter MEMORY_TARGET;
  15. NAME TYPE VALUE
  16. ------------------------------------ ----------- ------------------------------
  17. memory_target big integer 0
  18. SQL> alter session set container=pdbcndba;
  19. Session altered.
  20. SQL> ALTER SYSTEM SET SGA_TARGET = 500M SCOPE = BOTH;
  21. System altered.
  22. SQL> ALTER SYSTEM SET SGA_MIN_SIZE = 100M SCOPE = BOTH;
  23. System altered.
  24. SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 300M SCOPE = BOTH;
  25. System altered.
  26. SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 100M SCOPE = BOTH;
  27. System altered.
  28. SQL> COLUMN PDB_NAME FORMAT A10
  29. SQL> SELECT r.CON_ID, p.PDB_NAME, r.SGA_BYTES, r.PGA_BYTES, r.BUFFER_CACHE_BYTES, r.SHARED_POOL_BYTES
  30. FROM V$RSRCPDBMETRIC r, CDB_PDBS p WHERE r.CON_ID = p.CON_ID;
  31. 2
  32. CON_ID PDB_NAME SGA_BYTES PGA_BYTES BUFFER_CACHE_BYTES SHARED_POOL_BYTES
  33. ---------- ---------- ---------- ---------- ------------------ -----------------
  34. 3 PDBCNDBA29335384 5145798 1327759316057790
  35. 5 PDBCNDBA252131113 0 4190208010229033
  36. SGA_BYTES – PDB当前SGA大小
  37. BUFFER_CACHE_BYTES – PDB当前buffer cache大小
  38. SHARED_POOL_BYTES – PDB当前shared pool大小
  39. PGA_BYTES – PDB当前PGA大小
  40. 历史统计信息可以参考: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. 此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. INST_ID NAME CON_ID VALUE ISPDB
  7. ---------- -------------------------------------------------- ---------- -------------------- -----
  8. 1 db_performance_profile 0 TRUE
  9. 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. NAME SHARES UTILIZATION_LIMIT PARALLEL_SERVER_LIMIT PROFILE
  5. -------------------------------------------------- ---------- ----------------- --------------------- --------------------------------
  6. PDB$SEED 1 10 10
  7. PDBCNDBA 3 GOLD
  8. PDBCNDBA2 1 10 10
  9. 我们只需要在相应的pdb中设置db_performance_profile初始化参数即可让当前的PDB使用哪个profile了。

3.4.13监视PDB的CPU使用情况

  1. 该V$RSRCPDBMETRIC视图使您能够以毫秒为单位,以会话数量或过去一分钟的利用率来跟踪CPU指标。它为每个PDB提供实时指标,并且在您正在运行工作负载并希望持续监视CPU资源利用率的情况下非常有用。
  2. PDB的CPU使用率是使用PDB的CDB的活动CDB资源计划管理的。您可以使用此视图来比较具有其他PDB设置的PDB的最大可能CPU利用率和平均CPU利用率百分比,例如CPU使用时间,CPU等待时间,CPU使用的平均会话数以及正在等待的会话数用于CPU分配。例如,您可以查看PDB使用的CPU资源数量以及等待资源分配的时间。或者,您可以查看每个PDB执行的会话数与活动会话总数的关系。
  3. --根据PDB的CPU利用率跟踪CPU消耗
  4. 要根据CPU利用率跟踪CPU消耗,请使用CPU_UTILIZATION_LIMIT和AVG_CPU_UTILIZATION列。AVG_CPU_UTILIZATION列出PDB消耗的服务器CPU的平均百分比。CPU_UTILIZATION_LIMIT表示PDB可以使用的服务器CPU的最大百分比。此限制是使用UTILIZATION_LIMIT指令属性设置的
  5. COLUMN PDB_NAME FORMAT A10
  6. SELECT r.CON_ID, p.PDB_NAME, r.CPU_UTILIZATION_LIMIT, r.AVG_CPU_UTILIZATION
  7. FROM V$RSRCPDBMETRIC r, CDB_PDBS p
  8. WHERE r.CON_ID = p.CON_ID;
  9. CON_ID PDB_NAME CPU_UTILIZATION_LIMIT AVG_CPU_UTILIZATION
  10. ---------- ---------- --------------------- -------------------
  11. 3 PDBCNDBA100 0
  12. 5 PDBCNDBA2 10 0
  13. --跟踪PDB的CPU消耗和节流
  14. 使用CPU_CONSUMED_TIME和CPU_TIME_WAIT列来跟踪每个PDB的CPU消耗和限制(以毫秒为单位)。该列NUM_CPUS表示Resource Manager正在管理的CPU数量。
  15. COLUMN PDB_NAME FORMAT A10
  16. SELECT r.CON_ID, p.PDB_NAME, r.CPU_CONSUMED_TIME, r.CPU_WAIT_TIME, r.NUM_CPUS
  17. FROM V$RSRCPDBMETRIC r, CDB_PDBS p
  18. WHERE r.CON_ID = p.CON_ID;
  19. CON_ID PDB_NAME CPU_CONSUMED_TIME CPU_WAIT_TIMENUM_CPUS
  20. ---------- ---------- ----------------- ------------- ----------
  21. 3 PDBCNDBA 0 0 1
  22. 5 PDBCNDBA2 0 0 1
  23. --根据PDB会话数跟踪CPU消耗和节流
  24. 跟踪会话的数量方面的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的平均会话数量。
  25. COLUMN PDB_NAME FORMAT A10
  26. SELECT r.CON_ID, p.PDB_NAME, r.RUNNING_SESSIONS_LIMIT, r.AVG_RUNNING_SESSIONS, r.AVG_WAITING_SESSIONS
  27. FROM V$RSRCPDBMETRIC r, CDB_PDBS p
  28. WHERE r.CON_ID = p.CON_ID;
  29. CON_ID PDB_NAME RUNNING_SESSIONS_LIMIT AVG_RUNNING_SESSIONS AVG_WAITING_SESSIONS
  30. ---------- ---------- ---------------------- -------------------- --------------------
  31. 3 PDBCNDBA 10 0
  32. 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

(0)

相关推荐