1,Linux下,ASM数据库和文件系统数据库的AIO设置差别:
----(1). ASM的AIO属性是不受 FILESYSTEMIO_OPTIONS 参数的影响(因为ASM会绕过文件系统buffer),只跟DISK_ASYNCH_IO有关系
----(2). 文件系统的AIO属性跟 FILESYSTEMIO_OPTIONS 和 DISK_ASYNCH_IO 都有关系
2,FILESYSTEMIO_OPTIONS=NONE
: Bug 6733627 – Unaccounted Wait Time on “Direct Path” operations with FILESYSTEM_IO_OPTIONS=NONE (Doc ID 6733627.8)
3, db file async I/O submit’相关内容:
‘db file async I/O submit’ when FILESYSTEMIO_OPTIONS=NONE (Doc ID 1274737.1) —详细讲述了 ‘db file async I/O submit’ 和 FILESYSTEMIO_OPTIONS=NONE的关系
当文件系统设置了FILESYSTEMIO_OPTIONS=NONE时,会出现“db file async I/O submit”后台等待事件,而正常应该是出现“db file parallel write”
可以通过设置 FILESYSTEMIO_OPTIONS=SETALL,启用AIO,然后在AWR中会出现db file parallel write,而不再是db file async I/O submit
4,FILESYSTEMIO_OPTIONS=DIRECTIO
: Wrong FILESYSTEMIO_OPTIONS Settings Can Cause a Corrupted Block to be Returned at the First Read (Doc ID 1918825.1)
5,一般,linux建议设置为 FILESYSTEMIO_OPTIONS=SETALL
具体测试过程如下:
先看看官方文档的描述:
FILESYSTEMIO_OPTIONS
--------------------------------
Property Description
Parameter type String
Syntax FILESYSTEMIO_OPTIONS = { none | setall | directIO | asynch }
Default value Varies by database version and operating system.
Modifiable No
Basic No
DISK_ASYNCH_IO
------------------------------
Property Description
Parameter type Boolean
Default value true
Modifiable No
Range of values true | false
Basic No
此处是文件系统:filesystemio_options=none disk_asynch_io=true(缺省值),使用strace发现,没有启用AIO:
15:21:06 SYS@ Lunar> show parameter filesystemio_options
NAME TYPE VALUE
------------------------------------ ----------- ------------
filesystemio_options string none
15:21:16 SYS@ Lunar> show parameter DISK_ASYNCH_IO
NAME TYPE VALUE
------------------------------------ ----------- ------------
disk_asynch_io boolean TRUE
15:21:30 SYS@ Lunar>
在系统上看,目前并没有启用AIO:
[oracle@Lunar tmp]$ cat /proc/slabinfo | grep kio
kioctx 140 384 320 12 1 : tunables 54 27 8 : slabdata 31 32 22
kiocb 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
[oracle@Lunar tmp]$
使用strace对后台进程DBWR进行跟踪,佐证了上述观点,当前文件系统的数据库没有启用AIO:
[oracle@Lunar tmp]$ ps -ef|grep dbw
oracle 16540 30146 0 14:50 pts/3 00:00:00 grep dbw
oracle 20618 1 0 Sep24 ? 00:02:39 ora_dbw0_Lunar
oracle 20620 1 0 Sep24 ? 00:02:55 ora_dbw1_Lunar
oracle 20622 1 0 Sep24 ? 00:02:47 ora_dbw2_Lunar
oracle 20624 1 0 Sep24 ? 00:02:29 ora_dbw3_Lunar
oracle 20626 1 0 Sep24 ? 00:02:48 ora_dbw4_Lunar
oracle 20628 1 0 Sep24 ? 00:02:41 ora_dbw5_Lunar
oracle 20630 1 0 Sep24 ? 00:02:44 ora_dbw6_Lunar
oracle 20632 1 0 Sep24 ? 00:02:55 ora_dbw7_Lunar
oracle 20634 1 0 Sep24 ? 00:02:06 ora_dbw8_Lunar
oracle 20636 1 0 Sep24 ? 00:01:46 ora_dbw9_Lunar
oracle 20638 1 0 Sep24 ? 00:01:56 ora_dbwa_Lunar
oracle 20640 1 0 Sep24 ? 00:01:58 ora_dbwb_Lunar
oracle 20642 1 0 Sep24 ? 00:01:52 ora_dbwc_Lunar
oracle 20644 1 0 Sep24 ? 00:01:57 ora_dbwd_Lunar
oracle 20646 1 0 Sep24 ? 00:01:50 ora_dbwe_Lunar
oracle 20648 1 0 Sep24 ? 00:01:50 ora_dbwf_Lunar

下面的测试是使用ASM的数据库的参数:
15:24:25 SYS@ Lunardb1> show parameter FILESYSTEMIO_OPTIONS
NAME TYPE VALUE
------------------------------------ ----------- --------------
filesystemio_options string none
15:24:29 SYS@ Lunardb1> show parameter DISK_ASYNCH_IO
NAME TYPE VALUE
------------------------------------ ----------- -------------
disk_asynch_io boolean TRUE
15:24:39 SYS@ Lunardb1>
在系统上看,虽然设置了FILESYSTEMIO_OPTIONS=NONE,但是由于DISK_ASYNCH_IO=TRUE(缺省值),因此,ASM下的数据库依然使用AIO:
[root@Lunardb1 ~]# cat /proc/slabinfo | grep kio
kioctx 238 340 384 10 1 : tunables 54 27 8 : slabdata 34 34 0
kiocb 3656 4845 256 15 1 : tunables 120 60 8 : slabdata 323 323 180
[root@Lunardb1 ~]#
[oracle@Lunardb1 ~]$ ps -ef|grep dbw
oracle 82860 82820 0 15:25 pts/1 00:00:00 grep dbw
grid 85795 1 0 Sep25 ? 00:00:36 asm_dbw0_+ASM1
grid 86406 1 0 Sep25 ? 00:01:32 /u01/app/11.2.0/grid/jdk/jre//bin/java -server -Xcheck:jni -Xms128M -Xmx384M -Djava.awt.headless=true -Ddisable.checkForUpdate=true -Dstdstream.filesize=100 -Dstdstream.filenumber=10 -DTRACING.ENABLED=false -Doracle.wlm.dbwlmlogger.logging.level=INFO -Dport.rmi=23792 -jar /u01/app/11.2.0/grid/oc4j/j2ee/home/oc4j.jar -config /u01/app/11.2.0/grid/oc4j/j2ee/home/OC4J_DBWLM_config/server.xml -out /u01/app/11.2.0/grid/oc4j/j2ee/home/log/oc4j.out -err /u01/app/11.2.0/grid/oc4j/j2ee/home/log/oc4j.err
oracle 87014 1 0 Sep25 ? 00:10:02 ora_dbw0_Lunardb1
oracle 87018 1 0 Sep25 ? 00:11:22 ora_dbw1_Lunardb1
oracle 87022 1 0 Sep25 ? 00:09:28 ora_dbw2_Lunardb1
oracle 87026 1 0 Sep25 ? 00:08:50 ora_dbw3_Lunardb1
oracle 87030 1 0 Sep25 ? 00:09:43 ora_dbw4_Lunardb1
oracle 87041 1 0 Sep25 ? 00:09:47 ora_dbw5_Lunardb1
oracle 87048 1 0 Sep25 ? 00:08:52 ora_dbw6_Lunardb1
oracle 87052 1 0 Sep25 ? 00:08:59 ora_dbw7_Lunardb1
oracle 87056 1 0 Sep25 ? 00:08:26 ora_dbw8_Lunardb1
oracle 87060 1 0 Sep25 ? 00:12:26 ora_dbw9_Lunardb1
oracle 87064 1 0 Sep25 ? 00:09:35 ora_dbwa_Lunardb1
oracle 87068 1 0 Sep25 ? 00:09:25 ora_dbwb_Lunardb1
oracle 87072 1 0 Sep25 ? 00:08:35 ora_dbwc_Lunardb1
oracle 87076 1 0 Sep25 ? 00:09:22 ora_dbwd_Lunardb1
oracle 87080 1 0 Sep25 ? 00:08:16 ora_dbwe_Lunardb1
[oracle@Lunardb1 ~]$
可以看到,使用ASM数据库的dbw0进程,即使FILESYSTEMIO_OPTIONS设置为NONE,只要disk_asynch_io设置为true(缺省值),DBWR也可以使用到AIO:

再看ASM实例的dbw进程,也是用了AIO:

在实践学习中,跟踪工具strace是利器之一。
转载:http://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650270517&idx=1&sn=631bbea10d8c4c8c836223bb0fc8a4ef&scene=5&srcid=0601D8njghat5O5ETqjyIwcA#rd
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30491527/viewspace-2111878/,如需转载,请注明出处,否则将追究法律责任。