it-swarm.it

Come utilizzare sqlplus per connettersi a un database Oracle situato su un altro host senza modificare il mio tnsnames.ora

Voglio collegarmi a un database Oracle situato su un altro host usando sqlplus. Questa pagina ha suggerito di aggiungere un elemento sui miei nomi utente per collegarlo a quel database

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )

e poi usalo in sqlplus

sqlplus user/[email protected]_SID

Tuttavia, nelle mie circostanze, non è possibile modificare i nomi tnn locali. È possibile connettersi a un database remoto semplicemente usando l'argomento sqlplus senza cambiare tnsnames? Qualcosa di simile a

sqlplus user/[email protected][email protected] ;( I know, this one is not valid)
83
Louis Rhys
 sqlplus user/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

Forse, e questo potrebbe dipendere dall'ambiente della riga di comando che stai usando, devi citare la stringa, qualcosa del genere

 sqlplus "user/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

o

 sqlplus 'user/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
88

Puoi usare easy connect per questo:

sqlplus usr/[email protected]/remote_service_name

Per abilitare easy connect sul tuo computer, devi aggiungerlo a NAMES.DIRECTORY_PATH in sqlnet.ora, ad es .:

NAMES.DIRECTORY_PATH=(EZCONNECT)

Se il tuo listener si trova su una porta non predefinita, usa [email protected]:port/....

In realtà sembra che devi fornire un nome di servizio, non un SID; potrebbero essere uguali, ma in caso contrario dovrai ottenerlo dal server.

37
Alex Poole

Creare una copia del file tnsnames.ora in una directory in cui è possibile scrivere, modificare il file di conseguenza, quindi impostare la variabile di ambiente TNS_ADMIN nella posizione di quella directory.

per esempio:

cp $Oracle_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp
18
Philᵀᴹ

Sul sistema Unix/Linux è possibile utilizzare file di configurazione a livello utente per sovrascrivere le voci a livello di sistema.

 Livello di sistema Livello utente 
 File di configurazione File di configurazione 
 ------------------ ------- ------------ 
 sqlnet.ora $ HOME/.sqlnet.ora 
 tnsnames.ora $ HOME/.tnsnames.ora 

I file di configurazione a livello di sistema si trovano nella directory $TNS_ADMIN. Se la variabile TNS_ADMIN non è impostato, quindi vengono cercati nella directory $Oracle_HOME/network/admin.

I file di configurazione a livello di utente non sostituiscono i file di configurazione a livello di sistema nel suo insieme (poiché TNS_ADMIN directory sostituisce l'intero $Oracle_HOME/network/admin directory) ma aggiungono o modificano le voci dei file di configurazione a livello di sistema. Se esiste una voce in un file di configurazione a livello di utente, viene utilizzata questa, se non esiste nel file di configurazione a livello di utente, viene utilizzata la voce del file di configurazione a livello di sistema.

3
miracle173