oracle异步IO之filesystemio_options参数初探

原创作品,出自 “深蓝的blog” 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46906847

异步IO之filesystemio_options参数

近日再跟一个老DBA聊天的时候,听说了一个关于异步IO的参数。于是带着些许的好奇,异步I/O也就意味着读写可同时进行。

于是回来查看了一下这个参数,实验了一下。

在未安装oracle的linux服务器查看

Last login: Fri Jun  5 16:09:07 2015 from 10.53.105.3

[[email protected] ~]# grep kio /proc/slabinfo

kioctx                 0      0    384   10    1 : tunables   54   27    0 : slabdata      0      0      0

kiocb                  0      0    256   15    1 : tunables  120   60    0 : slabdata      0      0      0

看到kiocb行显示为0,说明异步IO没有启动。

实验前,先到官方文档查一下:

ASYNCH: enable asynchronous I/O on file system files, which has no timing requirement for transmission.

在文件系统文件上启用异步I/O,在数据传送上没有计时要求。

DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache.

在文件系统文件上启用直接I/O,绕过buffer cache。

SETALL: enable both asynchronous and direct I/O on file system files.

在文件系统文件上启用异步和直接I/O。

NONE: disable both asynchronous and direct I/O on file system files.

在文件系统文件上禁用异步和直接I/O。

实验:oracle开启异步I/O

环境:oracle11.2.0.4 64bit

[[email protected] ~]# grep kio /proc/slabinfo

kioctx                23     36    320   12    1 : tunables   54   27    8 : slabdata      3      3      0

kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

SQL> show parameter file

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

filesystemio_options                 string      none

ifile                                file

log_file_name_convert                string

max_dump_file_size                   string      unlimited

remote_login_passwordfile            string      EXCLUSIVE

session_max_open_files               integer     10

spfile                               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/spfilexcky.ora

standby_file_management              string      MANUAL

tracefile_identifier                 string

utl_file_dir                         string

SQL> alter system set filesystemio_options=setall

2  ;

alter system set filesystemio_options=setall

*

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be modified

报错了,这个参数不可以在线修改。这应该是个静态参数!我们设置参数文件,重启数据库。

SQL> alter system set filesystemio_options=setall scope=spfile;

System altered.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             507513896 bytes

Database Buffers          327155712 bytes

Redo Buffers                2355200 bytes

Database mounted.

Database opened.

SQL> show parameter filesystemio_options

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

filesystemio_options                 string      SETALL

设置已经生效了。

到linux系统下,查看异步IO情况。

[[email protected] ~]# grep kio /proc/slabinfo

kioctx                24     36    320   12    1 : tunables   54   27    8 : slabdata      3      3      0

kiocb                 12     60    256   15    1 : tunables  120   60    8 : slabdata      4      4      0

看到kiocb已经有数据值了,说明异步IO已经生效了。

但是,在生产集群环境下查看时,没有开启异步参数,而在linux系统层面查看时,异步IO是启动的。这么说的话,并不是跟上面的实验完全一致。

在某生成环境下查看,如下:

[[email protected] ~]# grep kio /proc/slabinfo

kioctx               210    280    384   10    1 : tunables   54   27    8 : slabdata     28     28      0

kiocb                 15     30    256   15    1 : tunables  120   60    8 : slabdata      2      2      0

SQL> show parameter file

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_flash_cache_file                  string

db_recovery_file_dest                string      +OCR_ARCH

db_recovery_file_dest_size           big integer 4407M

db_securefile                        string      PERMITTED

dg_broker_config_file1               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr1xzxt.dat

dg_broker_config_file2               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr2xzxt.dat

file_mapping                         boolean     FALSE

fileio_network_adapters              string

filesystemio_options                 string      none

可以看到这个集群生产环境下的filesystemio_options参数设置是none,但是查看异步IO是生效的。我们知道异步IO是通过软件层面实现的,为什么生产环境下集群系统会自动启用呢?这跟oracle集群有关系嘛?带着疑问,在实验环境下启动一套集群环境。

[[email protected] ~]# grep kio /proc/slabinfo

kioctx               108    108    320   12    1 : tunables   54   27    8 : slabdata      9      9      0

kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

SQL> show parameter file

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      +RCY1

db_recovery_file_dest_size           big integer 3552M

db_securefile                        string      PERMITTED

dg_broker_config_file1               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr1xcky.dat

dg_broker_config_file2               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr2xcky.dat

file_mapping                         boolean     FALSE

fileio_network_adapters              string

filesystemio_options                 string      none

ifile                                file

发现集群环境下,参数没有设置,而且异步IO也没能启动。

尝试修改参数。

SQL> alter system set filesystemio_options=setall scope=spfile;

System altered.

但是遇到了问题。

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;

ORACLE instance started.

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

SQL> show parameter file;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      +RCY1

db_recovery_file_dest_size           big integer 3552M

db_securefile                        string      PERMITTED

dg_broker_config_file1               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr1xcky.dat

dg_broker_config_file2               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/dr2xcky.dat

file_mapping                         boolean     FALSE

fileio_network_adapters              string

filesystemio_options                 string      SETALL

ifile                                file

设置成功了,但是在操作系统下看一下,如下:

[[email protected] dbs]$ grep kio /proc/slabinfo

kioctx               104    108    320   12    1 : tunables   54   27    8 : slabdata      9      9      0

kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

到第2个节点也查看一下,如下:

SQL> show parameter filesystemio_options;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

filesystemio_options                 string      SETALL

SQL>

[[email protected] dbs]$ grep kio /proc/slabinfo

kioctx               103    108    320   12    1 : tunables   54   27    8 : slabdata      9      9      0

kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

下面尝试把参数值设置为asynch(异步),来看一下是否会有所改变呢?

SQL> alter system set filesystemio_options=asynch scope=spfile;

System altered.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

到操作系统下查看,异步依旧没有生效,如下:

[[email protected] dbs]$ grep kio /proc/slabinfo

kioctx               101    108    320   12    1 : tunables   54   27    8 : slabdata      9      9      0

kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0

从上面的现象来看,在我使用的虚拟机RAC环境下,异步I/O并没有实现,实验失败。

小结:

1、对于filesystemio_options产生的异步I/O现象,单实例下测试成功;

2、对于filesystemio_options产生的异步I/O现象,生成库RAC下,无需设置,可能异步I/O是在存储层面启动了(猜测,可能不是这样的。。。);

3、对于filesystemio_options产生的异步I/O现象,单机实验RAC下,测试不成功,没有达到预期。

所以,对于filesystemio_options参数设置对于异步I/O所起到的左右,仍然存疑。

*******************************************蓝的成长记系列****************************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装(Linux下10g、11g)

蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人

蓝的成长记——追逐DBA(7):基础命令,地基之石

蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记——追逐DBA(12):七天七收获的SQL

蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机......”

蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

蓝的成长记——追逐DBA(17):是分享,还是消费,在后IOE时代学会成长

******************************************************************************************************************

********************************************足球与oracle系列*************************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!

足球与oracle系列(4):从巴西惨败于德国,想到,差异的RAC拓扑对比! 

足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包!

足球与oracle系列(6):伴随建库的亚洲杯——加油中国队

******************************************************************************************************************

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 13:23:54

oracle异步IO之filesystemio_options参数初探的相关文章

ORACLE数据库异步IO介绍

异步IO概念 Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能.它是Linux 2.6 版本内核的一个标准特性,当然我们在2.4 版本内核的补丁中也可以找到它.AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成.稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果. Linux IO模型(I/O models)分同步IO模型(synchronous models)和异步IO模型(asynchronous mo

oracle启用异步IO(db file async I/O submit)

市局双随机awr报告中有大量db file async I/O submit等待事件 参考两篇文章: [案例]Oracle等待事件db file async I/O submit产生原因和解决办法 db file async I/O submit 等待事件优化 查看数据文件是否开启异步IO Select Name, Asynch_Io From V$datafile f, V$iostat_File i Where f.File# = i.File_No And (Filetype_Name =

通过数据库评估存储设备IO性能-Oracle 11g IO校准功能介绍

通过数据库评估存储设备IO性能 ---------Oracle11g IO校准功能介绍 前言 I/O子系统是ORACLE数据库的一个重要组成部分,因为I/O操作是贯穿数据库管理全过程,它操作的对象包括日志.表.索引.数据字典.以及一些排序.undo操作等等,每个数据库读取或者写入磁盘上的数据,都会产生磁盘IO,可以这么说一个正常业务的数据库系统,80%的性能消耗都与IO有关,相对于网络.CPU.内存等其他硬件的迅猛发展,磁盘的读写速度的发展却相对滞后,这也导致许多业务性能瓶颈集中在有限的磁盘IO

Linux下启用异步IO

#是否已经安装了AIO包#rpm -qa|grep aiolibaio-0.3.107-10.el6.x86_64libaio-devel-0.3.107-10.el6.x86_64libsane-hpaio-3.12.4-4.el6_4.1.x86_64 #数据库在链接时是否已经加载了aio的包$/usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio        libaio.so.1 => /lib64/libaio.so.1 (0x00000

异步IO\数据库\队列\缓存

本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SSH Twsited网络框架 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾下 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度

Node.js异步IO

为什么要异步I/O? 从用户体验角度讲,异步IO可以消除UI阻塞,快速响应资源 JavaScript是单线程的,它与UI渲染共用一个线程.所以在JavaScript执行的时候,UI渲染将处于停顿的状态,用户体验较差.而异步请求可以在下载资源的时候,JavaScript和UI渲染都同时执行,消除UI阻塞,降低响应资源需要的时间开销. 假如一个资源来自两个不同位置的数据的返回,第一个资源需要M毫秒的耗时,第二个资源需要N毫秒的耗时.当采用同步的方式,总耗时为(M+N)毫秒,代码大致如下: //耗时为

006 异步IO操作

# 异步IO操作 CreateFile 使用 VS2015 新建win32 控制台应用程序 WindowsFileDemo win32控制台写窗口程序 需要加入头文件 #include <fileAPI.h> 就可以来使用CreateFile 分别有 CreateFileA  CreateFileW 窄字节 宽字节 1 HANDLE WINAPI CreateFile( 2 _In_ LPCTSTR lpFileName, 3 _In_ DWORD dwDesiredAccess, 4 _In

Node.js入门:异步IO

异步IO 在操作系统中,程序运行的空间分为内核空间和用户空间.我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务. 同步IO的并行模式 多线程单进程    多线程的设计之处就是为了在共享的程序空间中,实现并行处理任务,从而达到充分利用CPU的效果.多线程的缺点在于执行时上下文交换的开销较大,和状态同步(锁)的问题.同样它也使得程序的编写和调用复杂化. 单线程多进程 为了避免多线程造成的使用不便问题,有的语言选择了单线程保持调用简单化,采用启

arm驱动linux异步通知与异步IO【转】

转自:http://blog.csdn.net/chinazhangzhong123/article/details/51638793 <[ arm驱动] linux异步通知与 异步IO>涉及内核驱动函数二个,内核结构体一个,分析了内核驱动函数二个:可参考的相关应用程序模板或内核驱动模板二个,可参考的相关应用程序模板或内核驱动三个 描述:设备文件IO访问:阻塞与非阻塞io访问,poll函数提供较好的解决设备访问的机制,但是如果有了异步通知整套机制就更加完整了 一.阻塞 I/O,非阻塞IO,异步