Question

Mon but est de se connecter à une instance Oracle 9i de ma machine OS X. J'ai suivi les instructions d'installation ici et a obtenu à travers eux sans erreur (éventuellement). Cependant, je trouve que sqlplus est incapable de se connecter:

[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

looooong attente ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Enter user-name: xxx
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

Mon fichier tnsnames.ora ...

zzz =
  (DESCRIPTION = 
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = dbhost)
        (PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = zzz)
  )
)

Peut-être il y a une variable d'environnement qui doit être réglé?


UPDATE

Capable de ping machine hôte DB sans problème.

J'ai essayé ...

sqlplus xxx/yyy@//dbhost/zzz

Got ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Essayé à l'aide SID au lieu de SERVICE_NAME dans tnsnames.ora. Ne semble pas changer le résultat. Retour à SERVICE_NAME Reconvertit.


Les derniers articles de couple dans sqlnet.log ...

***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 10:33:06
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0


***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 11:24:08
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0

RÉPONSE PARTIELLE

Merci à tous pour vos réponses. Ils étaient très serviables. J'ai trouvé qu'il y avait un problème de DNS. J'ai pu ping par nom d'hôte, donc pensé que devrait fonctionner correctement. J'ai aussi essayé i.p. adresse. Se sont avérés que je avais besoin du "10.1.x.x" interne i.p. adresse pour que cela fonctionne sur cette machine OS X (mais le nom d'hôte est très bien sous Windows).

À ce stade, je peux me connecter avec ...

sqlplus xxx/yyy@//INTERNAL_IP/zzz

Cependant, ces valeurs sont entrées en tnsnames.ora, cela ne fonctionne toujours pas ...

sqlplus xxx/yyy@zzz

...

ORA-12154: TNS:could not resolve the connect identifier specified

Je recherchais un exemple de fichier tnsnames.ora qui était proche de ce que je avais besoin et copié le contenu dans mon dossier. Changé les params et maintenant tout fonctionne. Je ne sais pas pourquoi le mien ne fonctionnait pas.

Était-ce utile?

La solution

Puisque vous utilisez un client de 10g, il est conseillé d'utiliser la syntaxe de la place Easy Connect:

export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy

, ou tout simplement ceci:

sqlplus 'xxx/yyy@//dnhost/zzz'

Vérifiez également vos points de ORACLE_HOME dans le dossier à droite: tnsnames.ora est recherché dans $ORACLE_HOME/network/admin/tnsnames.ora

Autres conseils

Vos supports semblent corrects.

Essayez d'utiliser le SID:

Ce qui suit est un exemple d'un fichier tnsnames.ora:

IDENTIFIER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = odb))
  )

En savoir plus sur SID ici.

Vous pouvez utiliser

sqlplus user/password@servicename_host

si vous ne pouvez pas vous connecter, vous pouvez utiliser

sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))

si vous utilisez Linux un autre OS * nix vous devez utiliser des guillemets sinon le () sont interprétés par le shell

par exemple

sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'

Il y a probablement un fichier sqlnet.log généré dans votre répertoire de travail. Cela peut vous aider ou si vous postez son contenu, il pourrait nous donner plus d'informations.

Dans votre exemple, vous essayez deux choses différentes. Sur la ligne de commande utilisée « xxx / yyy @ zzz ». Il ressemble à ceci est de trouver l'entrée « zzz » dans tnsnames.ora avec succès, mais le délai d'attente indique qu'il ne reçoit aucune réponse du serveur. Pouvez-vous ping dbhost avec succès?

Sur votre deuxième vous essayez juste d'entrer sur le nom d'utilisateur « xxx »; ce qui est logique si vous n'êtes pas habitué à SQLPlus, mais comme vous pouvez le voir, il n'y a pas de point où il vous demande le nom de la base de données. Donc, dans ce cas, il essayait de se connecter à « xxx / yyy » sans nom de service, menant à la deuxième erreur. Cela signifie simplement que vous ne disposez pas d'un nom de service par défaut mis en place. Donc, cette erreur provient d'entrée incomplète. (Vous devez entrer « xxx @ zzz » pour le nom d'utilisateur pour spécifier le nom du service à la demande. Vous pouvez réellement entrer toute la chaîne de connexion « xxx / yyy @ zzz » à l'invite de nom d'utilisateur, si cela ne vous dérange pas l'être de mot de passe visible).

Avez-vous essayé d'utiliser telnet pour arriver au port ouvert pour vous assurer un pare-feu ne vous bloque? vaut peut-être l'hôte port num telnet try

Avez-vous configuré votre environnement avec le oraenv script?

Avez-vous essayé tnsping?

$ tnsping $ORACLE_SID

Peut-être vous aidera à comparer la sortie sur une machine qui ne se connecte à la sortie sur une machine qui ne parvient pas à se connecter. Au moins, c'est ce que je fais juste avant de contacter notre DBA.

Vous pouvez obtenir un peu plus de détails sur ce que l'erreur avec la commande oerr:

$ oerr ora 12170
12170, 00000, "TNS:Connect timeout occurred"
// *Cause:  The server shut down because connection establishment or
// communication with a client failed to complete within the allotted time
// interval. This may be a result of network or system delays; or this may
// indicate that a malicious client is trying to cause a Denial of Service
// attack on the server.
// *Action: If the error occurred because of a slow network or system,
// reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT,
// SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
// If a malicious client is suspected, use the address in sqlnet.log to
// identify the source and restrict access. Note that logged addresses may
// not be reliable as they can be forged (e.g. in TCP/IP).

J'ai eu un problème similaire et il semble que Oracle sqlplus était le problème!

Connexion comme l'une de ces œuvres:

   > sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
   > sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName

(le // est facultatif avant le nom d'hôte). Toutefois, en laissant de mot de passe ou les deux utilisateur / passe échoue comme ceci:

    sqlplus @//MyHostname:1521/MyServiceName

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
    Enter user-name: MyUsername
    Enter password: MyPassword
    ERROR: 
    ORA-12162: TNS:net service name is incorrectly specified

Alors, même si sqlplus vous demande le nom d'utilisateur / mot de passe, il bêtement échouer avec un message d'erreur si vous les bogus tapez à l'invite. Il ne fonctionne que si vous les placez (les deux!) Au début de la chaîne de connexion.

  

Stupide Oracle !!!

SUIVEZ CE LIEN POUR ÉTAPE PAR ÉTAPE INSTALLATION ET MÉTHODES d'INSTALLATION POST .. Attention AVEC.

Et pour se connecter avec sql plus:

  1. BE système USERNAME AS sera PAR L'enseignement donné dans lien ci-dessus
  2. votre mot de passe NE DOIT PAS ÊTRE tigre, mais celui que vous avez défini au début de l'installation

P.S: Pas de panique si vous trouvez problème (incompatibilité du navigateur) reliant Oracle Enterprise Manager lors du test de l'installation si votre navigateur est Google Chrome. appuyez sur la flèche de dernière page et page suivante flèche pour convenir de conditions et cliquez sur OK.

Je résolu ce problème sur ma machine en un jour .. mais ce sera une question de deux ou hors pour vous.

soruces: Je suis ingénieur en informatique principalement dans le code java

J'ai eu la même erreur (ORA-12162: TNS: nom de service net est correctement spécifié), mais une autre raison (Sous Windows 7 Enterprise 64 bits). Espérons que cela aide quelqu'un:

I.T. à mon travail installé 32 bits et 64 bits Oracle, et en fonction de ma variable PATH, la coquille a regardé dans le chemin de 64bit pour SQLPLUS.exe par rapport au chemin de 32bit.

Les différents chemins utiliser différents fichiers tnsnames.ora et je n'avais pas ma chaîne de connexion dans le chemin 64 bits:

produit Oracle \ \ 11.1.0 \ client_1_64bit \ réseau \ admin \ tnsnames.ora

Je ne ai eu la chaîne de connexion dans les TNSNAMES.ORA 32 bits: produit Oracle \ \ 11.1.0 \ client_1_32bit \ réseau \ admin \ tnsnames.ora

En outre, puisqu'il y avait plusieurs installations ORACLE je devais supprimer la variable d'environnement ORACLE_HOME afin que les deux installations peuvent utiliser différents répertoires de la maison.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top