2009-06-09 5 views
2

Je suis habitué à utiliser SQL Server et je suis maintenant confronté à se connecter à Oracle. Puis-je obtenir des descriptions complètement non ambiguës de ce que sont tous les champs que je dois remplir?Connexions de base de données Oracle - quels sont tous les champs que je dois remplir?

Plus précisément, je veux comprendre ce que ceux-ci sont les suivantes:

Accueil
Hostname
Port
SID
Nom du service

réseau Alias ​​
Connect identifiant

Ma compréhension de base est ce nom d'hôte est le pooter sur lequel il est assis, mais est-ce differen t à la maison? Port est le port TCP et par défaut 1521 - qui semble assez clair.

Je ne dois fournir soit SID ou le nom de service? Et quelle est la différence - pourquoi l'un ou l'autre?

Si j'ai un fichier TNS, ce qui est l'alias de réseau et identificateur de connexion? Sont-ils de toute façon les mêmes que ceux que j'ai si je n'utilise pas de fichier TNS?

Désolé d'être un tel noob, mais ma recherche préliminaire pour obtenir des réponses m'a encore très confus.

Merci!

+0

Essayez-vous de vous connecter à partir de SQL * Plus, .NET, Java ...? – stili

Répondre

1
 
Home:  ORACLE_HOME, an environment variable that points to the location 
of the Oracle binaries (either location Instance runs from on server or client 
runs from on client) 
Hostname: name of the server 
Port:  Port on which the Listener is listening for Oracle connections 
SID:  **S**ervice **ID**entifier. The name of the the Database. This is 
one of the identifiers that the Listener will expose 
Service name: An alternate identifier that may be exposed by the Listener 

Sur un existant, site configuré la meilleure façon de trouver ces détails est d'un fichier tnsnames.ora sur un client (ou serveur) de quelles connexions peuvent être faites à la base de données. Regardez sous $ ORACLE (trait de soulignement) HOME/réseau/admin. Trouvez l'ORACLE (trait de soulignement) HOME avec une commande set (Windows) ou env (Unix). Le tnsnames.ora pourrait également être dans un emplacement pointé par la variable $ TNS_ADMIN.

Si un tnsnames.ora ne peut pas être trouvé et vous avez accès au serveur essayez la commande suivante, généralement en tant qu'utilisateur Oracle

 
lsnrctl status 

lsnrctl est le Listener. État affiche les noms de service et SIDs il connaît (et quelques autres détails)

Ou trouver les listener.ora et sqlnet.ora fichiers sous $ ORACLE_HOME/network/admin ou dans l'emplacement pointé par la variable d'env $ TNS_ADMIN

en général, il y aura un auditeur par hôte, donc un port par hôte (il pourrait y avoir plus, mais ce ne est pas commun)

pour vous connecter à Oracle vous devez pointer le client à l'auditeur à un endroit spécifié par une combinaison Nom d'hôte/Port et indique le SID ou le Service à connecter également.

Le commentaire de DCookie à propos du SID par rapport au nom du service est essentiellement correct.

Le SID peut être trouvé avec (selon la version)

 
select db_unique_name from v$database 
    or 
select db_name from v$database 

Ou en regardant dans le fichier $ ORACLE_HOME/dbs/init (SID NOM) .ora ou en faisant

 
ps -ef | grep pmon 

et en notant la dernière partie du nom du processus, par exemple oua (trait de soulignement) pmon (trait de soulignement) SID

1

Si vous utilisez Oracle 10g ou au-dessus, utilisez Easy Connect syntaxe:

//servername/dbname 

, comme dans:

sqlplus scott/[email protected]//servername/dbname 

Si vous devez utiliser TNS, voici l'exemple de TNSNAMES.ORA:

XE = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = XE) 
    ) 
) 

En CONNECT_DATA, vous pouvez utiliser SERVICE_NAME (qui est un identificateur pour une instance enregistrée avec un écouteur), ou SID (qui est un identificateur de base de données).

En quelques mots:

  • SERVICE_NAME est un identifiant d'une instance: un Oracle exécutable en cours d'exécution qui vous connecter à
  • SID est un identifiant d'une base de données: un ensemble de fichiers vos données sont stockés dans.

Une base de données peut être utilisée par plusieurs instances Oracle.

Lors de l'utilisation de doute SERVICE_NAME.

Dans ce cas, connectez comme suit:

sqlplus scott/[email protected] 
+0

Ma compréhension de SERVICE_NAME par rapport à SID: Le nom de service a été introduit avec 8i (et remplace fondamentalement SID), et est la valeur (s) qu'une instance enregistre avec TNS comme (correspond au paramètre d'initialisation SERVICE_NAME). Il est plus flexible que SID (vous pouvez facilement échanger une instance avec une autre en changeant les noms de service, tout en étant transparent pour tous les clients essayant de se connecter), tout en autorisant l'attribution de noms de domaine. Changer le nom du service est beaucoup plus facile que de changer le SID, ce qui nécessite des changements côté client à tnsnames.ora – DCookie

Questions connexes