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@[email protected] ;( I know, this one is not valid)
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)))'
Você pode usar easy connect para isso:
sqlplus usr/[email protected]/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 [email protected]: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.
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