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

Voglio connettermi a un database oracle situato su un altro host usando sqlplus. Questa pagina mi ha suggerito di aggiungere un elemento sul mio tnsnames per connettermi a quel database

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

e poi usarlo in sqlplus

sqlplus user/pass@local_SID

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

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)
Soluzione
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

Forse, e questo potrebbe dipendere dall'ambiente della linea di comando che stai usando, hai bisogno di citare la stringa, qualcosa come

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

o

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Commentari (0)

Puoi usare easy connect per questo:

sqlplus usr/pass@hostname.network/remote_service_name

Per abilitare easy connect sulla tua macchina, devi aggiungerlo al NAMES.DIRECTORY_PATH in sqlnet.ora, ad esempio:

NAMES.DIRECTORY_PATH=(EZCONNECT)

Se il tuo ascoltatore è su una porta non predefinita usa ...@hostname.network:port/....

In realtà sembra che tu debba fornire un nome di servizio, non un SID; potrebbero essere gli stessi, ma se non lo sono dovrai ottenerlo dal server.

Commentari (3)

Create una copia del file tnsnames.ora in una directory in cui potete scrivere, modificate il file di conseguenza, poi impostate la variabile d'ambiente TNS_ADMIN sulla posizione di quella directory.

es:

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
Commentari (2)