aix6.1安装oracle12.1.0.2,dbca时候报错UnsatisfiedLinkError exception loading native library: njni12

来源:互联网 发布:java package 编译 编辑:程序博客网 时间:2024/06/05 04:13

开发人员在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:

$ lsdev | grep iocp
iocp0 Available I/O Completion Ports


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,日后可能会有问题。




0 0