oracle12c之一 控制-PDB的磁盘I/O(IOPS,MBPS)资源管理


在以前的版本中,没有简单的方法来控制单个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';
 
 
 
 
 
6
6
 
 
 
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;
 
 
 
 
 
13
13
 
 
 
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;​
 
 
 
 
 
14
14
 
 
 
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_EXEMPT IOMBPS_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;      
 
 
 
 
 
17
17
 
 
 
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;">

 
 
 
 





转载于:https://www.cnblogs.com/cqdba/p/827ab08a8ff3dcab7f8dea41b8e410b4.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle 12c是一种强大的数据库管理系统,它可以让用户轻松地管理和维护数据库。然而,有时候会出现ORA-01017错误,提示“用户名/口令无效; 登录被拒绝”。 这个错误通常是由于登录信息(用户名和口令)无效导致的。这可能是因为输入的用户名或口令不正确,或者由于数据库管理员更改了登录凭据而导致登录失败。解决这个问题的方法是正确输入用户名和口令,或者联系数据库管理员以获取正确的凭据。 此外,还有一些其他可能导致ORA-01017错误的原因。例如,数据库可以配置为只允许连接来自某些IP地址或主机名的客户端。如果您没有在连接字符串中正确指定这些参数,则可能无法连接到数据库并出现此错误。解决办法是检查连接字符串并指定正确的参数。 总之,ORA-01017错误可能是由多种原因导致的,但通常可以通过检查登录凭据和连接字符串来解决问题。如果您无法解决问题,请联系数据库管理员以获取帮助。 ### 回答2: ORA-01017是Oracle数据库发生登录错误时的错误代码,错误信息为用户名/口令无效,登录被拒绝。通常,这种错误是由以下情况引起的。 首先,可能是由于输入的用户名和密码不正确,导致登录失败。在此情况下,应该仔细检查输入的用户名和密码是否正确,对大小写敏感,确保输入正确。 其次,可能是Oracle数据库中没有该用户的登录权限,或者没有分配合适的角色和权限。在这种情况下,应该检查该用户是否被授权访问数据库,并确保正确的角色和权限分配。 最后,这种错误可能是因为数据库配置问题,比如说数据库实例或服务没有启动。在这种情况下,应该检查数据库是否正常运行,确保数据库实例或服务已经正确启动。 综上所述,ORA-01017错误通常是由于输入错误的用户名和密码、没有登录权限或数据库未正常运行等问题引起的。对于这种错误,我们需要检查输入的用户名和密码是否正确、该用户是否被授权访问数据库数据库是否正常运行等,以确定解决方法。 ### 回答3: “oracle 12c ora-01017: 用户名/口令无效; 登录被拒绝。”这个错误提示意味着用户输入的账号或者密码不正确,导致登录被拒绝。当出现这种错误时,需要首先检查输入的用户名和口令是否匹配,并且注意大小写是否正确。 在检查账号和密码之后,还需要确保数据库实例已经启动,并且监听器也已经启动。如果数据库实例或者监听程序未启动,会出现无法连接到数据库的情况。因此,需要确保相应的服务都已经启动。 此外,如果用户尝试连接到一个不存在的数据库或者使用错误的连接字符串,也有可能导致登录被拒绝。需要检查连接字符串是否正确,并且确保数据库实例名称和监听器名称也正确。 如果以上步骤都已经检查过,并且仍然无法登录,那么可能是由于权限问题或者安全策略导致的。需要检查用户是否具有正确的权限,并且确保数据库的安全策略不会阻止该用户的登录。 总之,当出现“oracle 12c ora-01017: 用户名/口令无效; 登录被拒绝”错误提示时,需要逐步排查以上问题,以确定错误原因并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值