概述 I/O 校准

Oracle 数据库 11g 引入了 I/O 校准机制,通过这种方式,您可以通过企业管理器性能页面或 PL/SQL 软件包运行 I/O 校准测试。甲骨文的 I/O 校准是歌乐工具的变体。在 Oracle 数据库中,I/O 工作负载有两种基本类型 — 小型随机 I/O 和大型顺序 I/O.OLTP 应用程序通常遇到小型随机 I/O 工作负载,其中处理小型 I/O 请求的速度至关重要。因此,磁盘旋转和寻道时间至关重要。另一方面,OLAP 应用程序通常使用大型顺序 I/O。对于这些类型的应用程序,关键因素是 I/O 通道的容量。数据库服务器和存储系统之间的 I/O 通道越大,I/O 吞吐量就越大。Oracle 使用以下两个指标,每个指标衡量一种类型的 I/O 负载的功效:

  • IOPS(每秒 I/O) IOPS 速率是系统在一秒钟内可以执行的小随机 I/O 数,取决于磁盘的旋转速度。您可以通过增加存储阵列中的磁盘数或使用速度更快的磁盘驱动器来提高 IOPS 速率,这些驱动器具有高 RPM 和较短的寻道时间。
  • MBPS(兆字节每秒)此衡量指标衡量服务器和存储阵列之间的数据传输速率,并取决于两个系统之间 I/O 通道的容量。较大的 I/O 通道意味着更高的 MBPS 速率。

在此讨论中需要澄清两个重要术语:吞吐量和延迟。系统的吞吐量决定了它传输数据的速度,并通过 MBPS 指标进行度量。通道容量决定了系统的整体吞吐量,因此对数据传输量设定了上限。延迟是指发出 I/O 请求的时间与存储系统为请求提供服务之间的滞后时间。高延迟表示系统过载,您可以通过跨多个心轴对数据进行条带化来减少延迟,因此不同的磁盘可以并行处理相同的 I/O 请求。

Oracle 建议您使用新的 I/O 校准工具来确定数据库中的 I/O 指标。运行这些工具大约需要 10 分钟,应选择数据库工作负载较轻的时间,以避免存储系统压力过大。一次只能运行一个校准任务。如果在 RAC 环境中执行任务,则会从系统中的所有实例同时生成工作负载。您可以使用企业管理器或通过 PL/SQL 运行该工具。

使用 PL/SQL 校准 I/O

您还可以使用DBMS_ RESOURCE_MANAGER包中CALIBRATE_IO的新过程来运行 I/O 校准任务。下面是一个示例:

开始
执行dbms_resource_manager.calibrate_io(-
num_disks = > 1, -
max_latency = > 10, -
max_iops = > :max_iops, -
max_mbps = > :max_mbps, -
actual_latency = > :actual_latency);
结束;
/
在CALIBRATE_IO过程中,以下是关键参数:

  • num_disks:存储阵列中磁盘的近似数量。
  • max_latency:I/O 请求的最大可容忍延迟(以毫秒为单位)。
  • max_ios:可处理的随机数据库块大小的读取请求的最大数量。
  • max_mbps:可处理的随机分布的 1MB 读取的最大数量(以兆字节每秒为单位)。
  • actual_latency:数据库块大小的 I/O 请求的平均延迟为 max_iops 速率(以毫秒为单位)。

仅当启用了异步 I/O 时,该过程才有效。如果未启用异步 I/O,则该过程将返回以下错误。
声明
*
第 1 行的错误:
ORA-56708:找不到任何具有异步 i/o 功能
或 ORA-06512 的数据文件:位于“SYS.DBMS_RMIN“,第 453
行 ORA-06512:在”SYS.DBMS_RESOURCE_MANAGER“,第 1153
行 ORA-06512:在第 6
行,可以使用FILESYSTEMIO_OPTIONS静态初始化参数对文件系统文件启用或禁用异步 I/O 或直接 I/O。此参数是特定于平台的,并且具有最适合特定平台的默认值。
FILESYTEMIO_OPTIONS可以设置为下列值之一:

  • 异步:对文件系统文件启用异步 I/O,对传输没有计时要求。
  • 直接 IO:在文件系统文件上启用直接 I/O,这将绕过缓冲区缓存。
  • 设置:对文件系统文件启用异步和直接 I/O。
  • 无:禁用文件系统文件的异步和直接 I/O。

SQL> 显示参数 FILESYSTEMIO_OPTIONS
名称 类型 值
------------------------------------ ----------- ------------------------------
filesystemio_options 字符串 无
更改系统集 FILESYSTEMIO_OPTIONS= SETALL 范围 = SPFILE;
立即关机;
启动;

使用说明

  • 只有具有 SYSDBA 特权的用户才能运行此过程。符合条件的用户还必须打开timed_statistics,并确保为数据文件启用asynch_io。这可以通过将filesystemio_options设置为异步或设置来实现。还可以通过以下 SQL 语句查询asynch_io状态:
    col 名称格式 a50
    SELECT 名称,asynch_io从 v$数据文件 f,v$iostat_file i
    其中 f.file# = i.file_no
    和 filetype_name = “数据文件”;
  • Only one calibration can be run at a time. If another calibration is initiated at the same time, it will fail.
  • For an Oracle Real Application Clusters (Oracle RAC) database, the workload is simultaneously generated from all instances.

For timed_statistics paramter,please refer to following illustration :

TIMED_STATISTICS specifies whether or not statistics related to time are collected.Values:

  • true: The statistics are collected and stored in trace files or displayed in the V$SESSTATS and V$SYSSTATS dynamic performance views.
  • false: The value of all time-related statistics is set to zero. This setting lets Oracle avoid the overhead of requesting the time from the operating system.

Starting with release 11.1.0.7.0, the value of the TIMED_STATISTICS parameter cannot be set to false if the value of STATISTICS_LEVEL is set to TYPICAL or ALL.
On some systems with very fast timer access, Oracle might enable timing even if this parameter is set to false. On these systems, setting the parameter to true can sometimes produce more accurate statistics for long-running operations.

[G]V$IO_CALIBRATION_STATUS视图显示校准运行的当前状态。在运行期间,将显示“正在进行”状态。运行完成后,状态将切换为“就绪”,并显示校准时间。此外,不可用意味着校准结果不可用,CALIBRATION_TIME告诉我们上次校准运行
SQL的结束时间>从v$io_calibration_status中选择* ;
状态 CALIBRATION_TIME
------------- -------------------------------
正在进行
SQL> 从 v$io_calibration_status 中选择 * ;
状态 CALIBRATION_TIME
------------- ---------------------------------------------------------------------------
已准备就绪 28-JUL-2008 14:37:38.410
已选择 1 行。

执行CALIBRATE_IO过程后,可以查询 V$IO_ CALIBRATION_STATUS 和DBA_RSRC_IO_CALIBRATE视图来检查结果。下面是一个示例查询:

SQL>从dba_rsrc_io_calibrate中选择max_iops,max_mbps,max_pmbps,延迟
;

MAX_IOPS MAX_MBPS MAX_PMBPS延迟
---------- ------------ ------------ ----------
133 12 6 64
Oracle 数据库 11g 收集三个不同维度的 I/O 统计信息,以便为 I/O 调用提供一组一致的统计信息。这些维度是分为 12 个功能组的 RDBMS 组件。

  • V$IOSTAT_ 函数视图提供了详细信息。为当前启用的资源计划所属的每个使用者组收集 I/O 统计信息。
  • V$IOSTAT_CONSUMER_GROUP 视图包含详细信息。
  • 各个文件级 I/O 统计信息被收集并存储在 V$IOSTAT_ FILE 视图中,以了解详细信息。

参考至:《McGraw.Hill.OCP.Oracle.Database.11g.New.Features.for.Administrators.Exam.Guide.Apr.2008》

http://www.oracle-base.com/articles/11g/resource-manager-enhancements-11gr1.php http://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams259.htm#REFRN10218
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_resmgr.htm#ARPLS67599

本文原创,转载请注明出处、作者

如有错误,欢迎指正