Oracle IO性能测试

前言

最近发生了迁移测试库后(单节点迁移RAC)因为IO性能问题导致迁移后性能非常差的问题。

原本想在创建ASM磁盘组之前用Orion做测试,但是忘了做就没做结果出了这档子事情。

后边查了资料发现建库之后,Oracle也可以通过calibrate_io来做IOPS和吞吐量的测试。

以我上边说的迁移测试库为例,待迁移的单节点库为single-DB,迁移后的为RAC-DB1(IO严重有问题),由于存储出问题,后续更换存储在测试,为RAC-DB2。

工具介绍

  1. 测试所用的数据库用户必须具有sysdba权限。
  2. Timed_statistics参数必须设为true,异步IO必须打开。(ASM默认打开的,本地存储默认关闭)。
  3. 只有一个I/O校准同时在一个数据库实例进行。

PS:可通过如下方式确定是否开启异步IO:

SELECT d.name,
i.asynch_io
FROM v$datafile d,
v$iostat_file i
WHERE d.file# = i.file_no
AND i.filetype_name = 'Data File';

如果异步IO是关闭的,可以通过以下方式开启:

ALTER SYSTEM SET filesystemio_options=setall SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

测试脚本

SET SERVEROUTPUT ON
DECLARE
l_latency PLS_INTEGER;
l_iops PLS_INTEGER;
l_mbps PLS_INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1,
max_latency => 20,
max_iops => l_iops,
max_mbps => l_mbps,
actual_latency => l_latency);
DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
DBMS_OUTPUT.put_line('Latency = ' || l_latency);
END;
/

结果输出样例

SYS@test1> SET SERVEROUTPUT ON
SYS@test1> DECLARE
2 l_latency PLS_INTEGER;
3 l_iops PLS_INTEGER;
4 l_mbps PLS_INTEGER;
5 BEGIN
6 DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1,
7 max_latency => 20,
8 max_iops => l_iops,
9 max_mbps => l_mbps,
10 actual_latency => l_latency);
11 DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
12 DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
13 DBMS_OUTPUT.put_line('Latency = ' || l_latency);
14 END;
15 /
Max IOPS = 161
Max MBPS = 8
Latency = 24 PL/SQL procedure successfully completed. SYS@test1> /
Max IOPS = 107
Max MBPS = 8
Latency = 18 PL/SQL procedure successfully completed. SYS@test1> /
Max IOPS = 152
Max MBPS = 8
Latency = 25 PL/SQL procedure successfully completed.

统计测试结果

测试结果在上边给出一组,就不全部放在这里了。

结果以下边表格统计可以做对比。

指标

single-DB

RAC-DB1

RAC-DB2

最大IOPS

518

445 469 161 107 152 13290 12587 12937 12811

最大吞吐量

92

96 92 8 8 8 106 108 107 107

平均延迟

5

6 5 24 18 25 18 18 19 20

参考

https://rdcqii.hundsun.com/portal/article/578.html

https://blog.csdn.net/Hehuyi_In/article/details/89469534

https://oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems#slob

Oracle IO性能测试的更多相关文章

  1. 2、Oracle Logminer性能测试

    Oracle Logminer性能测试 1 测试介绍 1.1 测试目的 通过模拟不同环境下LogMiner解析联机/归档日志文件运行情况,通过测试所获取的数据分析,通过对以下两点的验证来确定通过Log ...

  2. Oracle IO问题解析(转)

    http://www.hellodba.com/reader.php?ID=76〈=cn 数据库的作用就是实现对数据的管理和查询.任何一个数据库系统,必然存在对数据的大量读或者写或者两中操作都大量存在 ...

  3. 基于LR的Oracle应用性能测试

    最近对一个oracle ERP系统的INV模块进行性能测试,因为之前大部分都是测试web类型的应用,在这方面经验较少,期间也遇到了不少问题,因此有必要作些总结,以备后忘.首先先简单了解下测试对象相关的 ...

  4. Oracle IO优化心得

    很多的时侯,做Oracle DBA的我们,当应用管理员向我们通告现在应用很慢.数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为数据库的各 ...

  5. 解决 oracle IO占用率很高的问题

    突然user io占用率很很高,看了一个AWR报告,发现direct path read temp,direct path write temp的的数率很高,后来怀疑是临时表空间不够了,就试着设了一下 ...

  6. 如何用sysbench做好IO性能测试

    sysbench 是一个非常经典的综合性能测试工具,通常都用它来做数据库的性能压测,但也可以用来做CPU,IO的性能测试.而对于IO测试,不是很推荐sysbench,倒不是说它有错误,工具本身没有任何 ...

  7. [Oracle] Io Error: The Network Adapter could not establish the connection 解决方案

    Io 异常: The Network Adapter could not establish the connection这个异常的出现一般与数据库和你的PC的设置有关 这种异常的出现大致上有下面几种 ...

  8. (转)Linux 磁盘IO性能测试

    Linux 如何测试 IO 性能(磁盘读写速度) 这几天做MySQL性能测试,偌大一个公司,找几台性能测试机器都很纠结,终于协调到两台,IO的性能如何还不知道.数据库属于IO密集型的应用,所以还是先评 ...

  9. Fio IO性能测试

    fio-2.1.2-1.el5.rf.x86_64 介绍 fio different types of I/O engines (sync, mmap, libaio, posixaio, SG v3 ...

随机推荐

  1. SQL Server使用Offset/Fetch Next实现分页

    T-SQL实现分页 ,查找指定范围内的数据 首先,正常的查询是这样的 使用分页后 select * from Products order by ProductID offset X rows fet ...

  2. Java实现 LeetCode 140 单词拆分 II(二)

    140. 单词拆分 II 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分 ...

  3. java实现识别复制串

    ** 识别复制串** 代码的目标:判断一个串是否为某个基本串的简单复制构成的. 例如: abcabcabc,它由"abc"复制3次构成,则程序输出:abc aa 由"a& ...

  4. BigDecimal的setScale常用方法(ROUND_UP、ROUND_DOWN、ROUND_HALF_UP、ROUND_HALF_DOWN)

    BigDecimal的setScale四大常用方法总结 // 设置小数点后第三位数字一大一小观察效果BigDecimal num = new BigDecimal("3.3235667&qu ...

  5. Java创建ES索引实现

    1.pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  6. .NET 技术栈 思维导图

    背景介绍 根据网上招聘网站的一些.NET技能需求,画了一个图,便于在自修和学习的过程当中有一个方向. 技能栈 Web front-end o 框架技术 ▣ Vue ▣ Bootstrap ▣ LayU ...

  7. python数据类型转换&&格式化输出

    ①python的数据类型包含:数字.字符串.列表.元组.字典.集合这六种基本数据类型.不同数据类型的数据可以进行类型的转换. 使用input让用户输入的数据默认为字符串类型: name = input ...

  8. ubuntu12.04 跳过grub选择

    1.修改/etc/grub.d/00_head文件. set timeout=-1 修改成 set timeout = ${GRUB_RECORDFAIL_TIMEOUT:--1} 2.修改/etc/ ...

  9. php 常用的redis操作语法

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-> ...

  10. <WP8开发学习笔记>修改panorama全景控件的标题的大小

    panorama(全景)控件非常具有WinPhone特色,但是那个巨大的标题许多时候会让人觉得违和.怎么修改它呢? 最开始想到的是加一个FontSize,结果毫无影响.╮(╯-╰)╭ <phon ...