Comment utiliser sqlplus pour se connecter à une base de données Oracle située sur un autre hôte sans modifier mon propre tnsnames.ora ?

Je veux me connecter à une base de données oracle située sur un autre hôte en utilisant sqlplus. [Cette page] (http://thomas.eibner.dk/oracle/sqlplus/) m'a suggéré d'ajouter un élément à mon nom de domaine pour me connecter à cette base de données.

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

et de l'utiliser ensuite dans sqlplus

sqlplus user/pass@local_SID

Cependant, dans mon cas, il n'est pas possible de modifier les tnsnames locaux. Est-il possible de se connecter à une base de données distante en utilisant simplement l'argument sqlplus sans avoir à modifier les noms de domaine ? Quelque chose comme

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

Peut-être, et cela peut dépendre de l'environnement de ligne de commande que vous utilisez, vous devez citer la chaîne, quelque chose comme

 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)))'
Commentaires (0)

Vous pouvez utiliser [easy connect] (https://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG255) pour cela :

sqlplus usr/pass@hostname.network/remote_service_name

Pour activer easy connect sur votre machine, vous devez l'ajouter au NAMES.DIRECTORY_PATH dans sqlnet.ora, par exemple :

NAMES.DIRECTORY_PATH=(EZCONNECT)

Si votre listener est sur un port autre que celui par défaut, utilisez ...@hostname.network:port/....

En fait, il semble que vous deviez fournir un nom de service, et non un SID ; il se peut qu'ils soient identiques, mais sinon, vous devrez l'obtenir du serveur.

Commentaires (3)

Créez une copie du fichier tnsnames.ora dans un répertoire dans lequel vous pouvez écrire, modifiez le fichier en conséquence, puis définissez la variable d'environnement TNS_ADMIN à l'emplacement de ce répertoire.

Par exemple :

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