今天无意中开发数据库下的udump产生大量的trace文件,内容如下:
[EPDEV]/u01/oracle/admin/epdev/udump$more epdev_ora_25840.trc
/u01/oracle/admin/epdev/udump/epdev_ora_25840.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/oracle/product/10.2.0/db
System name: HP-UX
Node name: dbrac
Release: B.11.11
Version: U
Machine: 9000/800
Instance name: epdev
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 25840, image: oracle@dbrac
Ioctl ASYNC_CONFIG error, errno = 1
原来是异步IO配置有问题,对照之前在另一个系统上实施的异步IO的文档,发现有些不对。
/dev/async这个文件的属主为bin:bin 权限为666 按照实施文档应该为oracle:dba 660
不存在/etc/privgroup文件
估计是之前有过配置,但后来主机重启后,配置失效,所以产生了大量的报错。
按照Metalink上Oracle的说法
Oracle (for HP only) 总是使用 async I/O 而不管初始值的设置
(disk_asynch_io=FALSE and filesystemio_options=none).
参数 filesystemio_options=none 不起作用.
不管DISK_ASYNC_IO的设置如何,只要有wr的权限,Oracle总是能成功打开/dev/async
在Oracle 9.2版本,要停止异步IO的workaround 为:
chown bin:bin /dev/async
chmod 660 /dev/async
Grant dba group MLOCK 权限以避免ASYNC_CONFIG trace file错误:
(以root用户)
(1) # /usr/sbin/setprivgrp dba MLOCK
(2) # vi /etc/privgroup
This should contain dba MLOCK RTSCHED RTPRIO
(3) # cat /etc/privgroup
dba MLOCK RTSCHED RTPRIO
Oracle 10.2 version, 下列的设置将终止trace:
disk_asynch_io=FALSE
filesystemio_options=none
按照以上方法
# /usr/sbin/setprivgrp dba MLOCK
# vi /etc/privgroup 加入dba MLOCK RTSCHED RTPRIO
后没有再发现trace文件产生
注:metalink的文档号为:
Subject: How to disable asynch_io on HP to avoid Ioctl Async_config Error Errno = 1
Doc ID: 302801.1
2014.12.05