1 Ostatnio edytowany przez jury (2014-08-16 20:59:46)

Może kto na szybko pomoże :)

Postawiłem sobie Oracle 12 na linuksie ( Mint 15 ). Proces instalacji wydał się jak najbardziej prawidłowy, więc chciałem utworzyć bazę i po wywołaniu polecenia "dbca" wywala mi komunikatem:

UnsatisfiedLinkError exception loading native library: njni12
java.lang.UnsatisfiedLinkError: /oracle/base/dbhome_1/lib/libnjni12.so: libaio.so.1: cannot open shared object file: No such file or directory
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:388)
    at oracle.sysman.assistants.dbca.backend.Host.<init>(Host.java:1050)
    at oracle.sysman.assistants.dbca.backend.Host.<init>(Host.java:1043)
    at oracle.sysman.assistants.dbca.wizard.UIHost.<init>(UIHost.java:241)
    at oracle.sysman.assistants.dbca.wizard.InteractiveHost.<init>(InteractiveHost.java:60)
    at oracle.sysman.assistants.dbca.wizard.InteractiveHost.getInstance(InteractiveHost.java:78)
    at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:208)
    at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:121)
    at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:226)

Poszukałem sobie po sieci ten błąd i coś tam znalazłem, ale kompletnie nie ogarniam o co im chodzi :)
Więc zacząłem po swojemu dłubać ( muszę szczerze przyznać, że kompletnie nie rozumiem tych całych zależności bibliotecznych linukso-uniksowych :) )  i znalazełem  to libnjni12.so, więc zrobiłem "ldd libnjni12.so" co wyrzuciło takie coś:

linux-vdso.so.1 =>  (0x00007fff0f3fe000)
    libclntsh.so.12.1 => /usr/lib/libclntsh.so.12.1 (0x00007fc84960b000)
    libclntshcore.so.12.1 => /usr/lib/libclntshcore.so.12.1 (0x00007fc849098000)
    libmql1.so => not found
    libipc1.so => not found
    libnnz12.so => not found
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc848e92000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc848b8d000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc848970000)
    libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fc848755000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc84854d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc848184000)
    libnnz12.so => /oracle/base/dbhome_1/lib/libnnz12.so (0x00007fc847a79000)
    libmql1.so => /oracle/base/dbhome_1/lib/libmql1.so (0x00007fc847803000)
    libons.so => /oracle/base/dbhome_1/lib/libons.so (0x00007fc8475be000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc84c808000)
    libaio.so.1 => not found
    libipc1.so => /oracle/base/dbhome_1/lib/libipc1.so (0x00007fc84723f000)

No i naprzykład przeszukałem to niby brakujące libaio.so.1 co zwróciło mi taki wynik:
/oracle/base/dbhome_1/lib/stubs/libaio.so.1      ( to 'oryginał' )
/usr/lib/libaio.so.1                                             ( to link do powyższego oryginału )

Czyli wydawało by mi się, że wszystko powinno być OK, więc dlaczego twierdzi że libaio.so.1 => not found?



Edit: Można temat wywalić, po dogłębniejszym badaniu okazało się, że ten link do libaio.so.1 był skopsany :)

2

Może z poziomu usera masz trochę więcej w LD_LIBRARY_PATH|/etc/ld.so.conf niż z poziomu roota? Odpalasz bazę z dedykowanego usera w ogóle?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje