IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

AS/400 Discussion :

Synchronisation DB/400 <-> MySQL


Sujet :

AS/400

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut Synchronisation DB/400 <-> MySQL
    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.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Par défaut
    si verrouillage il y a à un moment donné, loggue le job qui se charge de requêter la base as400 pour en être sur...

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    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 ?

    @++

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    Il n'y a, a priori, pas de pilotes OLEDB IBMDA400 pour GNU/Linux, cette technologie Microsoft n'existerait que sur plateforme Windows.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 204
    Par défaut
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Synchronisation de base de données MySQL en PHP
    Par takepaf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/07/2007, 11h23
  2. Synchronisation partielle de deux BDD mysql
    Par sheepk dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/06/2007, 10h16
  3. Synchronisation biedirectionnel de 2 bases mysql
    Par epeichette dans le forum Installation
    Réponses: 2
    Dernier message: 13/06/2007, 17h45
  4. [ MySQL] Synchronisation de ++ DB
    Par bilbrux dans le forum Administration
    Réponses: 1
    Dernier message: 15/11/2005, 10h54
  5. Choix entre DB2 As/400 et Sql Server ou Mysql
    Par lesaisidufond dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 30/08/2005, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo