2010-12-12 5 views
1

Si j'ai une base de données 11g Oracle a mis en place pour que je puisse y accéder avecalias base de données Oracle

sqlplus user/[email protected]:1521/ora11 

Cependant, je me demandais s'il est possible de définir un alias pour y accéder via:

sqlplus user/[email protected] 

je peux mettre l'oracle SID et se connecter via

export ORACLE_SID=ora11 
sqlplus user/pass 

Cependant, si j'ai plus d'une base de données, à savoir ORA10 -> oracl e 10 et ORA11 -> Oracle 11, alors je préférerais connecter comme

sqlplus user/[email protected] 
sqlplus user/[email protected] 

plutôt que d'avoir à taper localhost ou un ensemble ORACLE_SID chaque fois.

Il serait également utile de le faire si j'essaie d'accéder à des bases de données Oracle distantes et que je ne veux pas avoir à me souvenir de l'IP/PORT/SID chaque fois que je souhaite me connecter.

Répondre

4

Ajouter une entrée à $ORACLE_HOME/network/admin/tnsnames.ora pour chaque base de données que vous souhaitez vous connecter:

 
ORA11 = 
(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
(CONNECT_DATA = 
    (SERVICE_NAME = ORA11) 
) 
) 

Vous pouvez maintenant vous connecter à cette base de données en utilisant sqlplus user/[email protected].

+0

Je ne suis pas sûr, mais sur mon serveur ORACLE 11 ces entrées TNS sont créés automatiquement, lorsque je crée les bases de données –

+1

Oui, le serveur les génère automatiquement (car il devra agir en tant que client si vous créez un lien de base de données) mais vous pouvez ajouter des alias supplémentaires si vous en avez besoin ou maintenir un tnsnames.ora séparé par utilisateur ('$ HOME/.tnsnames .ora', de mémoire). – SimonJ

+1

[La page de René Nyffenegger] (http://www.adp-gmbh.ch/ora/network/connection.html) pourrait être intéressante. – SimonJ

0

Du côté client, vous pouvez utiliser TNSNANES.ORA pour ce faire. Mais similaire aux paramètres ODBC cela définit les noms uniquement pour un client. Différents clients peuvent utiliser des noms différents.

0

Je propose cette entrée à la place

SERVICE11 = 
(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
(CONNECT_DATA = 
    (SID = INSTANCE11) 
) 
) 

Il est préférable de nommer votre instance et votre service mimant les concepts. D'où le nom SERVICE11 pour représenter le concept de service, et INSTANCE11 pour représenter le concept d'instance. Pour un service lié à Oracle 10g, vous pouvez:

SERVICE10 = 
(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1520)) 
    ) 
(CONNECT_DATA = 
    (SID = INSTANCE10) 
) 
) 

Vous devez configurer deux auditeurs, chaque écoute de valeur différente du port. Il me semble que vous voulez utiliser plusieurs SGBD. Comme vous le voyez, il n'y a aucune base de données impliquée dans le tnsnames.ora. Par conséquent, l'expression «se connecter à la base de données» est erronée. Après avoir configuré les deux écouteurs et le fichier listener-config associé, placez l'entrée des deux services dans le fichier tnsnames.ora de votre hôte-client. Vous pouvez alors

nom d'utilisateur sqlplus/mot de passe @ service10 nom d'utilisateur sqlplus/mot de passe @ service11

Questions connexes