Antworten:
Zunächst müssen Sie Instant Client Downloads herunterladen . Installieren Sie das Alien-Paket, damit Sie RPM-Pakete installieren können, indem Sie den folgenden Befehl im Terminal eingeben.
sudo apt-get install alien
Wechseln Sie anschließend in den Ordner, in dem sich die RPM-Dateien befinden, und führen Sie Folgendes aus:
sudo alien -i oracle-instantclient*-basic*.rpm
sudo alien -i oracle-instantclient*-sqlplus*.rpm
sudo alien -i oracle-instantclient*-devel*.rpm
Sie müssen installieren libaio.so
. Geben Sie dazu den folgenden Befehl ein:
sudo apt-get install libaio1
Erstellen Sie eine Oracle-Konfigurationsdatei:
sudo sensible-editor /etc/ld.so.conf.d/oracle.conf
Fügen Sie diese Zeile in die Datei ein:
/usr/lib/oracle/<your version>/client/lib/
Hinweis - Bei 64-Bit-Installationen lautet der Pfad:
/usr/lib/oracle/<your version>/client64/lib/
Aktualisieren Sie die Konfiguration, indem Sie den folgenden Befehl ausführen:
sudo ldconfig
Versuchen Sie eine Verbindung herzustellen mit:
sqlplus username/password@//dbhost:1521/SID
oder:
sqlplus testuser/password
Beachten Sie, dass der Client aufgerufen wird, wenn Sie die 64-Bit-Version installiert haben sqlplus64
.
Das Alien-Ding hat nicht funktioniert wegen:
Error: cannot open Name index using db5 - Permission denied (13)
Also entschied ich mich für die einfache Lösung: Laden Sie die ZIP- Dateien von Oracle (Basic und SQL Plus) herunter, extrahieren Sie sie und legen Sie den Ordner ab, in dem Sie die Programmdateien abgelegt haben (z /usr/share
. B. ). Erstellen Sie dann ein Skript, das die ausführbare Datei ausführt, nachdem Sie die LD_LIBRARY_PATH
Variable festgelegt haben, damit Bibliotheken gefunden werden:
#!/bin/bash
DIR=/usr/share/instantclient_12_2 # <------- adjust this to the path you use
export LD_LIBRARY_PATH="$DIR"
"$DIR"/sqlplus "$@"
Rufe es auf sqlplus
, mache es ausführbar ( chmod 755 sqlplus
) und lege es in ein Verzeichnis PATH
(zB /usr/bin/
), damit bash es findet.
Führen Sie es wie
sqlplus user/password@host:port/service
Wenn du bekommst
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
Installieren Sie die Bibliothek mit sudo apt-get install libaio1
Ich denke, dieser Link würde helfen. Es ist ziemlich beschreibend. Stellen Sie sicher, dass Sie alle Schritte befolgen. Wenn Sie dennoch Probleme haben, zögern Sie nicht, einen Kommentar abzugeben.
Natürlich stammt die korrekte Installation von offiziellen Paketen wie oben ( Download von Instant Client-Downloads ), aber Sie können ein voll funktionsfähiges sqlplus erhalten, indem Sie einfach diese Dateien kopieren (Sie finden es auf jedem Computer, auf dem Oracle Client installiert ist), und einige MSBs sind optional :
./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
Als zusätzliche Abhängigkeit habe ich aufgenommen libaio.so
- es kann mit installiert werdensudo apt-get install libaio1
Eine Beispielanwendung kann also sein:
cd <PATH_OF_FILES>
ORACLE_HOME=$PWD LD_LIBRARY_PATH=$PWD/lib ./sqlplus/sqlplus user/pw@server:PORT/
Nur als Ergänzung zu Ketan Patels großartiger Antwort:
Dieses einfache Skript, zusammen mit heruntergeladenen RPM-Dateien, automatisiert den Vorgang für weitere Installationen:
#!/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!!";
HINWEIS: Es wird installiert,
libaio1
welches der Name des Libaio ist , zumindest in Ubuntu (und ich denke auch in Debian). Andere Distributionen müssen diesen Paketnamen möglicherweise an "libaio" oder den entsprechenden Paketnamen anpassen.
Edit: Hier ist es eine verbesserte Version mit Zeilenumbruch (Credists für diesen Beitrag ):
#!/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!!";
Es ist immer noch Oracle, aber es macht die Schmerzen ein bisschen erträglicher ...
sudo alien -i