Linux上Oracle是否使用非同步io的診斷

yangtingkun發表於2012-03-28

客戶的資料庫IO負載較重,檢查後發現並未設定非同步IO

 

 

整個資料庫的負載都集中在IO相關的等待上:

Top 5 Timed Foreground Events

Event

Waits

Time(s)

Avg wait (ms)

% DB time

Wait Class

log file sync

697,116

70,128

101

36.29

Commit

db file sequential read

2,982,135

54,498

18

28.20

User I/O

db file scattered read

754,680

38,741

51

20.05

User I/O

free buffer waits

35,410

20,560

581

10.64

Configuration

DB CPU

6,172

3.19

 

檢查後發現,當前系統並未使用非同步io

[oracle@localhost ~]$ cat /proc/slabinfo | grep kio
kioctx         37   140   384   10   1 : tunables   54   27   8 : slabdata    14    14     0
kiocb           0     0   256   15   1 : tunables  120   60   8 : slabdata     0     0     0

返回結果中kiocp對應的前兩項為0,說明系統中沒有使用非同步io

檢查顯示oracle已經連結了aio的包:

[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)

而資料庫中檢查發現filesystemio_options設定有誤:

SQL> show parameter disk_asynch_io

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- --------------------
disk_asynch_io                       boolean                          TRUE

SQL> show parameter filesystemio_options

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- -------------------
filesystemio_options                 string                           none

當前使用的是檔案系統,因此需要將filesystemio_options設定為asynch,才能開啟非同步io

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 6.0264E+10 bytes
Fixed Size 2242912 bytes
Variable Size 2147485344 bytes
Database Buffers 5.7982E+10 bytes
Redo Buffers 131960832 bytes
Database mounted.
Database opened.
SQL>

再次檢查系統上非同步io的設定,發現非同步io已經啟動:

[oracle@localhost ~]$ more /proc/slabinfo |grep kio
kioctx       130   160   384   10   1 : tunables   54   27   8 : slabdata    16    16     0
kiocb         16    30   256   15   1 : tunables  120   60   8 : slabdata     2     2     1

可以看到,目前非同步IO已經生效。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-720181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章