Odpowiedzi:
Przede wszystkim musisz pobrać Instant Client Downloads . Zainstaluj pakiet obcy, aby móc instalować pakiety RPM, wpisując następujące polecenie w terminalu.
sudo apt-get install alien
Po zakończeniu przejdź do folderu, w którym znajdują się pliki RPM, i wykonaj następujące czynności:
sudo alien -i oracle-instantclient*-basic*.rpm
sudo alien -i oracle-instantclient*-sqlplus*.rpm
sudo alien -i oracle-instantclient*-devel*.rpm
Musisz zainstalować libaio.so
. Wpisz następujące polecenie, aby to zrobić:
sudo apt-get install libaio1
Utwórz plik konfiguracyjny Oracle:
sudo sensible-editor /etc/ld.so.conf.d/oracle.conf
Umieść tę linię w tym pliku:
/usr/lib/oracle/<your version>/client/lib/
Uwaga - w przypadku instalacji 64-bitowych ścieżka będzie wyglądać następująco:
/usr/lib/oracle/<your version>/client64/lib/
Zaktualizuj konfigurację, uruchamiając następujące polecenie:
sudo ldconfig
Spróbuj połączyć się za pomocą:
sqlplus username/password@//dbhost:1521/SID
lub:
sqlplus testuser/password
Pamiętaj, że jeśli zainstalowano wersję 64-bitową, klient jest wywoływany sqlplus64
.
Cudzoziemiec nie działał z powodu:
Error: cannot open Name index using db5 - Permission denied (13)
Więc poszedłem z łatwym rozwiązaniem: pobierz pliki zip z Oracle (podstawowe i sqlplus), rozpakuj je i umieść folder, w którym umieszczasz pliki programów (np /usr/share
.). Następnie utwórz skrypt, który uruchamia plik wykonywalny po ustawieniu LD_LIBRARY_PATH
zmiennej, aby znaleźć biblioteki:
#!/bin/bash
DIR=/usr/share/instantclient_12_2 # <------- adjust this to the path you use
export LD_LIBRARY_PATH="$DIR"
"$DIR"/sqlplus "$@"
Wywołaj go sqlplus
, chmod 755 sqlplus
spraw , aby był wykonywalny ( ) i umieść go w katalogu PATH
(np. /usr/bin/
), Aby bash go znalazł.
Uruchom to jak
sqlplus user/password@host:port/service
Jeśli dostaniesz
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
zainstaluj bibliotekę za pomocą sudo apt-get install libaio1
Myślę, że ten link by pomógł. Jest dość opisowy. Upewnij się, że wykonałeś wszystkie kroki. Jeśli jednak masz jakieś problemy, nie wahaj się komentować.
Oczywiście poprawna instalacja pochodzi z oficjalnych pakietów, takich jak powyżej ( pobierz Instant Client Downloads ), ale możesz uzyskać w pełni działający program sqlplus, po prostu kopiując te pliki (możesz go znaleźć na dowolnym komputerze z zainstalowanym klientem Oracle), a niektóre msb są opcjonalne :
./sqlplus
./sqlplus/mesg
./sqlplus/mesg/sp1zhs.msb
./sqlplus/mesg/sp2zhs.msb
./sqlplus/mesg/sp2ptb.msb
./sqlplus/mesg/sp2us.msb
./sqlplus/mesg/sp1us.msb
./sqlplus/mesg/sp1ptb.msb
./sqlplus/mesg/cpyja.msb
./sqlplus/mesg/sp1ja.msb
./sqlplus/mesg/cpyus.msb
./sqlplus/mesg/cpyzhs.msb
./sqlplus/mesg/cpyptb.msb
./sqlplus/mesg/sp2ja.msb
./sqlplus/sqlplus
./README
./lib
./lib/libaio.so.1
./lib/libclntsh.so.11.1
./lib/libsqlplus.so
./lib/libnnz11.so
./lib/libociei.so
Jako dodatkową zależność uwzględniłem libaio.so
- można ją zainstalować za pomocąsudo apt-get install libaio1
Przykładowym zastosowaniem może być:
cd <PATH_OF_FILES>
ORACLE_HOME=$PWD LD_LIBRARY_PATH=$PWD/lib ./sqlplus/sqlplus user/pw@server:PORT/
Podobnie jak dodatek do świetnej odpowiedzi @Ketan Patel:
Ten prosty skrypt, przechowywany razem z pobranymi plikami rpm, autpmates proces dla kolejnych instalacji:
#!/usr/bin/env sh
# /ubuntu//a/207145/585248
CURRDIR="$(pwd)";
cd $(dirname "${0}");
# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1
# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm
echo "Configuring LD path..."
# LD config:
echo /usr/lib/oracle/*/client64/lib \
| sort -V \
| tail -n 1 \
| sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig
cd "${CURRDIR}"
echo "DONE!!";
UWAGA: Instaluje się,
libaio1
co jest nazwą libaio przynajmniej w Ubuntu (i myślę, że także w Debianie). Inne dystrybucje mogą wymagać dostosowania tej nazwy pakietu do „libaio” lub innej odpowiedniej nazwy pakietu.
Edycja: Oto ulepszona wersja z zawijaniem readline (kredytodawcy tego postu ):
#!/usr/bin/env sh
# /ubuntu//a/207145/585248
CURRDIR="$(pwd)";
cd $(dirname "${0}");
# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1 rlwrap
# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm
# LD config:
echo "Configuring LD path..."
echo /usr/lib/oracle/*/client64/lib \
| sort -V \
| tail -n 1 \
| sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig
# Readline wrapping:
echo "Configuring readline wrapping..."
echo "WARNING: You need to manually execute this command or re-read /etc/profile"
echo "if you want readline wrapped 'sqlplus' alias to work in current session".
(cat | sudo tee /etc/profile.d/sqlplus_rlwrap.sh) <<!EOF
alias sqlplus="rlwrap -i -f ~/.sqlplus_history -H ~/.sqlplus_history -s 30000 sqlplus64"
!EOF
touch ~/.sqlplus_history
cd "${CURRDIR}"
echo "DONE!!";
To wciąż Wyrocznia, ale przynajmniej sprawia, że ból jest trochę bardziej znośny ...
sudo alien -i