Je souhaite me connecter à une base de données Oracle située sur un autre hôte à l'aide de sqlplus. Cette page a suggéré d'ajouter un élément sur mes tnsnames pour se connecter à cette base de données
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
puis l'utiliser dans sqlplus
sqlplus user/pass@local_SID
Cependant, dans mes circonstances, la modification des noms de réseau local n'est pas possible. Est-il possible de se connecter à une base de données distante simplement en utilisant l'argument sqlplus sans avoir à changer les tnsnames? Quelque chose comme
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)))
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)))'
Vous pouvez utiliser connexion facile pour cela:
sqlplus usr/[email protected]/remote_service_name
Pour activer la connexion facile sur votre machine, vous devez l'ajouter au NAMES.DIRECTORY_PATH
dans sqlnet.ora, par exemple:
NAMES.DIRECTORY_PATH=(EZCONNECT)
Si votre écouteur se trouve sur un port autre que celui par défaut, utilisez [email protected]:port/...
.
En fait, il semble que vous devez fournir un nom de service, pas un SID; ils peuvent être identiques, mais sinon, vous devrez l'obtenir auprès du serveur.
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
Sur le système Unix/Linux, vous pouvez utiliser fichiers de configuration de niveau utilisateur pour remplacer les entrées de niveau système.
Niveau système Niveau utilisateur Fichier de configuration Fichier de configuration ------------------ ------- ------------ sqlnet.ora $ HOME/.sqlnet.ora tnsnames.ora $ HOME/.tnsnames.ora
Les fichiers de configuration au niveau du système se trouvent dans le répertoire $TNS_ADMIN
. Si la variable TNS_ADMIN
n'est pas défini alors ils sont recherchés dans le répertoire $Oracle_HOME/network/admin
.
Les fichiers de configuration au niveau utilisateur ne remplacent pas les fichiers de configuration au niveau système dans leur ensemble (comme le TNS_ADMIN
répertoire remplacer l'ensemble $Oracle_HOME/network/admin
) mais ils ajoutent ou modifient les entrées des fichiers de configuration au niveau du système. Si une entrée existe dans un fichier de configuration au niveau utilisateur, alors celle-ci est utilisée, si elle n'existe pas dans le fichier de configuration au niveau utilisateur, alors l'entrée du fichier de configuration au niveau système est utilisée.