对于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. iphone的一些坑

    1.<div contenteditable></div>需要添加css user-select: text;才能输入. 2.css属性animation一直存在,添加了-we ...

  2. SharedPreferences概述

    SharedPreferences概述 一.简介 SharedPreferences简介 上图紫色标注的部分为使用方法. SharedPreferences成员(属性和方法) 二.核心函数及使用实例 ...

  3. dp1--乘积最大

    dp1--乘积最大 一.心得 1.用excel填数组很方便 2. dp就是填表 找状态就是缩小规模 找状态转移方程就是 找状态的最后一次关系 二.题目 8782:乘积最大 查看 提交 统计 提问 总时 ...

  4. Python学习之路day4-函数高级特性、装饰器

    一.预备知识 学习装饰器需理解以下预备知识: 函数即变量 函数本质上也是一种变量,函数名即变量名,函数体就变量对应的值:函数体可以作为值赋给其他变量(函数),也可以通过函数名来直接调用函数.调用符号即 ...

  5. Ubuntu下常用的快捷键

    熟练地快捷键操作可以大大的节省我们的时间,下面贴上一些快捷键的操作: 桌面常用快捷键 Alt + F1:聚焦到桌面左侧任务导航栏,可按上下键进行导航 Alt + F2:运行命令 Alt + F4:关闭 ...

  6. BEC listen and translation exercise 8

    The double-decker plane that can carry over 550 passengers dwarfs all other commercial jets. In just ...

  7. 网络编程基础----并发编程 ---守护进程----同步锁 lock-----IPC机制----生产者消费者模型

    1  守护进程: 主进程 创建 守护进程   辅助主进程的运行 设置进程的 daemon属性 p1.daemon=True 1 守护进程会在主进程代码执行结束后就终止: 2 守护进程内无法再开启子进程 ...

  8. skynet coroutine 运行笔记

    阅读云大的博客以及网上关于 skynet 的文章,总是会谈服务与消息.不怎么看得懂代码,光读这些文字真的很空洞,不明白说啥.网络的力量是伟大的,相信总能找到一些解决自己疑惑的文章.然后找到了这篇讲解 ...

  9. 网络爬虫必备知识之concurrent.futures库

    就库的范围,个人认为网络爬虫必备库知识包括urllib.requests.re.BeautifulSoup.concurrent.futures,接下来将结对concurrent.futures库的使 ...

  10. [独孤九剑]Oracle知识点梳理(零)目录

    本系列只涉及到Oracle的具体用法,没有上升到理论层面,都是日常工作中总结积累出的零碎知识点,基本上都是一些使用例子,哪天用到了,可以直接复制出来改改. [独孤九剑]Oracle知识点梳理(一)表空 ...