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

Sql Developer Oracle Discussion :

Problème de performance d'execution d'un package


Sujet :

Sql Developer Oracle

  1. #1
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Points : 641
    Points
    641
    Par défaut Problème de performance d'execution d'un package
    Bonjour,

    j'ai un gros problème sur l'environnement de production que je n'arrive pas à reproduire sur l'environnement de développement, je soupçonne donc un conflit avec d'autres transactions sur la base de données.

    Le traitement qui est lancé à travers un script unix en batch (avec la commande at ...) est fortement ralenti lors de la lecture d'un curseur de ce style :

    CURSOR CUR_cre_fact (
    p_aff_deb AFFILIES.AFF_NAFF%TYPE,
    p_aff_fin AFFILIES.AFF_NAFF%TYPE,
    p_ANNEE AFF_COMPTA_LPP.COA_ANNE%TYPE,
    p_PEIO AFF_COMPTA_LPP.COA_PEIO%TYPE,
    p_debut_fact VARCHAR2,
    p_type_fac IP_METIER_ID_NUMERO_METIER.TYPE_FACTURATION%TYPE)
    IS
    SELECT a.uuid_consolide,
    a.metier_id,
    NVL (b.montant_annuel, 0) montant_annuel,
    c.type_facturation,
    d.aff_sequ,
    d.aff_no,
    d.aff_dlrd
    FROM table_a a
    JOIN table_b b
    ON b.parent_send_mont_fact_uuid = a.uuid
    JOIN table_c c
    ON c.metier_id = a.metier_id
    JOIN table_d d.aff_no = c.numero_metier
    WHERE a.TRAITE IS NULL
    AND d.aff_no BETWEEN p_aff_deb AND p_aff_fin
    AND a.module_name = 'IIII'
    AND a.type_objet_facturable = 'OBJET_FACT_UB_FACTURATION'
    AND b.debut_facturation LIKE p_debut_fact
    AND c.type_Facturation = p_type_Fac
    GROUP BY a.uuid_consolide,
    a.metier_id,
    b.montant_annuel,
    c.type_facturation,
    d.aff_sequ,
    d.aff_no,
    d.aff_dlrd
    ORDER BY d.aff_no
    dans une boucle :
    FOR row_cre_fact IN cur_cre_fact (p_aff_deb,
    p_aff_fin,
    p_annee,
    p_peio,
    v_debut_fact,
    p_type_Fac)
    LOOP
    --traitement d'audit
    Le traitement est pratiquement stoppé en début de lecture, j'ai mis un traitement d'audit juste dans le premier passage (lecture du premier record) qui ne se fait pas.

    Ce qui est très surprenant, c'est que lorsque :
    -> je lance ce batch sur l'environnement développement, le résultat est inférieur à la minute.
    -> j'exécute la requête sql du curseur dans TOAD, le résultat est aussi très rapide sur l'environnement de production, je ne vois aucun blocage.
    -> je lance l'exécution du package dans TOAD, le résultat est aussi inférieur à la minute sur l'environnement de production !


    La méthode pour se connecter à la base oracle depuis le script unix :

    sqlplus -S /nolog << _EOF
    connect $LOGNAME/$HOT_PH_PASS@$ORACLE_SID;

    DECLARE
    P_AFF_NAFF_DEB NUMBER;
    P_AFF_NAFF_FIN NUMBER;
    P_COA_ANNE NUMBER;
    P_COA_PEIO NUMBER;
    P_DATE_FAC DATE;
    P_DATE_ECH DATE;
    P_TYPE_FAC VARCHAR2(255);
    P_USE_VISA VARCHAR2(200);
    P_PRINTER VARCHAR2(30);

    BEGIN
    P_AFF_NAFF_DEB := TO_NUMBER($P_AFF_NAFF_DEB);
    P_AFF_NAFF_FIN := TO_NUMBER($P_AFF_NAFF_FIN);
    P_COA_ANNE := TO_NUMBER($P_COA_ANNE);
    DB.PCK_MYPACKAGE.P_MA_PROCEDURE ( P_AFF_NAFF_DEB, P_AFF_NAFF_FIN, P_COA_ANNE,..);

    END;
    /
    _EOF
    Il m'est impossible de monitorer en production pour l'instant, je ne suis pas le dba (qui est quelque peu occupé en ce moment).
    Donc merci d'avance si vous avez quelques pistes pour peut-être configurer le même mode d'exécution entre le batch et le TOAD (transaction, autres?), voire si vous avez d'autres idées.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 159
    Points : 1 949
    Points
    1 949
    Par défaut
    Bonjour,

    AWR est-il installé en Prod?
    Il faut a minima capturer le plan d'exécution de la requête pendant que le traitement tourne pour voir s'il est correct.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Comment est réalisé l'audit ? Insertion dans une table de log via transaction autonome ou affichage via dbms_output ?

    Y a-t-il des locks quand le traitement est lent ?
    https://asktom.oracle.com/ords/askto...ons-on-locking

    Qu'est ce que ça donne de se connecter à sqlplus depuis le serveur où est placé le script, puis d'exécuter le package ?

  4. #4
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Points : 641
    Points
    641
    Par défaut
    Bonjour,

    merci pour vos réponses, je vais encore vérifier le plan d'exécution mais ça n'explique tout de même pas la différence de performance selon les modes d'exécution.

    Comme je n'ai pas accès à la prod, ça m'est difficile de tester, je vais quand même trouver une solution avec notre DBA pour prendre un moment pour contrôler le déroulement.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 805
    Points : 1 536
    Points
    1 536
    Par défaut
    Bonsoir,

    Si je résume :
    * le traitement est rapide en interactif
    *** sur la DEV
    *** sur la PROD
    * le traitement est lent lors de sa planification

    N'y aurait-il pas conflit avec la fenêtre de maintenance ?

Discussions similaires

  1. Execution d'un package
    Par dinver78 dans le forum SQL
    Réponses: 3
    Dernier message: 02/10/2007, 16h03
  2. Réponses: 2
    Dernier message: 20/04/2007, 10h24
  3. [SQL2k] Execution d'un package DTS via un job
    Par zebulon90 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/06/2006, 15h00
  4. [SQL Server 2000][DTS][NET 1.1] Exécution d'un package DTS
    Par aldbaran dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/02/2006, 11h26

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