首页 技术 正文
技术 2022年11月15日
0 收藏 755 点赞 2,840 浏览 4852 个字

在以前的版本中,没有简单的方法来控制单个PDB使用的磁盘I / O量。 因此,某个PDB可能耗尽大量磁盘I / O,并影响同一实例中的其他PDB的性能。 Oracle 12c R2可以控制PDB使用的磁盘I / O量,是多PDB相处更融洽。

1 I/O参数介绍
  下面的一些参数可以在PDB或者CDB级别设置已达到限制PDB I/O的目的。
  MAX_IOPS:PDB的每秒最大I/O操作数。 默认值为“0”。 不推荐使用小于100 IOPS的值。
  MAX_MBPS:PDB的每秒I/O的最大兆字节数。 默认值为“0”。 不推荐使用小于25 MBPS的值。
   这两个参数只作用于PDB,不对CDB和非多租户环境生效。另外,这两个参数不限制redo log的写入(LGWR进程)和buffercache脏块写入磁盘(DBWR进程)。

一些需要注意的地方:
  ·参数是独立的。 您可以使用none,one或both。
  ·当参数设置在CDB级别时,它们成为所有PDB使用的默认值。
  ·当它们设置在PDB级别时,它们覆盖任何默认值。
  ·如果在CDB和PDB级别的值为“0”,则没有I / O限制。
  ·实例的正常功能所必需的关键I/O不受限制,比如:对控制文件的访问或对口令文件的访问,但只要涉及极限,就会计入总I/O,因此I/O可能暂时超过限制。
  ·这些参数仅适用于多租户架构。
  ·此功能不适用于Exadata。
  ·限制将导致名为I/O rate limit的等待事件。

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 = pdb1;

— 设置指定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;

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:

 

SQL>SET LINESIZE 180
SQL>COLUMN pdb_name FORMAT A10
SQL>COLUMN begin_time FORMAT A26
SQL>COLUMN end_time FORMAT A26
SQL>ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
SQL>ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';

     66   1

SQL>SET LINESIZE 180

2

SQL>COLUMN pdb_name FORMAT A10

3

SQL>COLUMN begin_time FORMAT A26

4

SQL>COLUMN end_time FORMAT A26

5

SQL>ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';

6

SQL>ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';

  — 每个PDB最后样本 

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

     1313   1

SQL>SELECT r.con_id,

2

       p.pdb_name,

3

       r.begin_time,

4

       r.end_time,

5

       r.iops,

6

       r.iombps,

7

       r.iops_throttle_exempt,

8

       r.iombps_throttle_exempt,

9

       r.avg_io_throttle

10

FROM v$rsrcpdbmetric r,

11

       cdb_pdbs p

12

WHERE r.con_id = p.con_id

13

ORDER BY p.pdb_name;

  — PDB1的最后几个小时的样本 

SQL>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 = 'PDB1'
ORDER BY r.begin_time;​

     1414   1

SQL>SELECT r.con_id,

2

       p.pdb_name,

3

       r.begin_time,

4

       r.end_time,

5

       r.iops,

6

       r.iombps,

7

       r.iops_throttle_exempt,

8

       r.iombps_throttle_exempt,

9

       r.avg_io_throttle

10

FROM v$rsrcpdbmetric_history r,

11

       cdb_pdbs p

12

WHERE r.con_id = p.con_id

13

AND p.pdb_name = 'PDB1'

14

ORDER BY r.begin_time;•

  

— PDB1的所有AWR快照的信息

SQL>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 = 'PDB1'
ORDER BY r.begin_time;

           1

SQL>SELECT r.snap_id,

2

       r.con_id,

3

       p.pdb_name,

4

       r.begin_time,

5

       r.end_time,

6

       r.iops,

7

       r.iombps,

8

       r.iops_throttle_exempt,

9

       r.iombps_throttle_exempt,

10

       r.avg_io_throttle

11

FROM dba_hist_rsrc_pdb_metric r,

12

       cdb_pdbs p

13

WHERE r.con_id = p.con_id

14

AND p.pdb_name = 'PDB1'

15

ORDER BY r.begin_time;

  可以使用DBA_HIST_RSRC_PDB_METRIC来计算一个PDB合理的IO限制。当计算IO限制值时,可以参考以下列:IOPS、IOMBPS、IOPS_THROTTLE_EXEMPTIOMBPS_THROTTLE_EXEMPT。 

set linesize 400
col PDB_NAME for a10
col BEGIN_TIME for a30
col END_TIME for a30
SELECTR.SNAP_ID,
R.CON_ID,
P.PDB_NAME,
TO_CHAR(R.BEGIN_TIME, 'YYYY-MM-DHH24:MI') AS BEGIN_TIME,
TO_CHAR(END_TIME, 'YYYY-MM-D HH24:MI')AS 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
ORDER BY R.BEGIN_TIME;

     1717   1

set linesize 400

2

col PDB_NAME for a10

3

col BEGIN_TIME for a30

4

col END_TIME for a30

5

SELECTR.SNAP_ID,

6

   R.CON_ID,

7

   P.PDB_NAME,

8

   TO_CHAR(R.BEGIN_TIME, 'YYYY-MM-DHH24:MI') AS BEGIN_TIME,

9

   TO_CHAR(END_TIME, 'YYYY-MM-D HH24:MI')AS END_TIME,

10

   R.IOPS,

11

   R.IOMBPS,

12

   R.IOPS_THROTTLE_EXEMPT,

13

   R.IOMBPS_THROTTLE_EXEMPT,

14

   R.AVG_IO_THROTTLE

15

FROM DBA_HIST_RSRC_PDB_METRIC R, CDB_PDBS P

16

WHERE R.CON_ID = P.CON_ID

17

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
FROMDBA_HIST_ACTIVE_SESS_HISTORY H
JOINCDB_PDBS C
ONC.PDB_ID = H.P1
ANDH.EVENT = 'resmgr: I/O rate limit'
ORDER BY 4;

     

x

   1

SELECT H.EVENT,

2

  H.P1 AS PDB_ID,

3

  C.PDB_NAME,

4

  H.SQL_ID,

5

  TO_CHAR(H.SAMPLE_TIME, 'YYYY-MM-D HH24:MI') AS SAMPLE_TIME,

6

  H.INSTANCE_NUMBER

7

FROMDBA_HIST_ACTIVE_SESS_HISTORY H

8

JOINCDB_PDBS C

9

ONC.PDB_ID = H.P1

10

ANDH.EVENT = 'resmgr: I/O rate limit'

11

ORDER BY 4;

  12


   

<wiz_tmp_tag id=”wiz-table-range-border” contenteditable=”false” style=”display: none;”>

    来自为知笔记(Wiz)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903