场景1:从别的机器tar oracle整个软件目录到新的aix系统,启动sqlplus时候:
$ sqlplus / as sysdba
exec(): 0509-036 Cannot load program sqlplus because of the following errors:
0509-136 Symbol resolution failed for /usr/lib/libc.a[aio_64.o] because:
0509-136 Symbol kaio_rdwr64 (number 0) is not exported from dependent module /unix.
0509-136 Symbol listio64 (number 1) is not exported from dependent module /unix.
0509-136 Symbol acancel64 (number 2) is not exported from dependent module /unix.
原因:原因是AIX操作系统的异步IO没有开启。
解决1:chdev -P -l aio0 -a autoconfig='available'
aio0 changed
解决2:(网上记录oracle for aix64bit 的5L貌似没有rootpre.sh,故此操作方法,得找得到这个rootpre.sh)如果当时的oracle安装目录还在(实在不行下以个来用),使用rootpre.sh脚本开启异步IO,会自动启异步IO。
网友的放出来的rootpre.sh脚本,以备情况紧急时之用:
#====================================================================================
#======================= configure Asynchronous I/O =================================
#====================================================================================
#--- function to check the autoconfig value on an AIO device
is_autoconfig_available () {
DEVICE=${1}
VALUE=`$LSATTR -E -l ${DEVICE}|${GREP} autoconfig|${AWK} '{print $2}'`
if [ "${VALUE}" = "available" ]; then
return 1
else
return -1
fi
}
#--- In AIX 6.1 and newer AIO is already configured and ioo is used,
#--- not chdev to modify AIO configuration
if [ $OSVER -lt 6 ]; then
log_con "\nConfiguring Asynchronous I/O...."
AIO=`${LSDEV} -C -t aio|${AWK} '{print $2}'`
case ${AIO} in
*Available*) log_con "Asynchronous I/O is already defined"
is_autoconfig_available "aio0"
if [ $? -ne 1 ]; then
log_con "Setting autoconfig to available for aio0"
log_do "${CHDEV} -P -l aio0 -a autoconfig=available"
fi
;;
*Defined*) log_do "${MKDEV} -l aio0"
log_do "${CHDEV} -P -l aio0 -a autoconfig=available"
;;
*) log_con "Asynchronous I/O is not installed on this system."
log_con "You will need to install it, and either configure it yourself using"
log_con "'smit aio' or rerun the Oracle root installation procedure."
;;
esac
#--- configure POSIX AIO if AIX 5.2 or greater, we may want to use it
if [ ${OSVER}${OSREL} -ge 52 ]; then
log_con "\nConfiguring POSIX Asynchronous I/O...."
POSIX_AIO=`${LSDEV} -C -t posix_aio|${AWK} '{print $2}'`
case ${POSIX_AIO} in
*Available*) log_con "Posix Asynchronous I/O is already defined"
is_autoconfig_available "posix_aio0"
if [ $? -ne 1 ]; then
log_con "Setting autoconfig to available for posix_aio0"
log_do "${CHDEV} -P -l posix_aio0 -a autoconfig=available"
fi
;;
*Defined*) log_do "${MKDEV} -l posix_aio0"
log_do "${CHDEV} -P -l posix_aio0 -a autoconfig=available"
;;
*) log_con "Posix Asynchronous I/O is not installed on this system."
log_con "You will need to install it, and either configure it yourself using"
log_con "'smit aio' or rerun the Oracle root installation procedure."
;;
esac
fi
fi
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22907091/viewspace-721374/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22907091/viewspace-721374/