对于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. HDU 汉诺塔系列

    做了这一系列题,表示对汉诺塔与这一系列递推理解加深了 经典汉诺塔:1,2,...,n表示n个盘子,数字大盘子就大,n个盘子放在第1根柱子上,按照从上到下 从小到大的顺序排放,过程中每次大盘都不能放在小 ...

  2. PAT1022. Digital Library (30)

    两个坑. 一个是一直用的malloc不行了.因为malloc分配的是固定大小,之前做的题没遇到过是因为一般string都不长(malloc分配string为24个Byte),这次直接报段错误,呢们了半 ...

  3. vue 列表渲染 v-for循环

    v-for循环指令类似与html中C标签的循环,同样可以遍历数组,集合. 1.这里演示一下遍历数组的基本用法,代码如下 <!DOCTYPE html> <html> <h ...

  4. 一个简单客户端获取IP,国家,城市,省份的代码

    <html><head>  <script src="js/jquery-1.6.2.min.js" type="text/javascri ...

  5. struts2常见配置解决错误There is no mapped for namespace[/] and action name

    我碰到这个错误的原因是我把配置文件名写成了Struts.xml,改成struts.xml就可以了. 在确定struts.xml本身并没有写错的情况下,那么发生错误有可能是路径,配置文件名. 如果实在找 ...

  6. poj2289二分图多重匹配

    题意:给你一张二分图,求右边点到汇点的最小容量(保证流量为n)是多少 题解:二分答案,每次重新建边跑最大流,看是不是为n就好了 #include<map> #include<set& ...

  7. map和reduce 个数的设定 (Hive优化)经典

    一.    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置 ...

  8. BW 转换字符空格问题

    早上忙了我一早上,以前写的一个季度判断的问题, 首先是调试,不断的调试DTP.让我头晕眼花. 首先关于空格问题,我自我批评,愚蠢的定义成STRING 类型,然后相互加减出现问题.应该定义成内部的日期格 ...

  9. CSS3 之 RGBa 可透明颜色

    在 CSS3 中,增加了一个 opacity 属性,允许开发者设置元素的透明度,现在 opacity 已被主流的现代浏览器支持,但 opacity 会把被设置的元素及其子元素同时设置为同一个透明度,这 ...

  10. 实现多层抽屉菜单,点击其中一项会动画打开该抽屉--第三方开源--MultiCardMenu

    下载地址:https://github.com/wujingchao/MultiCardMenu <net.wujingchao.android.view.MultiCardMenu xmlns ...