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

Requêtes PostgreSQL Discussion :

PL SQL oracle vers postgres


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut PL SQL oracle vers postgres
    Bonjour,

    J'ai une application en Oracle qui utilise les dbms_job, pour contrôler le lancement de procédure stockées longues en traitement donc temps. le dbms_job, contrôle les processus lancé grâce à une table de gestion des jobs lancés. en fait c'est la même notion que les forks en C.
    Je sais qu'avec Postgres c'est impossible mais existe t'il une solution (extension) qui s'en approcherait ?

    l'application est en PHP, l'IHM interroge le sgbd régulièrement en Ajax pour savoir si tout est fini. m'a question est de savoir si quand on lance une pracédure stockée en postgres, il y a moyen de récupérer son état ?

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 756
    Points : 52 534
    Points
    52 534
    Billets dans le blog
    5
    Par défaut
    Non, PostGreSQL ne dispose pas de moyen pour regarder les requêtes ou procédures en cours d'exécution.
    Cela fait partie des nombreuses limitations du produit.

    A =
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut Bonjour et merci
    Bonjour,

    Je crois qu'on ne peux faire plus clair.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    regardez du côté de : pg_stat_activity

    On peut uy voir les requêtes en cours.

    http://www.postgresql.org/docs/9.2/s...ing-stats.html

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    l'application est en PHP, l'IHM interroge le sgbd régulièrement en Ajax pour savoir si tout est fini. m'a question est de savoir si quand on lance une pracédure stockée en postgres, il y a moyen de récupérer son état ?
    La question est curieuse d'un point de vue architecture. Quel est l'appelant de cette procédure stockée? L'appelant d'une fonction sait très bien quand elle a fini, il peut stocker cette info dans une table ou faire un NOTIFY.

  6. #6
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut réponse
    Bonjour,

    Pour être plus précis, c'est dans le cadre d'une application qui lance des traitements sur des fichiers comportant plusieurs milliers de ligne. Pour chq ligne (32 champs) on a des consolidation, mais c'est pas le sujet, c'est le contexte. En effet, les traitements peuvent facilement passer la minute.
    Pour savoir, ou en est le sgbd, j'utilise lo notion de dbms_job, qui permet de lancer une ^rocédure stockée et renvoie le pid de cette dernière. il suffit ensuite d'interroger en Ajax la dite base pour connaître l'état du pid. En effet Oracle utilise une table de gestion avec même son état (failure, broken ...)

    C'est assez utile car quand je lance le job en php la page se détache du script.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par nathieb Voir le message
    C'est assez utile car quand je lance le job en php la page se détache du script.
    C'est cette chose-là qui n'est pas possible avec postgres.

    Au lieu de lancer une tâche et de se déconnecter, il faudrait confier la tâche à un autre process qui, lui, restera connecté jusqu'à la fin de la tâche.

  8. #8
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut extension
    Bonjour,

    effectivement, je suis en train de regarder du côté des extensions C, (compliqué ...) ou d'un programme Java multitrhread qui ferait le travail. c'est quand même bien dommage ...
    d''en passer par un programme tier.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    La version 9.3 actuellement en beta a une fonctionnalité dite Custom background workers qui permettra certainement à terme d'avoir de l'exécution de code SQL en tâche de fond comme le DBMS_SCHEDULER (anciennement DBMS_JOB) d'Oracle.

    Mais pour le moment on n'y est pas encore, il faut faire son propre processus. Pas la peine de faire des choses compliquées avec postgres, il faut que ce processus garde la connexion, c'est tout.

    Par exemple j'ai un process de quelques lignes en batch php qui fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pg_query($cnx, "LISTEN event_name");
    while (!$end) {
      $a=pg_get_notify($cnx);
      if ($a===false) {  // rien a faire
        usleep(200*1000);
        continue;
      }
      do_job();
    }

Discussions similaires

  1. Requête oracle vers postgres
    Par mollux dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 15/03/2012, 17h51
  2. Conversion requête SQL:Oracle vers MySQL
    Par lasmarco dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/12/2011, 11h46
  3. convertir schema sql oracle vers modèle graphique
    Par mokhtarius dans le forum Outils
    Réponses: 1
    Dernier message: 29/10/2010, 16h56
  4. Problème de traduction de SQL Oracle vers PostgreSQL
    Par Montaigne dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/04/2006, 11h15
  5. Tranfert de données d'une base Oracle vers PostGre
    Par Elois dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/01/2004, 18h08

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