Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meus próprios tnsnames.ora

Eu quero me conectar a uma base de dados de oráculos localizada em outro host usando sqlplus. Esta página sugeriu adicionar um item nos meus tnsnames para conenctar a essa base de dados

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

e depois usar isso em sqlplus

sqlplus user/pass@local_SID

No entanto, nas minhas circunstâncias não é possível modificar os tnsnames locais. É possível conectar-se a uma base de dados remota apenas usando o argumento sqlplus sem ter que mudar os nomes dos tnsnames? Algo como

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

Talvez, e isto pode depender do ambiente de linha de comando que você're está usando, você precisa citar a string, algo como

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

ou

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

Você pode usar easy connect para isso:

sqlplus usr/pass@hostname.network/remote_service_name

Para habilitar easy connect em sua máquina, você precisa adicioná-lo ao NAMES.DIRECTORY_PATH em sqlnet.ora, por exemplo:

NAMES.DIRECTORY_PATH=(EZCONNECT)

Se o seu ouvinte estiver em uma porta sem defeito, utilize ...@hostname.network:port/....

Na verdade parece que você tem que fornecer um nome de serviço, não um SID; eles podem ser os mesmos, mas se não você'precisará obter isso do servidor.

Comentários (3)

Crie uma cópia do arquivo tnsnames.ora em um diretório para o qual você possa escrever, modifique o arquivo de acordo, e então defina a variável de ambiente TNS_ADMIN para a localização desse diretório.

por exemplo:

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
Comentários (2)