Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/10/2007, 17h37   #1
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : septembre 2007
Messages : 79
Points : 36
Points : 36
Par défaut Faire dialoguer une base Oracle et une base PostGres

Bonjour,

En l'absence d'ETL, j'ai besoin de faire communiquer ma base ORACLE 10g (pour un projet décisionnel) avec une base PostGres 8 (base métier client) afin d'alimenter ma base ORACLE avec les tables de ma base PostGres.
Je souhaite faire cela le plus simplement possible (enfin si c'est possible.... )

Les deux bases sont sur deux serveurs différents.

N'ayant jamais installé de base, que doit-on faire ? Quel type de "lien" installer pour que cela fonctionne ?

Je ne sais pas si ma demande est très claire mais n'hésitez pas à me poser des questions, j'essaierai d'y répondre au mieux de mes connaissances

Merci de votre aide à tous
Darcynette
Darcynette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 19h35   #2
Membre confirmé
 
Inscription : juillet 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 357
Points : 226
Points : 226
si ta base oracle est sur un serveur windows et que il existe un driver odbc pour postgresql alors tu peux y arriver assez facielement avec un dblink utilisant le service hsodbc.

Regarde si les deux condition sont bonnes et je peux t expliquer plus en detail
ZashOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 13h29   #3
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : septembre 2007
Messages : 79
Points : 36
Points : 36
Merci pour ta réponse !
La base Oracle sera sur un serveur Windows 2003, ca c'est sur.
Pour le reste des informations, dès que j'ai tout, je ne manquerai de venir poster les infos pour une aide bienvenue !
Darcynette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 14h01   #4
Membre confirmé
 
Inscription : juillet 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 357
Points : 226
Points : 226
tu ne devrai pouvoir y arriver , regarde ici pour le lien odbc

http://www.developer.com/open/article.php/631251

et ci dessous un copier coller d une doc pour faire dialoguer oracle avec mysql , adapte un peu pour postgre


1) installe sur le serveur le driver odbc mysql 3.51

2) cree un lien odbc vers ta base mysql

Datasourcename : MYDATASOURCENAME
server : ip mysql
user : MyUser
password : MyPass

3)

Rajoute la section suivante dans ton listener.ora et redemarre le listener via les services windows ou en ligne de comande (pas net manager!!)

Code :
1
2
3
4
5
6
7
8
 
 
(SID_DESC =
      (PROGRAM              = hsodbc)
      (ORACLE_HOME          = C:\oracle\10.2.0\db)
      (SID_NAME             = myodbc3)
      (ENVS=LD_LIBRARY_PATH = C:\oracle\10.2.0\db\lib;c:\windows\system32;c:\windows)
     )
4) rajoute la section suivante dans ton tnsnames.ora

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
HSODBC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = localhost)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SID= myodbc3)
    )
    (HS=OK)
  )
Maintenant fait attention a ne plus demarrer , "assistant configuration oracle net" ou "net manager" car ca te detruira ta config car il ne gere pas ces parametrages speciaux (suprime le lien du menu demarer si tu veux)

5) tu peux faire un 'tnsping hsodbc' et voir si tout est OK

6)Dans le repertoire 'C:\oracle\10.2.0\db\hs\admin ' cree un fichier 'initmyodbc3.ora ' , et edite le pour avoir la config suivante.


Code :
1
2
3
4
5
6
7
8
9
10
11
 
# HS init parameters 
# 
HS_FDS_CONNECT_INFO = MYDATASOURCENAME
HS_FDS_TRACE_LEVEL = off
HS_FDS_SHAREABLE_NAME = C:\WINDOWS\system32\myodbc3.dll
# 
# ODBC specific environment variables 
# 
SET ODBCINI=c:\Window\odbc.ini 
#
7) En sys cree un dblink , accessible par tous via la commande



Code :
1
2
 
CREATE PUBLIC DATABASE LINK Mylink CONNECT TO "Myuser" IDENTIFIED BY "MyPass" USING 'HSODBC';
8)

Voila , maintenant avec n importe quek user, tu peux taper

Code :

SELECT * FROM "MyTable"@mylink WHERE "Id" LIKE "%xx%";

9) 2 3 trucs a savoir avec mysql :

-Les requetes de types select a from x@Mylink where a in (select a from Y@Mylink)) ne fonctionneront pas.

-N'utilise plus Les assistant qui touche au tnsnames.ora et listenet.ora

-Si tu utilise des count(*) ou autre fonction du style , tu doit les entourer de la fonction to_number() , sinon les resultats sont incorrect (select to_number(count(*)) from MyTable@MyLink
ZashOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 14h52   #5
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : septembre 2007
Messages : 79
Points : 36
Points : 36
Merci pour les tuyaux,
Je m'attaque au montage la semaine prochaine et raconterai si tout s'est bien passé
Darcynette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 06h40   #6
Invité de passage
 
Inscription : novembre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 5
Points : 1
Points : 1
Par défaut Oracle et procédures stockées postgres

Bonjour,

J'utilise aussi une base oracle, et je dois également récupérer des informations à partir d'une base postgres.

Grâce à vos conseils, et à d'autres que j'ai recueillis sur le net, j'ai réussi à communiquer avec la base postgres, en passant par hsodbc.

Donc, actuellement, je peux faire :
Code :
SELECT * FROM MyTable@mylink;

Seulement, ma base postgres utilise des procédures stockées, qui effectuent ensuite de nombreuses manipulations.
Sous postgres, on peut appeler la procédure de différentes façons :
Code :
1
2
SELECT * FROM MaProcedure(12345);
SELECT MaProcedure(12345) FROM MyDummyTable;
(MyDummyTable : table contenant un seul enregistrement).


J'ai donc essayé :
Code :
SELECT MaProcedure(12345) FROM MyDummyTable@mylink;
Mais j'ai obtenu un erreur : ORA-00904: invalid column name


J'ai cru entendre que hsODBC ne gérait pas les procédures stockées.
Est-ce le cas?
Sauriez-vous de quelle manière, ou par quel *contournement* je pourrais exécuter des procédures postgres à à partir d'oracle?
mrclay est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web