对于Oracle而言,如果数据库存储在UFS文件系统上,启用DirectIO能够提高数据库性能。Oracle有个参数filesystemio_options可以控制数据库是否使用DirectIO.  如果在Oracle已经设置了使用DirectIO,怎样才能确认DirectIO是否真起作用了呢?在Solaris10上,可以通过dtrace来确认DirectIO是否已经启用。

1. DirectIO未启用的情况

检查filesystemio_options参数设置


SQL> show parameter filesystem

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
filesystemio_options string ASYNCH ASYNCH表示数据库只启用了异步IO, 没有启用DirectIO.

Dtrace检查控制文件是否启用DirectIO


root@ofs001 # dtrace -n io:::start'/(args[0]->b_flags & B_READ) == 0 && args[2]->fi_pathname == "/oracle/data1/ACC010C1/control01.dbf"/{@[stack()] = count()}'
dtrace: description 'io:::start' matched 6 probes
^C ufs`lufs_write_strategy+0x100
ufs`ufs_putapage+0x4f1
ufs`ufs_putpages+0x308
ufs`ufs_putpage+0x82
genunix`fop_putpage+0x28
genunix`vpm_sync_pages+0xa3
ufs`wrip+0x6f7
ufs`ufs_write+0x211
genunix`fop_write+0x31
genunix`pwrite+0x14f
unix`sys_syscall+0x17b
44 系统调用了ufs_write, 表示DirectIO未启用

Dtrace检查数据文件是否启用DirectIO

在一个session上执行dtrace命令,另一session执行一个create table … as select * from xx;的命令.

root@ofs001 # dtrace -n io:::start'/(args[0]->b_flags & B_READ) == 0 && args[2]->fi_pathname == "/oracle/data2/ACC010C1/users01.dbf"/{@[stack()] = count()}'
dtrace: description 'io:::start' matched 6 probes
^C ufs`lufs_write_strategy+0x100
ufs`ufs_putapage+0x501
ufs`ufs_putpages+0x308
ufs`ufs_putpage+0x82
genunix`fop_putpage+0x28
genunix`vpm_sync_pages+0xa3
ufs`wrip+0x6f7
ufs`ufs_write+0x211
genunix`fop_write+0x31
genunix`pwrite+0x14f
unix`sys_syscall+0x17b
4 ufs`lufs_write_strategy+0x100
ufs`ufs_putapage+0x4f1
genunix`pvn_vplist_dirty+0x3aa
ufs`ufs_putpages+0x1c2
ufs`ufs_putpage+0x82
genunix`fop_putpage+0x28
ufs`ufs_fsync+0x1c4
genunix`fop_fsync+0x28
genunix`fdsync+0x28
unix`sys_syscall+0x17b
20 系统调用ufs_write, 表示DirectIO未启用

2. DirectIO启用的情况

检查filesystemio_options参数设置


SQL> show parameter filesystem

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
filesystemio_options string SETALL SETALL表示数据库同时启用了异步IO和DirectIO.

Dtrace检查控制文件是否启用DirectIO

root@ofs001 # dtrace -n io:::start'/(args[0]->b_flags & B_READ) == 0 && args[2]->fi_pathname == "/oracle/data1/ACC010C1/control01.dbf"/{@[stack()] = count()}'
dtrace: description 'io:::start' matched 6 probes
^C ufs`directio_start+0x12c
ufs`ufs_directio_write+0x788
ufs`ufs_write+0x383
genunix`fop_write+0x31
genunix`pwrite+0x14f
unix`sys_syscall+0x17b
39 系统调用ufs_directio_write, 表示启用了directio.

Dtrace检查数据文件是否启用DirectIO

在一个session上执行dtrace命令,另一session执行一个create table … as select * from xx;的命令.

root@ofs001 # dtrace -n io:::start'/(args[0]->b_flags & B_READ) == 0 && args[2]->fi_pathname == "/oracle/data2/ACC010C1/users01.dbf"/{@[stack()] = count()}'
dtrace: description 'io:::start' matched 6 probes ^C ufs`directio_start+0x12c
ufs`ufs_directio_write+0x788
ufs`ufs_write+0x383
genunix`fop_write+0x31
genunix`pwrite+0x14f
unix`sys_syscall+0x17b
17 系统调用ufs_directio_write, 表示启用了directio.

Solaris10如何确认DirectIO是否已经启用的更多相关文章

  1. TCP Nagle算法&&延迟确认机制

    TCP Nagle算法&&延迟确认机制 收藏 秋风醉了 发表于 3年前 阅读 1367 收藏 0 点赞 0 评论 0 [腾讯云]买域名送云解析+SSL证书+建站!>>> ...

  2. Nagle算法&&延时确认

    数据流分类 成块数据 交互数据   Rlogin需要远程系统(服务器)回显我们(客户)键入的字符 数据字节和数据字节的回显都需要对方确认 rlogin 每次只发送一个字节到服务器,而Telnet 可以 ...

  3. TCP Nagle算法以及延迟确认(即延迟回复ACK)的学习

    TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据. (一个连TCP接会 ...

  4. 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎

    最近业务上有要求,要实现类似oracle 的dblink   linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/ ...

  5. ASP.NET Identity V2

    Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的membership以及WebPage所带来的SimpleMe ...

  6. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  7. php绘图问题

    php绘图首先要确认gd库是否启用,到php.ini文件中,找到extension=php_gd2.dll将前面的:去掉,重新启动服务器. 如果在绘图中还是没有显示正常的图片,说明服务器在回复请求时, ...

  8. Mysql日志操作

    Mysql日志 mysql的日志类型:错误日志: -log-err记录mysql服务的启动.运行.停止mysql服务时出现的问题查询日志: -log记录建立的客户端连接和执行的语句慢查询日志: -lo ...

  9. mysql配置详解

    mysql有以下几种日志:  错误日志:    log-err  查询日志:    log  慢查询日志:  log-slow-queries  更新日志:    log-update  二进制日志: ...

随机推荐

  1. mysql基础(5)-关联(mysql+pandas)

    表关联类型 内连接: 仅显示满足条件的行 From T1,T2 where T1.ID=T2.ID From T1 inner join T2 ON T1.ID=T2.ID 左连接: 显示左表T1中的 ...

  2. 数据链路层--PPP协议

    数据链路层使用的信道主要有两种类型:点对点信道和广播信道. 点对点 路由器在转发分组时只使用了下面的三层. 链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换结点. 必须有一些必要的通信协议来 ...

  3. Respond.js的作用

    在html页面中我们经常看到 <!--[if lt IE 9]>    //判断当前浏览器的版本是否小于IE 9          <script src="https:/ ...

  4. LINQ(数据查询)

    如果只有空的构造函数,想要对字段进行初始化,可以直接在构造函数后面加上{属性名=值,属性名=值};属性与属性之间用,分割开 //查询所有武学级别大于8的武林高手 //var res = new Lis ...

  5. 2017-03-04 dotnet core网站发布到Linux系统中

    今天开始学习dotnet core的开发,距离Visual Stuio 2017正式版的发布,也就是VS20周岁的生日还有三天,在我的电脑上安装的是VS2017 Enterprise RC版, 在VS ...

  6. 在线显示office文件

    微信或手机浏览器在线显示office文件 1.判断浏览器类型 HttpServletRequest req = ServletActionContext.getRequest(); String us ...

  7. iOS开发中的系统版本比较

    由于系统平台和SDK更新迭代,一部分过时的成员.方法会被彻底从SDK中移除,为了兼容旧的设备,这时就需要区分系统平台版本调用正确的API. 另一种情况是iOS设备的屏幕和设备参数不同,虽然UI上的Au ...

  8. vue项目组件的全局注册

    在vue-cli项目中,我们经常会封装自己的组件,并且要在多个界面中引用它,这个时候就需要全局注册组件. 首先我们会封装自己的组件,比如twoDimensionTable文件夹下的index.vue: ...

  9. Mybatis_总结_03_用_动态SQL

    一.前言 MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还 ...

  10. php 利用header 函数 下载各种文件

    http://www.php.net/manual/en/function.readfile.php <?php /** * 下载文件 * header函数 * */ dl_file($_GET ...