|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2007 Messages : 12 ![]() |
Bonjour à tous,
j'utilise les fonctions ODBC_* de php pour attaquer ma base DB2/400. J'ai installé le pilote ODBC for Linux de IBM (.rpm converti en .deb par le package Alien). Je suis sur une plateforme, vous l'aurez deviné, Debian Etch. Donc, je requête chaque table de ma bibliothèque DB2/400, insère le résultat dans un fichier temporaire, type csv, puis charge le fichier dans mon serveur MySQL. Je vous donne la version très simplifiée de mon code : $dsn = "DRIVER=iSeries Access ODBC Driver;SYSTEM=$isdb_system;DBQ=$isdb_database"; $db = odbc_connect($dsn, $isdb_authuser, $isdb_authpwd, SQL_CUR_USE_ODBC); $cur=odbc_exec($db,"SELECT * FROM $DB2Library.$tableEnCours"); while(odbc_fetch_row($cur)) { for ($j=1; $j<=odbc_num_fields($cur); $j++) { $values.=odbc_result($cur,$j); } } Mon problème est que pour une partie des tables (42 sur 370), il me manque des enregistrements... le 'COUNT(*)' sur la biblio DB2/400 est alors différent du 'COUNT(*)' de la base MySQL, après l'insertion des datas. Le volume manquant semble ne concerner que les enregistrements les plus récents. Plus la table est épaisse (j'ai des tables à 6millions+ enr), plus la perte est importante. Les petites tables (<100000enr) ne sont pas affectés par ce phénomène. Mais je peux avoir deux tables disons de 500.000enr, l'une OK l'autre à qui il manque 20% des datas. Deux possibilités, pour moi : - Un verrouillage d’une partie des enregistrements des tables par les processus Elvis (lourd à résoudre) ; - Un bug dans la méthode d’accès à l’AS/400 (je me concentre là-dessus aujourd’hui). Qu'en pensez-vous ? Si j'arrive à passer ce bug là, j'ai terminé mon script et j'aurais une base mirroir beaucoup plus facile à gérer pour nos dev analytiques. |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : février 2004 Messages : 204 ![]() |
si verrouillage il y a à un moment donné, loggue le job qui se charge de requêter la base as400 pour en être sur...
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2007 Messages : 12 ![]() |
Logguer le job côté AS/400 tu veux dire ?
Je suis très limité dans mes connaissances sur ce système, je ne serais où chercher.... Pourrais-tu me donner une approche succinte pour tracer le comportement côté AS/400 ? Je me demandais si le problème ne pourrait venir du driver ODBC sinon... Connais-tu OLEDB IBMDA400 ? Comment l'installer sur mon GNU/Linux ? @++ |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : novembre 2007 Messages : 12 ![]() |
Il n'y a, a priori, pas de pilotes OLEDB IBMDA400 pour GNU/Linux, cette technologie Microsoft n'existerait que sur plateforme Windows.
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : février 2004 Messages : 204 ![]() |
lorsqu'un programme micro/serveur discute avec l'as400, il y a un job côté 400 qui correspond à la connexion du programme, donc il est possible, une fois l'avoir repéré, de savoir si un verrouillage a lieu ou non, ou tout autre problème lié à ton job...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com