Transfert de données DB2/400 vers Oracle

Transfert de données DB2/400 vers Oracle - SQL/NoSQL - Programmation

Marsh Posté le 02-11-2010 à 15:03:24    

Bonjour,
 
Je cherche à transférer le contenu d'une table DB2/400 vers Oracle 11g.
J'ai essayé de faire ça en utilisant le driver ODBC (iSeries Access ODBC Driver) et en déclarant la base AS400 dans Oracle via ce driver et le tnsnames.ora :
 
AS400  =
  (DESCRIPTION=
    (ADDRESS = (PROTOCOL = tcp)(HOST = AS400server)(PORT = 1521))
    (CONNECT_DATA = (SID=as400))
    (HS=OK)
  )  
 
ça marche nickel pour toutes les tables sauf celles contenant des champs binaires.
Pour tous les enregistrements dont la taille du champ binaire est supérieur à 32ko, il est tronqué à 32ko à l'insert.
 
Et ce pour les 2 requêtes suivantes :
 

Code :
  1. insert into <owner>.<table> select * from <librairie>.<table>@as400;


 

Code :
  1. declare cursor c1 is
  2.     select * from <librairie>.<table>@as400;
  3. begin
  4.     for c1_rec in c1 loop
  5.         insert into <owner>.<table> values c1_rec;
  6.     end loop;
  7.     commit;
  8. end;
  9. /


 
Avez-vous une idée pour résoudre ce souci ?
Merci d'avance pour votre aide
 
 
 

Reply

Marsh Posté le 02-11-2010 à 15:03:24   

Reply

Marsh Posté le 02-11-2010 à 15:30:31    

La plupart des drivers ODBC sont par défaut limités à 32k pour du BLOB.  
 
Regarde du côté du paramètre SendStreamAsBlob pour le driver ODBC et les fonctions de traitement des BLOB côté Oracle.
 
Et sinon pourquoi faire ça a la main et ne pas utiliser le Migration Workbench d'Oracle ?  
http://wiki.oracle.com/page/Oracle+Migration+Workbench


---------------
Don't fuck me, I'm anonymous.
Reply

Marsh Posté le 02-11-2010 à 15:33:43    

Merci pour ta réponse.
 
On ne peut pas utiliser Migration Workbench car notre version AS400 n'est pas copatible :(

Reply

Marsh Posté le 02-11-2010 à 15:37:45    

Euh, c'est quelle version parce que de mémoire, ça supporte jusqu'à la V4R3 (qui date des années 2000 voire moins)


---------------
Don't fuck me, I'm anonymous.
Reply

Marsh Posté le 02-11-2010 à 15:43:18    

Dans la configuration de la datasource ODBC, il y a bien en effet 2 options :
 
- Large objects (LOB) threshold (KB) (Default : 32)
- Use blocking with a fetch of 1 row (Default : active)
           - Record blocking size (KB) (Default : 32)
 
Je vais tester ça dès que possible et mettrais à jour le sujet à RESOLU si c'est le cas.
Merci encore

Reply

Marsh Posté le 02-11-2010 à 15:51:31    

E-Nyar a écrit :

Euh, c'est quelle version parce que de mémoire, ça supporte jusqu'à la V4R3 (qui date des années 2000 voire moins)


Nous sommes sur une V5R3 et OMWB s'est arrêté à la V4R5.
Et pour l'instant, leur nouvel outil qui remplace OMWB ne supporte pas DB2 400

Reply

Marsh Posté le 02-11-2010 à 15:53:16    

Sinon, si ça ne marche pas dans ce sens, peut-être essayer de prendre le problème de l'autre côté..

 

Plusieurs solutions pour les connections DB2/400 <--> Oracle:

 

Côté Oracle :
1) Oracle Transparent Gateway for DB2/400
--tourne sur les iSeries
--gère les accès  Oracle --> DB2/400
--TCP/IP

 

2) Oracle Transparent Gateway for DRDA
--tourne sur un hôte (Windows, UNIX, Linux, ect)
--gères les accès Oracle --> DB2/400
--utilises le SNA ou le TCP/IP

 

3) Oracle Access Manager for AS/400
--tourne sur les iSeries
--Gère les accès DB2/400 --> Oracle
--Utilises le TCP/IP

 

4) Oracle Generic Connectivity
--tourne côté Oracle
--Gère les accès Oracle --> DB2/400
--utilises les drivers ODBC ou OLEDB pour accéder à DB2/400

 

Côté IBM :

 

1) DB2 Information Integrator (ex DataJoiner)
--tourne sur un système hôte (non-iSeries)
--gère les accès  DB2/400 --> Oracle
--TCP/IP


Message édité par E-Nyar le 02-11-2010 à 15:58:38

---------------
Don't fuck me, I'm anonymous.
Reply

Marsh Posté le 03-11-2010 à 07:38:19    

Il ne me reste plus qu'à étudier tout ça
 
Merci pour ton aide

Reply

Marsh Posté le 03-11-2010 à 15:01:48    

De rien et j'espère que tu vas t'en sortir :jap:


---------------
Don't fuck me, I'm anonymous.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed