上星期檔案系統/u01滿90%了,就想去清理一下。
後來發現udump下產生大量的trace檔案,都在報File '/dev/async' notpresent : errno=2這個錯,但這些錯誤不會出現在alert日誌中,內容如下:
rac:/u01/oracle/admin/edb/udump>$moreedb1_ora_10008.trc
File '/dev/async' not present : errno=2
/u01/oracle/admin/edb/udump/edb1_ora_10008.trc
Oracle Database10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real ApplicationClusters, OLAP, Data Mining
and Real Application Testing options
ORACLE_HOME = /u01/oracle/product/10.2.0/db
System name: HP-UX
Node name: rac
Release: B.11.11
Version: U
Machine: 9000/800
Instance name: edb1
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 10008, image: oracle@rac
原因:
查了下metalink,說是在HP-Unix上資料庫升級到10g之後,async I/O是自動開啟的(DISK_ASYNCH_IO參數為true),但是由於在OS層沒有配置async I/O(即沒有/dev/async這個檔案),那麼就會產生trace檔案,報這個File '/dev/async' not present : errno=2錯誤。
解決方案有兩種:
1、建立/dev/async
Create '/dev/async' to suppress theseerrors. To create '/dev/async', you need to do the following as root:
/sbin/mknod /dev/async c 101 0x0
/usr/bin/chown oracle:dba /dev/async
/usr/bin/chmod 000 /dev/async
或者
2、關閉資料庫層的async I/O
Disable async at the database level. Youshould set the following parameters as follows:
disk_asynch_io = FALSE (in the init.ora file (or spfile))
filesystemio_options = <value>
restart the instance
The <value> of filesystemio_optionsmay be any of the following:
"asynch" - Set by default. Thisallows asynchronous IO to be used where supported by the OS.
"directIO" - This allows directIOto be used where supported by the OS. Direct IO bypasses any
Unix buffer cache.
"setall" - Enables both ASYNC andDIRECT IO.
"none" - This disables ASYNC IOand DIRECT IO so that Oracle uses normal synchronous writes, without any directio options.
You shouldconsult your SA to find out supported option and select that.
However, this parameter should not normallybe set by the user. It is mainly here to help avoid OS
bugs / problems by disabling certain typesof IO. You should modify this ONLY if you had this set earlier. Otherwise, justsetting disk_asynch_io should be okay.
後來發郵件問了下乙方,他說:
async io能夠在以下方面提升效能
l IO隊列不需要等待所以磁碟可以對零散的IO進行組織以相對次數較少的io以提升效能。(輸送量的提升)
l 進程可在等待IO完成前執行另外的任務以提升效能。(回應時間的改善)
生產系統,作業系統如果支援非同步IO的,我們建議還是開啟非同步IO
但是《ALERT:HP-UX: RDBMS May Not Start if Async Disk Driveris Configured (文檔 ID 174487.1)》上說,如果在作業系統配置async IO可能會導致資料庫起不來,感覺風險有點大,再說我們現在IO也還可以,還是選擇第二種方案比較保險。等下次停機的時候再改disk_asynch_io這個參數,看看情況再說。
後來JJ師父說修改disk_asynch_io這個參數也可能會有問題,反正現在沒有什麼影響,就讓它去,大不了就定期刪下trace檔案,清理下udump。