IT Blok

kutilovo živobytí

SQLPlus chyba – Shared Library not Found

Nesprávně nastavená přístupová oprávnění pro uživatele na Linuxu, mohou způsobit, že nespustíme některé programy. Například sqlplus od Oracle.

Po instalaci Oracle na Linux se při pokusu o spuštění programu sqlplus mohou objevit následující chyby:

$ sqlplus
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

nebo

$ sqlplus
sqlplus: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory

Nyní si provedeme malý průzkum. Pod rootem se podíváme na údajně chybějící soubory a jejich nastavení práv:

$ su -
Password:
~ # locate libsqlplus.so
/u01/app/oracle/oracle/product/10.2.0/db_1/lib/libsqlplus.so
~ # locate libclntsh.so.10.1
/u01/app/oracle/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
~ #
~ # ll /u01/app/oracle/oracle/product/10.2.0/db_1/lib/libsqlplus.so
-rw-r----- 1 oracle oinstall 1047293 Jun 22 2005 /u01/app/oracle/product/10.2.0/db_1/lib/libsqlplus.so
~ # ll /u01/app/oracle/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
-rw-r----- 1 oracle oinstall 1047293 Jun 22 2005 /u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1

A jsme doma!
Podle tohoto výpisu můžeme vidět, že uživatel nemá oprávnění na tyto soubory. Změnu můžeme provést buď takto:

$ su -
Password:
~ # chmod 755 libsqlplus.so
~ # chmod 755 libclntsh.so.10.1

Tím nastavíme možnost čtení a spuštění pro všechny uživatele systému, nebo takto:

$ su -
Password:
~ # chmod -R a+rx /u01/app/oracle/

Tím přidáme možnost čtení a spuštění pro všechny uživatele systému a to na kompletní obsah adresáře /u01/app/oracle/

V některých verzích Oracle DB (patch 4516865) je možné najít skript $ORACLE_HOME/install/changePerm.sh, který nastaví potřebná oprávnění pro všechny uživatele.

Po aplikaci některého z výše uvedených postupů by již mělo jít sqlplus spustit.