开发人员在aix6.1上安装oracle 12.1.0.2,在使用dbca建库的时候报出如下错误:
UnsatisfiedLinkError exception loading native library: njni12
java.lang.UnsatisfiedLinkError: /u01/app/oracle/product/12.1.0/db_1/lib/libnjni12.so: /u01/app/oracle/product/12.1.0/db_1/lib/libclntsh.so.12.1: file too short
Exception in thread "main" java.lang.UnsatisfiedLinkError: oracle.net.common.NetGetEnv.get(Ljava/lang/String;)Ljava/lang/String;
at oracle.net.common.NetGetEnv.get(Native Method)
at oracle.net.config.Config.getNetDir(Unknown Source)
at oracle.net.config.Config.initConfig(Unknown Source)
at oracle.net.config.Config.<init>(Unknown Source)
at oracle.sysman.assistants.util.NetworkUtils.<init>(NetworkUtils.java:298)
at oracle.sysman.assistants.util.step.StepContext.<init>(StepContext.java:371)
at oracle.sysman.assistants.dbca.backend.Host.<init>(Host.java:941)
at oracle.sysman.assistants.dbca.wizard.UIHost.<init>(UIHost.java:243)
at oracle.sysman.assistants.dbca.wizard.InteractiveHost.<init>(InteractiveHost.java:58)
at oracle.sysman.assistants.dbca.wizard.InteractiveHost.getInstance(InteractiveHost.java:71)
at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:168)
at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:113)
at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:184)
乍看这些报错信息,还以为是缺少rpm包呢,但对于aix操作系统而言,很少有这种情况。在metalink上查找了一番,果然oracle 12.1.0.2库在aix上安装存在这种情况:
AIX 12.1.0.2 Installation Fails with "rtld: 0712-001 Symbol CreateIoCompletionPort was referenced " (Doc ID 1949184.1)
出现该问题的原因:
IOCP module not enabled on the server.
To check if the IOCP module is enabled, run the lsdev command:
The following sample output shows the IOCP status is set to Defined and hence not enabled:
$ lsdev | grep iocp
iocp0 Defined I/O Completion Ports
解决办法:
Enable the "iocp" option and relink the oracle binaries.
To enable IOCP, set IOCP to Available using the following procedure:
Log in as root and run the following command:
# smitty iocp
Select Change / Show Characteristics of I/O Completion Ports.
Change configured state at system restart from Defined to Available.
Run the lsdev command to confirm the IOCP status is set to Available:
Perform a system restart to make the changes permanent.
Relink the binaries using " relink all " and then root.sh as root user.
To relink the binaries, refer the note:
Relinking Oracle Home FAQ ( Frequently Asked Questions) (Doc ID 1467060.1)
---------------------------------------------------------------------------------------------------------------------------------------------
按照文档操作,完成了解决了该问题,但我没有重新relink all,日后可能会有问题。