Risposte:
Prima di tutto devi scaricare Instant Client Download . Installa il pacchetto alien in modo da poter installare i pacchetti rpm digitando il seguente comando nel terminale.
sudo apt-get install alien
Una volta fatto ciò, vai alla cartella in cui si trovano i file rpm ed esegui quanto segue:
sudo alien -i oracle-instantclient*-basic*.rpm
sudo alien -i oracle-instantclient*-sqlplus*.rpm
sudo alien -i oracle-instantclient*-devel*.rpm
È necessario installare libaio.so
. Digita il comando seguente per farlo:
sudo apt-get install libaio1
Crea file di configurazione Oracle:
sudo sensible-editor /etc/ld.so.conf.d/oracle.conf
Inserisci questa riga in quel file:
/usr/lib/oracle/<your version>/client/lib/
Nota: per le installazioni a 64 bit, il percorso sarà:
/usr/lib/oracle/<your version>/client64/lib/
Aggiorna la configurazione eseguendo il comando seguente:
sudo ldconfig
Prova a connetterti utilizzando:
sqlplus username/password@//dbhost:1521/SID
o:
sqlplus testuser/password
Nota che se hai installato la versione a 64 bit, viene chiamato il client sqlplus64
.
La cosa aliena non ha funzionato a causa di:
Error: cannot open Name index using db5 - Permission denied (13)
Quindi ho scelto la soluzione semplice: scarica i file zip da Oracle (di base e sqlplus), estraili e inserisci la cartella in cui hai inserito i file di programma (ad es /usr/share
.). Quindi creare uno script che esegua l'eseguibile dopo aver impostato la LD_LIBRARY_PATH
variabile, in modo che vengano trovate le librerie:
#!/bin/bash
DIR=/usr/share/instantclient_12_2 # <------- adjust this to the path you use
export LD_LIBRARY_PATH="$DIR"
"$DIR"/sqlplus "$@"
Chiamalo sqlplus
, rendilo eseguibile ( chmod 755 sqlplus
) e mettilo in una directory sul tuo PATH
(es. /usr/bin/
), In modo che bash lo trovi.
Eseguilo come
sqlplus user/password@host:port/service
Se ottieni
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
installa la libreria con sudo apt-get install libaio1
Penso che questo link sarebbe di aiuto. È piuttosto descrittivo. Assicurati di seguire tutti i passaggi. Tuttavia, se hai qualche problema, non esitare a commentare.
Ovviamente l'installazione corretta proviene da pacchetti ufficiali come sopra ( scarica Instant Client Downloads ), ma puoi ottenere un sqlplus completamente funzionante semplicemente copiando questi file (puoi trovarlo in qualsiasi computer con oracle client installato), e alcuni msb sono opzionali :
./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
Come dipendenza adizionale, ho incluso libaio.so
- può essere installato consudo apt-get install libaio1
Quindi, un esempio di utilizzo può essere:
cd <PATH_OF_FILES>
ORACLE_HOME=$PWD LD_LIBRARY_PATH=$PWD/lib ./sqlplus/sqlplus user/pw@server:PORT/
Proprio come un'aggiunta alla grande risposta di @Ketan Patel:
Questo semplice script, tenuto insieme ai file rpm scaricati, avvia automaticamente il processo per ulteriori installazioni:
#!/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!!";
NOTA: installa
libaio1
il nome di libaio almeno in Ubuntu (e penso anche in Debian). Altre distribuzioni potrebbero dover adattare il nome di questo pacchetto a "libaio" o qualunque sia il nome del pacchetto corrispondente.
Modifica: ecco una versione potenziata con wrapping readline (credisti per questo post ):
#!/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!!";
È ancora Oracle, ma almeno rende il dolore un po 'più sopportabile ...
sudo alien -i