Oracle 12c 多租户专题|隔离PDB的磁盘IO

原文链接 https://oracle-base.com/articles/12c/multitenant-disk-iops-mdps-resource-management-for-pdbs-12cr2 译者 周天鹏

在12c R2之前的版本中,控制单个PDB的磁盘IO是一件很困难的事。导致的结果就是“一个糟糕的邻居”可能占用大量的磁盘IO从而导致同一个实例下其他PDB的性能下降。Oracle Database 12c Release 2 (12.2)允许你控制单个PDB最大可使用的磁盘IO(IOPS以及MBPS)。

PDB中的IO控制参数

可以在CDB或PDB级别去设置下列参数来控制PDB级别的IO阈值:

MAX_IOPS:PDB中每秒最大的IO操作次数。默认值为0。不建议设置小于100的IOPS MAX_MBPS:PDB中每秒最大的IO带宽(MB)。默认值为0。不建议设置小于25的MBPS 关于使用这两个参数,需要考虑如下这些:

* 这两个参数是独立的,你可以设置一个、两个或者一个都不设置

* 当这两个参数在CDB根中设置后,他们将变成所有PDB的默认值

* 当你在PDB级别设置了这两个参数后,PDB中的值可以覆盖默认值

* 如果在CDB和PDB中这两个参数值均为0,则没有IO阈值

* 某些常规函数的关键IO不会受到限制,但依然会计算到总IO中,所以,实际IO瞬时超过设定的阈值是有可能的

* 该参数只有多租户环境下可以使用

* Exadata无法使用该特性

* 设定阈值回造成一个等待事件,叫做resmgr: I/O rate limit.

设置IO参数

下面的例子是在CDB级别设置MAX_IOPS以及 MAX_MBPS参数,并作为所有PDB的默认值。

CONN / AS SYSDBA
-- Set defaults.
ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
-- Remove defaults.
ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;

下面的例子是在PDB级别设置MAX_IOPS以及 MAX_MBPS参数

CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = pdb1;
-- Set PDB-specific values.
ALTER SYSTEM SET max_iops=100 SCOPE=BOTH;
ALTER SYSTEM SET max_mbps=400 SCOPE=BOTH;
-- Remove PDB-specific values.
ALTER SYSTEM SET max_iops=0 SCOPE=BOTH;
ALTER SYSTEM SET max_mbps=0 SCOPE=BOTH;

监控PDB的IO使用

Oracle提供了一些视图来监控PDB的资源使用(例如CPU、I/O、内存)。每个视图包含相同的信息,只是保留时间不同。

* V$RSRCPDBMETRIC:一个PDB对应一条记录,只保留最近一分钟的数据

* V$RSRCPDBMETRIC_HISTORY:一个PDB对应61行记录,保留最近60分钟的数据

* DBA_HIST_RSRC_PDB_METRIC:AWR快照,保留时间基于AWR的保留时间 例子如下:

CONN / AS SYSDBA
SET LINESIZE 150
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'; 
-- Last sample per PDB.
SELECT r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       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
ORDER BY p.pdb_name;
-- Last hours samples for PDB1
SELECT r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       r.sga_bytes,
       r.pga_bytes,
       r.buffer_cache_bytes,
       r.shared_pool_bytes
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;
-- All AWR snapshot information for PDB1.
SELECT r.snap_id,
       r.con_id,
       p.pdb_name,
       r.begin_time,
       r.end_time,
       r.sga_bytes,
       r.pga_bytes,
       r.buffer_cache_bytes,
       r.shared_pool_bytes
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;

原文发布于微信公众号 - 沃趣科技(woqutech)

原文发表时间:2017-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle 控制文件(CONTROLFILE)

为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份

1162
来自专栏数据和云

承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变

综述 众所周知,当在两个数据库之间建立 dblink连 接时,SCN 将被同步,以维持分布式事务读取一致性。 这将导致在较低 SCN 的数据库的 SCN 跳...

2897
来自专栏乐沙弥的世界

Oracle 12c 基于PDB种子数据库创建PDB

在Oracle中基于PDB种子复制数据库的方式,这个与SQLServert中直接创建数据库比较类似。在SQLServer中有一个model数据库,这个库的功能就...

952
来自专栏数据和云

【动手实践】:Lockdown Profile 的多租户权限控制

在Oracle Database 12.2 中引入了lockdown profile的新特性,可以用于限制PDB中的某些操作,增强某些操作的安全性。 PDB ...

2835
来自专栏乐沙弥的世界

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻...

661
来自专栏琯琯博客

Yii2 学习笔记之分页

3377
来自专栏cloudskyme

使用oracle的大数据工具ODCH访问HDFS数据文件

软件下载 Oracle Big Data Connectors:ODCH 下载地址: http://www.oracle.com/technetwork/bdc...

3678
来自专栏乐沙弥的世界

数据导入时遭遇 ORA-01187 ORA-01110

最近的数据导入(IMP)时碰到了ORA-01187 ORA-01110 错误,由于这个数据库是使用热备恢复过来的,且恢复也是成功的,因为数据库能够成功open,...

833
来自专栏个人分享

SparkSQL相关语句总结

1.in 不支持子查询 eg. select * from src where key in(select key from test); 支持查询个...

1262
来自专栏杨建荣的学习笔记

Oracle 12c PDB浅析(r9笔记第10天)

不管怎么样,12c出来这么久,总是因为各种各样的原因没有开始学习,现在似乎还是有些晚了。总是耳闻PDB在12c是一种全新的架构模式,在各种技术聊 天也大概知道是...

2997

扫码关注云+社区

领取腾讯云代金券