关于oracle:Oracle12c新特性大全-IO资源隔离

       12cR2中,引入了两个参数MAX_IOPS和MAX_MBPS来限度PDB的物理IO。这两个参数只作用于PDB,不对CDB和非多租户环境失效。另外,这两个参数不限度redo log的写入(LGWR过程)和buffer cache脏块写入磁盘(DBWR过程)。

    IO对数据库性能至关重要。如果某个PDB产生了大量的IO,那可能导致CDB中的其它PDB也受影响。MAX_IOPS参数限度每秒IO操作次数,MAX_MBPS参数限度每秒IO吞吐,如果这两个参数同时在pdb中设置,都会失效起作用。如果在CDB$ROOT中设置这两个值,那么以后CDB中每个PDB都采取此作为默认值。

    默认状况下,这两个参数都为0。如果在PDB中这两个参数为0,CDB$ROOT中也为0,那对于PDB来讲,没有IO限度。

有些状况下,尽管物理IO限度曾经达到,然而一些要害IO依然容许,比方:对管制文件的拜访或对口令文件的拜访,然而这些要害IO也是计入到IO数统计里的。

    能够应用DBA_HIST_RSRC_PDB_METRIC来计算一个PDB正当的IO限度。当计算IO限度值时,能够参考以下列:IOPS、IOMBPS、IOPS_THROTTLE_EXEMPT和IOMBPS_THROTTLE_EXEMPT。不举荐设置MAX_IOPS的值小于100,MAX_MBPS的值小于25。

set linesize 400

col PDB_NAME for a10

col BEGIN_TIME for a30

col END_TIME for a30

SELECT R.SNAP_ID,

       R.CON_ID,

       P.PDB_NAME,

       TO_CHAR(R.BEGIN_TIME, ‘YYYY-MM-D HH24: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;

 

ALTER SYSTEM SET MAX_IOPS = 1000 SCOPE = BOTH;

ALTER SYSTEM SET MAX_MBPS = 50 SCOPE = BOTH;

    上面在同一数据库中,设置不同的max_iops和max_mbps查问雷同的语句所须要的工夫,能够看出max_iops和max_mbps对IO的限度是起作用的。

MAX_IOPS MAX_MBPS Elapsed(1) Elapsed(2) Elapsed(3) Avg elapsed time
0 0 00:27.16 00:27.55 00:26.94 27.22
100 0 00:26.87 00:26.90 00:27.25 27.01
10 0 00:37.13 00:34.23 00:36.43 35.93
8 0 00:46.24 00:44.99 00:48.33 46.52
6 0 01:13.92 01:11.29 01:01.08 01:08.75
4 0 01:39.16 01:41.31 01:38.91 01:39:80
2 0 03:53.82 03:41.95 03:52.01 03:49:26
1 0 08:04.78 08:38.85 10:07.79 08::57:14
0 1 05:50.68 05:54.03 05:52.32 05:52:34
0 10 00:33.51 00:33.38 00:33.48 00:33.46
0 20 00:29.71 00:27.06 00:28.37 00:28.38

 

    当零碎呈现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;

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理