Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Connexions aux bases de données Oracle Discussion :

Ma connexion marche en SID, comment la faire marcher en Service Name ?


Sujet :

Connexions aux bases de données Oracle

  1. #1
    Rédacteur/Modérateur

    Ma connexion marche en SID, comment la faire marcher en Service Name ?
    Bonjour,
    J'ai une VM Windows avec un serveur Oracle 12c (je ne sais pas si elle est en mode container ou pas). Je l'interroge avec OBIEE, la connexion passant par un vieil ODBC pour Oracle 8i. L'ODBC appelle un SID nommé ORCL. Certaines fonctions avancées d'OBIEE me font un message d'erreur, et je soupçonne que le problème vient de la connexion ODBC.

    J'ai tenté de changer la connexion pour passer en mode OCI, en renseignant la source de données comme étant localhost:1521:ORCL, et j'obtiens un message d'erreur me disant qu'Oracle ne connaît pas ce service name. Idem avec localhost:1521:ORCL.toto.local (cf ci-dessous).

    Dans mon tnsnames.ora, la source ORCL est renseignée comme faisant référence à un service name ORCL.toto.local. Quand je fais un tnsping, j'obtiens bien ORCL, en passant par le sqlnet.ora. Si je supprime le sqlnet.ora, le tnsping fonctionne toujours, mais sans m'indiquer le fichier tnsnames.ora comme fichier de résolution.

    Dans SQL Developper, je me connecte sans problème au SID ORCL, mais par contre la connexion échoue si je met ORCL ou ORCL.toto.local comme service name. J'ai le même comportement avec l'ODBC.

    Avez-vous une idée de comment je peux faire marcher ma connexion en OCI / en service name ?

    Merci d'avance pour toute piste !
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  2. #2
    Rédacteur

    Salut Antoine

    Parmi les conditions à respecter, il faut que le nom de service par lequel tu souhaites passer soit reconnu par la base, et par le listener.

    Côté base, se connecter par sqlplus en SYSDBA, et exécuter :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    show parameter service
    show parameter listener


    Côté listener, à vérifier par la commande suivante (à taper directement dans une fenêtre DOS)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    lsnrctl status


    Il faut nous donner le résultat exact de tout ça, ainsi que tes messages d'erreur tels quels, sans reformulation ou paraphrase
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Rédacteur/Modérateur

    Salut Richard, merci de te pencher sur mes soucis !

    Voici déjà le résultat des show parameter. Pour le service :
    NAME TYPE VALUE
    ------------- ------ -----------------
    service_names string orcl.domora.local
    et pour le listener :
    NAME TYPE VALUE
    ----------------- ------ -------------
    listener_networks string
    local_listener string LISTENER_ORCL
    remote_listener string
    Et voici le message d'erreur pour la connexion OCI sur localhost:1521:ORCL :


    Le sqlnet.ora contient ça :

    # sqlnet.ora Network Configuration File: C:\app\Administrateur\product\12.2.0\dbhome_1\network\admin\sqlnet.ora
    # Generated by Oracle configuration tools.

    # This file is actually generated by netca. But if customers choose to
    # install "Software Only", this file wont exist and without the native
    # authentication, they will not be able to connect to the database on NT.
    SQLNET.AUTHENTICATION_SERVICES= (NTS)

    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    et, pour terminer, voici le contenu du tnsnames.ora :
    # tnsnames.ora Network Configuration File: C:\app\Administrateur\product\12.2.0\dbhome_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.

    LISTENER_ORCL =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-K8RMG0SFR8I.domora.local)(PORT = 1521))


    ORACLR_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
    (SID = CLRExtProc)
    (PRESENTATION = RO)
    )
    )

    ORCL =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-K8RMG0SFR8I.domora.local)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl.domora.local)
    )
    )
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  4. #4
    Rédacteur

    ORA-12545, ça suggère un problème résolution de nom.

    Peux-tu tester la connexion suivante (en remplaçant XXX par le mot de passe de SYSTEM) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    sqlplus system/XXX@WIN-K8RMG0SFR8I.domora.local:1521/orcl.domora.local
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Rédacteur/Modérateur

    ça fonctionne, et si je répercute côté OCI en indiquant localhost:1521/orcl.domora.local, ça marche enfin !

    Merci beaucoup !
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Membre éprouvé
    Hello,
    Si tu veux te connecter en sid , il faut utiliser le ":" après le port.
    En service name : "/"
    Donc pour utiliser le sid : localhost:1521:ORCL
    pour utiliser le service_name : localhost:1521/ORCL

  7. #7
    Rédacteur

    Je n'avais jamais entendu parler de la syntaxe serveur:port:SID
    Vous confirmez que ça fonctionne ? A partir de quelle version ?

    Je teste sur une 12.2, et ça ne fonctionne pas.
    Dès lors que je remplace /SERVICE par :SID, j'ai une erreur ORA-12545.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par 13thFloor Voir le message
    Hello,
    Si tu veux te connecter en sid , il faut utiliser le ":" après le port.
    En service name : "/"
    Donc pour utiliser le sid : localhost:1521:ORCL
    pour utiliser le service_name : localhost:1521/ORCL
    Merci, ça me rassure d'apprendre que serveur:port:bdd n'était pas une pure invention de mon esprit malade...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

###raw>template_hook.ano_emploi###