Se connecter à une Base ORACLE avec SQL SERVER 2005 - SQL/NoSQL - Programmation
Marsh Posté le 26-08-2008 à 15:22:03
Aucunes réponses ?
Je profite pour uper ce sujet alors, car je susi sur le même problème.
En tout cas je sais que c'est possible, il faut installer le client oracle sur le même pc là où on utilise SQL SERVER, ensuite il faut configurer le client oracle pour qu'il se connecte à la BDD Oracle ( c'est là ou j'en suis actuellement ^^) et enfin se connecter au client grace au fournisseur OLEDB for oracle à partir de SQL Server...?
Corrigez moi si je me trompe svp...
Marsh Posté le 26-08-2008 à 20:10:36
Exact.
Configure ton client Oracle (TNSNAMES.ORA).
Ensuite, installe sur le serveur, les pilotes OLEDB for ORACLE.
Finalement, tu vas dans l'outil "Enterprise Manager" d'SQL SERVER 2005 et tu crées un object de type "Linked Server".
Ce genre d'objet te permet de faire une connexion vers n'importe quel autre DB à partir du moment ou tu possèdes les pilotes OLEDB pour faire la connexion.
Voila, bon courage, mais sache que cela peut devenir une vrai merde. Moi typiquement, mon serveur était un Windows Server 2003 64 Bits, et les pilotes OLEDB 64 bit à l'époque n'était qu'en BETA, ils étaient ultra buggé, certaines query passaient, d'autres pas du tout.
HOPE this HELP.
Marsh Posté le 26-08-2008 à 21:18:31
Merci pour ces précisions ^^
Mon client oracle 10g est configurer, il se connecte normalement au serveur.
Mais j'ai une question :
Il y a plusieurs fournisseurs disponibles sous SQL Server 2005 dont "Microsoft OLE DB Provider for Oracle" et un autre Fournisseur "Oracle pour OLE DB" qui est dispo quand on installe oracleXE, lequel entre ces deux est le meilleur ?
Marsh Posté le 27-08-2008 à 01:47:26
N'utilise JAMAIS le drivers fourni par Oracle. Oracle, il suffit de regarder leur SGBD pour se rendre compte qu'ils ne savent pas programmer. Le drivers de Microsoft est de loin plus stable et performant. Et en plus, il gère mieux les types BLOB/CLOB, que celui d'Oracle ne gère pour ainsi dire pas (c'est un comblre)
Marsh Posté le 27-08-2008 à 13:08:05
MagicBuzz a écrit : N'utilise JAMAIS le drivers fourni par Oracle. Oracle, il suffit de regarder leur SGBD pour se rendre compte qu'ils ne savent pas programmer. Le drivers de Microsoft est de loin plus stable et performant. Et en plus, il gère mieux les types BLOB/CLOB, que celui d'Oracle ne gère pour ainsi dire pas (c'est un comblre) |
Je suis tout à fait d'accord avec toi.
Récemment, on a trouver un énormement Bug dans les drivers JDBC JAVA pour Oracle. Et croyé moi, ce bug fait peur, très peur (après un close de la connexion sans Commit/Rollback, il est possible si la connexion est mise dans un pool de la récupérer avec les transactions qui sont toujours en pending malgré le close).
Marsh Posté le 27-08-2008 à 13:26:45
Moi j'ai commencé à découvrir les bugs avec la version 7.0.3, quand j'ai débuté.
Déjà, ça partait mal, les types CHAR et VARCHAR plantaient carrément le drivers.
Ensuite, BLOB/CLOB ne marchaient pas du tout.
RecordCount était généralement à -1, ou pire, à une valeur arbitraire qui n'avait rien à voir avec le nombre réel (genre le nombre de lignes lues dans une des tables utilisées pour une jointure)
Les recordsets dynamiques ne fonctionnaient pas du tout (c'est bien pratique les movenext() sans possibilité de faire demi-tour, mais ça devient lourd quand on ne peut même pas faire un movefirst()... je ne parle pas du move() tout court qui ne plantait pas mais... qui faisait vraiment pas ce qu'on lui demandais).
Depuis, tous ces bugs partent et reviennent d'une version à l'autre, d'autres sont ajoutés quelques uns corrigés partiellement... Mais y'a toujours un truc qui déconne.
Je ne compte pas le nombre de projets où j'ai été appelé en pompier parceque toute l'application déconnait à plein tube au moment d'une mise en prod... et le nombre de fois où le simple remplacement du drivers par celui de Microsoft résolvait l'intégralité des problèmes !
Bon, celui de Microsoft n'est pas toujours parfait, j'irai pas dire ça. Mais il est autrement plus fiable, le seul bug réel que j'ai jamais eu, c'est le recordcount qui ramène -1 et les blob/clob obligatoirement en dernière position dans un select. Sorti de ça, jamais eu le moindre problème avec.
Marsh Posté le 27-08-2008 à 14:23:10
Je vous avoue que beaucoup de vos termes m'échappent
Mais j'ai au moins bien compris votre avis sur la question
MagicBuzz a écrit : N'utilise JAMAIS le drivers fourni par Oracle |
Je vais donc écouter vos conseils et utiliser le driver fourni par microsoft
Marsh Posté le 27-08-2008 à 15:07:38
J'ai une erreur sur SQL server... :
Code :
|
Quand j'ai eu ce message, je suis allé sur mon client oracle et j'ai tenter de me connecter, mais j'arrive plus du tout à me connecter à la BDD oracle , il m'affiche le même code d'erreur
J'ai tenter un ping, tnsping et tout à l'air de fonctionner
Comment résolver ce problème ?
Marsh Posté le 27-08-2008 à 15:13:16
Ben là, c'est ton serveur Oracle qui déconne. Depuis un autre poste, t'arrive à te connecter avec le client ?
T'as bien vérifié que tu utilises bien le bon TNS ?
Marsh Posté le 27-08-2008 à 15:29:40
J'arrive à me connecter dessus depuis un autre poste ayant le client,
J'utilise bien le bon TNS
Comme tu l'as supposer je pense que ça doit être du côté serveur que ça déconne, je vais voir le listener.ora tnsnames.ora sur le serveur, on verra bien
Marsh Posté le 27-08-2008 à 15:34:38
En tout cas, tant que ton client Oracle ne marche plus, ça pourra pas marcher avec SQL Server, puisqu'il passe par le client.
C'est étrange que ça ait pété d'un coup comme ça par contre, surtout que je vois pas quel rapport ça pourrait avoir.
Marsh Posté le 27-08-2008 à 15:36:49
je sais.
(peut-être)
mais je crois pas, ça explique pas le coup du client...
mais en gros, colle "tout le monde / contrôle total" sur ton fichier "tnsnames.ora"
du moins, avec IIS ça te sort une vieille erreur de la mort genre t'as pas de client oracle installé si il n'arrive pas à accéder à ce fichier, et c'est à cause d'un souci de privilèges pas assez élevés.
et vu que SQL Server ne tourne pas avec les droits de ta session, mais un compte restreint, y'a peut-être un souci du genre.
mais ça n'explique pas pourquoi ton client oracle ne marche plus tout d'un coup
Marsh Posté le 27-08-2008 à 15:51:05
Bon, je raconte le déroulement de tout ça :
J'ai installer mon client hier, je l'ai configuer et tout, et les requêtes marchaient nickel.
J'ai tenter un brève connection à partir De SQLServer hier soir mais ça ne marchait pas, ça me disait que le client n'était pas installé, j'ai donc redémarré le serveur SQL pour qu'il le détecte et comme j'étais en heure sup... je suis parti pendant son redémarrage, ce matin j'arrive je retente la connection sur SQL et ça m'affiche l'erreur que vous voyez un peu plus haut.
Mais là y a trop de choses à prendre en compte, je vais revérifier tout depuis le début calmement, posément.
Je vais quand même tester ta solution, je reposte dès que j'ai résolue le problème ^^
Marsh Posté le 27-08-2008 à 17:06:32
J'ai refait un "profil" sur mon client et cela passe même après un redémarrage, quand je réessaie de me connecter depuis sql server, j'ai cette erreur :
Code :
|
Marsh Posté le 27-08-2008 à 17:15:07
Et avec SQL Plus, sur le même TNS t'arrives bien à te connecter ?
Si oui, alors essaie de coller un accès public contrôle total sur ton tnsnames.ora, on sait jamais.
Ensuite, mise à part une erreur dans la config du lien, je vois pas...
Le serveur Oracle, il est sous Windows ou pas ? A mon avis ça change rien, mais on sait jamais. Tente toujours avec les drivers fournis par Oracle, mais je doute que ça aille mieux
Marsh Posté le 27-08-2008 à 17:25:43
Avec SQL Plus, oui j'utilise le même TNS
Je viens de mettre l'accès total, et toujours la même erreur
Le serveur Oracle est sous Windows Server 2003...
Là je suis perdu, je ne pige plus rien ^^'
Sinon tnsnames.ora et listener.ora sevent à quoi exactement sur client/serveur ?
Je sais que le tns sert à gérer les connections mais j'aurai aimer avoir de détails stp.
Marsh Posté le 27-08-2008 à 17:31:00
aucune idée. chuis pas dba. y'a juste que quand t'y a pas accès, ça marche pas
en gros, tnsnames, c'est le fichier qui indique où se trouvent les bases de données sur le réseau, et le listner, aucune idée, je l'ai jamais édité.
tu peux poster des screens des propriété du partenaria que t'as fait ? parceque là sans plus de détails, à mon avis t'auras jamais de réponse
Marsh Posté le 27-08-2008 à 18:14:27
T'es pas dba ?! J'aurai mis ma main à couper que oui !! Je l'aurai bien perdu lol
En tout cas merci pour les précisions, quand à moi je sais que le listener contient le SID des différentes bases de données, ce SID qui nous permet de nous y connecter aux bases de données via le client.
Je posterai des screens plus tard en dernier recour, là je vais TOUT refaire, réinstallation du client etc et je ferai un ti bilan demain
Merci à tous
Marsh Posté le 27-08-2008 à 18:20:53
GeGe585 a écrit : Avec SQL Plus, oui j'utilise le même TNS |
alors :
- le tnsnames.ora contient l'IP du serveur et le port utilisé, ainsi que le SID de la base sur lequel le client doit se connecter. autant te dire que si ce fichier est mal configuré, ce n'est même pas la peine de continuer
- le listener.ora, situé uniquement sur le serveur, contient le port d'écoute, l'IP du serveur, le port utilisé pour l'écoute et le protocole utilisé.
1ere vérif à effectuer : s'assurer que les infos concordent entre ces 2 fichiers
Marsh Posté le 28-08-2008 à 18:32:50
Bon ça marche !!
Le problème résidait dans le tnsname...
Sachant que le serveur est sous oracle 9I et que par défault ça gère le service_name, lorsque que j'ai crée mon profil sur oracle client j'ai utiliser le SERVICE_NAME pour faire la relation avec la BBD oracle mais en fait en y regardant bien dans le listenr du serveur il ont utiliser le SID.
J'ai donc recréer un profil en prenant le soin de faire la relation avec le SID.
Déja ça c'est un premier point.
L'autre soucis était que sous SQL Server dans la chaîne du founisseur dans les propriété du serveur lié, il faut y mettre le nom du profil client qui se connecte à la base Oracle ( je mettais rien... d'où l'erreur un peu plus haut )
Troisièmement dans le listener j'ai rajouter une ligne avec l'adresse ip du serveur et non le localhost.
Et enfin j'ai modifié la base de registre pour le MDAC (qui gère les connection de MS SQL vers oracle):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
Qui était comme ça par défault
"OracleXaLib"="oraclient8.dll"
"OracleSqlLib"="orasql8.dll"
"OracleOciLib"="oci.dll"
J'ai du remplacer "oraclient8.dll" par "oraclient10.dll" etc.. car j'utilise oracleclient 10.2
Mais entre tout ça j'ai n'ai fait aucun tests ^^'
Voilà ces soucis m'ont donnés une bonne expérience quand même, le plaisir d'être sur avec une communauté qui aide et tout c'est sympa ^^
Merci encore d'avoir pris la peine de vous penchez sur le problème.
Marsh Posté le 29-08-2008 à 17:52:27
Bien moi je suis un débutant en oracle mais pas en Base de Données. Je veux utiliser l'Oracle 9i. J'ai le CD et je voudrais l'installer et demander votre aide en cas de difficulté. Ma préoccupation est la suivante:j'ai trois dossiers et je sais pas lequel choisir:ClientOracle9i,Oracle9i,Oracle 10G XE.
Voilà indiquer moi ce que je dois faire? Merci
Marsh Posté le 29-08-2008 à 18:55:33
1/ Tout dépend de ton utilisation
2/ Tout dépend aussi de ta licence
Client : Tu as déjà un serveur installé, et ça ne va donc installer que le client pour s'y connecter. Ceci ne nécessite pas de licence particulière*
Oracle 9i : Il s'agit de la version "lourde" d'Oracle. Par contre c'est une ancienne version. Si tu as la licence, alors c'est lui qu'il faut installer, sinon, va sur le site d'Oracle télécharger la version 10gR3 ou une 11g*.
Oracle 10g XE : Il s'agit de la version "light" gratuite, comme SQL Server Express. C'est la dernière en date si je ne m'abuse. Tu peux l'utiliser sans problème et librement, les restrictions ont peu de chances de te concerner même si tu te lances dans des devs assez lourds.
* : Tous les produits d'Oracle (sans AUCUNE exception) sont librement téléchargeables sur le site d'Oracle. T'as juste à créer un compte et dire qui tu es, et ce que tu comptes en faire. Ils restent cependant soumis à licence payante (sauf les XE) pour une utilisation de production. Mais pour un environnement de test, dev ou formation (autonome ou non) ils sont gratuits. Donc autant profiter des dernières versions.
A noter toutefois deux restrictions importantes qui s'appliquent quelle que soit la version que tu utilises : t'as pas le droit de publier le moindre benchmark comparatif sans autorisation et validation de l'éditeur. T'as pas le droit de t'en servir pour dirriger des missiles sur le Pentagone ou armement nucléaire en dehors du territoire américain (écrit en toute lettres dans la CGU )
Marsh Posté le 03-03-2006 à 21:55:19
Bonjour,
J'ai une base au format ORACLE (un entrepôt de données).
J'aimerais utiliser les outils d'analyse de SQL SERVER 2005 (analysis service et report service) qui sont plus simples à utilisée que ceux d'Oracle (si il y en a).
Tout d'abord est-ce possible ?
J'ai un PC avec ORacle 9i et SQL SERVER 2005 d'installer.
Le service SQLSERVER est démmaré, et j'ai bien configuré la couche réseau d'ORACLE pour la communication lient-serveur.
Merci de m'aider, à moins que ORACLE9i me permet de faire de l'analyse OLAP et du reporting ?
Merci beaucoup