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 Oracle Discussion :

Différence de performance Oracle 10 - Oracle 11


Sujet :

SQL Oracle

  1. #21
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    La trace sur le serveur locale montre qu’il réponde assez rapidement (501 enregistrements en moins d'une séconde):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FETCH #1:c=15625,e=302242,p=80,cr=169,cu=0,mis=0,r=501,dep=0,og=3,tim=18446744070666360426

    Les deux traces montre la trame répétés N (nombre des enregistrements ramenées /arraysize, 15 dans les deux cases) fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WAIT #3: nam='SQL*Net message from client' ela= 14265 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503366283
    WAIT #3: nam='SQL*Net message to client' ela= 10 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503366494
    WAIT #3: nam='SQL*Net message to dblink' ela= 4 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503366550
    WAIT #3: nam='SQL*Net message from dblink' ela= 5472 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503372054
    FETCH #3:c=0,e=5721,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,plh=0,tim=114503372161
    On peut facilement constater que les FETCH prennent plus de temps sur le 11g que sur la 10g (e sur la ligne FETCH).
    10g
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    WAIT #2: nam='SQL*Net message from client' ela= 7079 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935627151
    WAIT #2: nam='SQL*Net message to client' ela= 2 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935627282
    WAIT #2: nam='SQL*Net message to dblink' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935627318
    WAIT #2: nam='SQL*Net message from dblink' ela= 419 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935627758
    FETCH #2:c=0,e=573,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,tim=5935627823
    WAIT #2: nam='SQL*Net message from client' ela= 5953 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935633827
    WAIT #2: nam='SQL*Net message to client' ela= 1 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935633898
    WAIT #2: nam='SQL*Net message to dblink' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935633933
    WAIT #2: nam='SQL*Net message from dblink' ela= 351 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935634308
    FETCH #2:c=0,e=473,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,tim=5935634356
    WAIT #2: nam='SQL*Net message from client' ela= 5874 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935640269
    WAIT #2: nam='SQL*Net message to client' ela= 2 driver id=1111838976 #bytes=1 p3=0 obj#=10209 tim=5935640364
    WAIT #2: nam='SQL*Net message to dblink' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935640393
    WAIT #2: nam='SQL*Net message from dblink' ela= 685 driver id=1413697536 #bytes=1 p3=0 obj#=10209 tim=5935641099
    FETCH #2:c=0,e=1730,p=0,cr=0,cu=0,mis=0,r=7,dep=0,og=1,tim=5935642075
    11g
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    WAIT #3: nam='SQL*Net message from client' ela= 13823 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503322184
    WAIT #3: nam='SQL*Net message to client' ela= 7 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503322349
    WAIT #3: nam='SQL*Net message to dblink' ela= 4 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503322427
    WAIT #3: nam='SQL*Net message from dblink' ela= 12762 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503335216
    FETCH #3:c=0,e=13065,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,plh=0,tim=114503335374
    WAIT #3: nam='SQL*Net message from client' ela= 12950 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503348407
    WAIT #3: nam='SQL*Net message to client' ela= 9 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503348635
    WAIT #3: nam='SQL*Net message to dblink' ela= 5 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503348692
    WAIT #3: nam='SQL*Net message from dblink' ela= 3066 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503351787
    FETCH #3:c=0,e=3366,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,plh=0,tim=114503351946
    WAIT #3: nam='SQL*Net message from client' ela= 14265 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503366283
    WAIT #3: nam='SQL*Net message to client' ela= 10 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503366494
    WAIT #3: nam='SQL*Net message to dblink' ela= 4 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503366550
    WAIT #3: nam='SQL*Net message from dblink' ela= 5472 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503372054
    FETCH #3:c=0,e=5721,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,plh=0,tim=114503372161
    WAIT #3: nam='SQL*Net message from client' ela= 16116 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503388349
    WAIT #3: nam='SQL*Net message to client' ela= 9 driver id=1111838976 #bytes=1 p3=0 obj#=-1 tim=114503388589
    WAIT #3: nam='SQL*Net message to dblink' ela= 5 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503388646
    WAIT #3: nam='SQL*Net message from dblink' ela= 1530 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=114503390206
    FETCH #3:c=0,e=1758,p=0,cr=0,cu=0,mis=0,r=15,dep=0,og=1,plh=0,tim=114503390291
    Et ça c’est du toujours à l’événement SQL*Net message from dblink (ela sur la ligne WAIT) qui est plus long sur le 11g.
    Pour moi c’est de ce coté qu’il faut chercher, paramétrage SQL NET et réseau.

  2. #22
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    Bonjour

    les fichiers sqlnet.ora des deux serveurs sont identiques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # sqlnet.ora Network Configuration File: C:\OraHome_1\network\admin\sqlnet.ora
    # Generated by Oracle configuration tools.
     
    # This file is actually generated by netca. But if customers choose to 
    # install "Software Only", this file wont exist and without the native 
    # authentication, they will not be able to connect to the database on NT.
     
    SQLNET.AUTHENTICATION_SERVICES= (NTS)
     
    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    Que puis je vérifier d'autre?

  3. #23
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Quelle est la différence entre 'MERCURE.GT' et 'MERCURE.REGRESS.RDBMS.DEV.US.ORACLE.COM'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    21 - SELECT "ANMOIS","NOBUL","SOCIETE","INDIVIDU","ETAB","SECTION" FROM "PANDORE"."INFSAL" "INFSAL" WHERE                                                                                                                                               
            "NOBUL"=1 (accessing 'MERCURE.GT' )
     
    10g
    19 - SELECT "ANMOIS","NOBUL","SOCIETE","INDIVIDU","ETAB","SECTION" FROM "PANDORE"."INFSAL"                                                                                                                                                              
            "INFSAL" WHERE "NOBUL"=1 (accessing 'MERCURE.REGRESS.RDBMS.DEV.US.ORACLE.COM' )
    J'ai oublié aussi de vous dire de tester votre requête avec le hint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     /*+ driving_site(infsal) */
    et vice-versa avec une table locale(/*+ driving_site(donnee_tx) */ dans le cas ou la performance ne s'améliore pas.
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  4. #24
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    L'un est le nom du DBlink sur le serveur 10G

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'MERCURE.REGRESS.RDBMS.DEV.US.ORACLE.COM

    L'autre sur le serveur 11G


  5. #25
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Il y a la possibilité de tracer au niveau du SQL*NET

  6. #26
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    Alors j'ai testé la requete en ajoutant " /*+ driving_site(infsal) */"

    Et la réponse en 10 secondes !!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    SELECT
      /*+ driving_site(infsal) */
      VEHICULE.PARC,
      T_AFFECT4.CLIENT,
      T_AFFECT2.FILIALE,
      sum(DONNEE_TX.DISTANCE),
      DONNEE_TX.CONSO_TOT_AVG,
      sum(DONNEE_TX.CONSO_TOTAL),
      DONNEE_TX.DATEJ,
      to_char(DONNEE_TX.DATEJ,'WW'),
      case  INDIVIDU.NOM || 'toto'  when 'toto' then  TR_TRA_PERSON.NM_NAME else INDIVIDU.NOM || ' ' || INDIVIDU.PRENOM   end,
      ETABSECT.LIB,
      SOCIETE_PAND.LIB_SOC,
      DONNEE_TX.ID_CONDUCTEUR,
      DONNEE_TX.SPEED_AVG,
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,
      sum(DONNEE_TX.CONSO_IDLE),
      sum(DONNEE_TX.CONSO_COND),
      MARQUE.LIBELLE,
      CATVEHIC.LIBELLE,
      decode(INDIVIDU.SEXE,'F','Femme','Homme'),
      to_char(DONNEE_TX.DATEJ,'YYYYMM'),
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
    FROM
      VEHICULE,
      t_AFFECT4,
      t_AFFECT2,
      DONNEE_TX,
      TR_TRA_PERSON,
      INDIVIDU,
      ETABSECT,
      SOCIETE_PAND,
      MARQUE,
      CATVEHIC,
      VEHICULE_AFFECTATION,
      INFSAL
    WHERE
      ( VEHICULE_AFFECTATION.ID_VEHICULE=DONNEE_TX.PARCID and VEHICULE_AFFECTATION.DATE_DEBUT<=DONNEE_TX.DATEJ and VEHICULE_AFFECTATION.DATE_FIN>DONNEE_TX.DATEJ  )
      AND  ( VEHICULE_AFFECTATION.ID_CLIENT=T_AFFECT4.ID_AFFECT4  )
      AND  ( VEHICULE_AFFECTATION.ID_FILIALE=T_AFFECT2.ID_AFFECT2  )
      AND  ( DONNEE_TX.PARCID=VEHICULE.VEHICULE_ID  )
      AND  ( DONNEE_TX.ID_CONDUCTEUR=TR_TRA_PERSON.CNR_EXTCODE  )
      AND  ( VEHICULE.COD_CATEGORIE=CATVEHIC.COD_CATEGORIE  )
      AND  ( VEHICULE.MARQUE=MARQUE.COD_MARQUE  )
      AND  ( INFSAL.NOBUL(+)=1 and( DONNEE_TX.id_conducteur=to_char(INFSAL.individu(+)) and  to_number(to_char(DONNEE_TX.datej,'YYYYMM'))= case when to_char(sysdate,'DD')<='09' then to_number(to_char(add_months(to_date(INFSAL.anmois(+),'YYYYMM'),2),'YYYYMM'))  when   to_char(DONNEE_TX.datej,'YYYYMM')=to_char(sysdate,'YYYYMM') then  to_number(to_char(add_months(to_date(INFSAL.anmois(+),'YYYYMM'),1),'YYYYMM'))  else to_number(INFSAL.anmois(+)) end  )  )
      AND  ( to_char(INDIVIDU.INDIVIDU(+))=DONNEE_TX.ID_CONDUCTEUR  )
      AND  ( INFSAL.SOCIETE=ETABSECT.SOCIETE(+) AND INFSAL.ETAB=ETABSECT.ETAB(+) AND INFSAL.SECTION=ETABSECT.SECTION(+)  )
      AND  ( INFSAL.SOCIETE=SOCIETE_PAND.SOCIETE(+)  )
      AND  
      (
       (
       SOCIETE_PAND.LIB_SOC  =  'GT BRETAGNE'
        OR
        T_AFFECT2.FILIALE  =  'BRETAGNE'
       )
       AND
       DONNEE_TX.CONSO_TOT_AVG  >  0
       AND
       DONNEE_TX.IND_CONF  =  '0'
       AND
       to_char(DONNEE_TX.DATEJ,'YYYYMM')  =  '201209'
      )
    GROUP BY
      VEHICULE.PARC, 
      T_AFFECT4.CLIENT, 
      T_AFFECT2.FILIALE, 
      DONNEE_TX.CONSO_TOT_AVG, 
      DONNEE_TX.DATEJ, 
      to_char(DONNEE_TX.DATEJ,'WW'), 
      case  INDIVIDU.NOM || 'toto'  when 'toto' then  TR_TRA_PERSON.NM_NAME else INDIVIDU.NOM || ' ' || INDIVIDU.PRENOM   end, 
      ETABSECT.LIB, 
      SOCIETE_PAND.LIB_SOC, 
      DONNEE_TX.ID_CONDUCTEUR, 
      DONNEE_TX.SPEED_AVG, 
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end, 
      MARQUE.LIBELLE, 
      CATVEHIC.LIBELLE, 
      decode(INDIVIDU.SEXE,'F','Femme','Homme'), 
      to_char(DONNEE_TX.DATEJ,'YYYYMM'), 
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
    HAVING
      sum(DONNEE_TX.DISTANCE)  >  0;
    ?? comment faire pour que ce comportement soit celui par défaut?

    De plus je n'arrive plus a sortir le plan d'éxécution aves lse commandes suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER session SET statistics_level=ALL;
    Exécution de la requete
    SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
    J'obtiens le message d'erreur suivant;

    Error: cannot fetch for statement_id 'PLUS109281'.

  7. #27
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Il y a la possibilité de tracer au niveau du SQL*NET
    Voila un bou de la trace ou je retourve des informations sur le serveur distand....
    Mais bon il y avait une trentaine de fichier TRC.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    [20-NOV. -2012 11:07:06:127] nnftmlf_make_local_addrfile: construction of local names file failed
    [20-NOV. -2012 11:07:06:127] nnftmlf_make_system_addrfile: system names file is D:\app\administrateur\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
    [20-NOV. -2012 11:07:06:127] nttbnd2addr: using host IP address: 128.1.0.8
    [20-NOV. -2012 11:07:06:127] niotns: Not trying to enable dead connection detection.
    [20-NOV. -2012 11:07:06:127] niotns: Calling address: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=128.1.0.8)(PORT=1521))(CONNECT_DATA=(SID=PAND)(CID=(PROGRAM=d:\app\administrateur\product\11.2.0\dbhome_1\bin\ORACLE.EXE)(HOST=HESTIA)(USER=Administrateur))))
    [20-NOV. -2012 11:07:06:127] nttbnd2addr: using host IP address: 128.1.0.8
    [20-NOV. -2012 11:07:06:127] nscall: connecting...
    [20-NOV. -2012 11:07:06:127] nsc2addr: (DESCRIPTION=(CONNECT_DATA=(SID=PAND)(CID=(PROGRAM=d:\app\administrateur\product\11.2.0\dbhome_1\bin\ORACLE.EXE)(HOST=HESTIA)(USER=Administrateur)))(ADDRESS=(PROTOCOL=TCP)(HOST=128.1.0.8)(PORT=1521)))
    [20-NOV. -2012 11:07:06:127] nttbnd2addr: using host IP address: 128.1.0.8
    [20-NOV. -2012 11:07:06:127] nsopen: opening transport...
    [20-NOV. -2012 11:07:06:127] nttcni: Tcp conn timeout = 60000 (ms)
    [20-NOV. -2012 11:07:06:127] nttcni: trying to connect to socket 2804.
    [20-NOV. -2012 11:07:06:142] nttcni: connected on ipaddr 128.1.0.72
    [20-NOV. -2012 11:07:06:142] nttcon: set TCP_NODELAY on 2804
    [20-NOV. -2012 11:07:06:142] nsopen: transport is open
    [20-NOV. -2012 11:07:06:142] nsnainit: inf->nsinfflg[0]: 0x21 inf->nsinfflg[1]: 0x21
    [20-NOV. -2012 11:07:06:142] nsopen: global context check-in (to slot 0) complete
    [20-NOV. -2012 11:07:06:142] nscon: doing connect handshake...
    [20-NOV. -2012 11:07:06:142] nscon: sending NSPTCN packet
    [20-NOV. -2012 11:07:06:158] nscon: got NSPTRD packet
    [20-NOV. -2012 11:07:06:158] nscall: redirected
    [20-NOV. -2012 11:07:06:158] nstimarmed: no timer allocated
    [20-NOV. -2012 11:07:06:158] nsclose: closing transport
    [20-NOV. -2012 11:07:06:158] nsclose: global context check-out (from slot 0) complete
    [20-NOV. -2012 11:07:06:158] nscall: connecting...
    [20-NOV. -2012 11:07:06:158] nsc2addr: (ADDRESS=(PROTOCOL=tcp)(HOST=128.1.0.8)(PORT=1348))
    [20-NOV. -2012 11:07:06:158] nttbnd2addr: using host IP address: 128.1.0.8
    [20-NOV. -2012 11:07:06:158] nsopen: opening transport...
    [20-NOV. -2012 11:07:06:174] nttcni: Tcp conn timeout = 60000 (ms)
    [20-NOV. -2012 11:07:06:174] nttcni: trying to connect to socket 2804.
    [20-NOV. -2012 11:07:06:174] nttcni: connected on ipaddr 128.1.0.72
    [20-NOV. -2012 11:07:06:174] nttcon: set TCP_NODELAY on 2804
    [20-NOV. -2012 11:07:06:174] nsopen: transport is open
    [20-NOV. -2012 11:07:06:174] nsnainit: inf->nsinfflg[0]: 0x21 inf->nsinfflg[1]: 0x21
    [20-NOV. -2012 11:07:06:174] nsopen: global context check-in (to slot 0) complete
    [20-NOV. -2012 11:07:06:174] nscon: doing connect handshake...
    [20-NOV. -2012 11:07:06:174] nscon: sending NSPTCN packet
    [20-NOV. -2012 11:07:06:174] nscon: got NSPTAC packet
    [20-NOV. -2012 11:07:06:174] nscon: connect handshake is complete
    [20-NOV. -2012 11:07:06:174] nscon: nsctxinf[0]=0x29, [1]=0x8
    [20-NOV. -2012 11:07:06:174] nsnainconn: inf->nsinfflg[0]: 0x29 inf->nsinfflg[1]: 0x8
    [20-NOV. -2012 11:07:06:174] nscontrol: Vect I/O support: 0[20-NOV. -2012 11:07:06:174] nszgclv: SQLNET.ALLOWED_LOGON_VERSION not found, using default.
    [20-NOV. -2012 11:08:03:722] sntpwrite: Attempting to write 2259 bytes to handle 2764
    [20-NOV. -2012 11:08:03:722] sntpwrite: WriteFile returned 2259 bytes
    [20-NOV. -2012 11:08:03:722] sntpread: Attempting to read 8208 bytes from handle 2768
    [20-NOV. -2012 11:08:03:722] sntpread: ReadFile returned 21 bytes

  8. #28
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Le hint SQL driving query a changé le serveur qui exécute la requête et le fait que celle ci s’exécute maintenant plus vit n’est qu’un signe que la table la plus volumineuse est infsal. Plus précisément il est plus intéressant d’envoyer les données de la base locale au server distant et de récupérer le résultat que de rapatrier la table infsal de la base distante et de faire la jointure en local.

    Mais ce hint ne vous permettra pas de comprendre la différence du temps d’exécution sur les deux serveurs quand la base locale est celle qui conduit l’exécution du plan.

  9. #29
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Avez-vous en index sur INFSAL.INDIVIDU ?

  10. #30
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    Voila les index de la table INFSAL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INFO	INDEX_NAME	UNIQUE	LOGGING	DEGREE	COLUMN_NAME	ORDER	POSITION	OWNER
    PLAIN	INFSAL_ANMOIS_IDX	N	YES	1	ANMOIS	Asc	1	PANDORE
    PLAIN	INFSAL_IDX	N	YES	1	SOCIETE	Asc	1	PANDORE
    PLAIN	INFSAL_IDX	N	YES	1	INDIVIDU	Asc	2	PANDORE
    PLAIN	INFSAL_IDX	N	YES	1	COMPSAL	Asc	3	PANDORE
    PLAIN	INFSAL_IDX	N	YES	1	ANMOIS	Asc	4	PANDORE
    PLAIN	INFSAL_UNIQUE_IDX	Y	YES	1	SEQINF	Asc	1	PANDORE

  11. #31
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Je pense à avoir mieux compris. En fait votre requête est inefficace parce l’accès à la table distante infsal ne peut pas utiliser un index (fonction to_char ,colonne individu en deuxième position).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    access("DONNEE_TX"."ID_CONDUCTEUR"=TO_CHAR("INFSAL"."INDIVIDU"(+)))
    Dans ce cas tous ce que lui reste à faire à l’optimiseur est de rapatrier la table sur le serveur local et de faire la jointure via un hash join. Et quand le réseau commence à ramer c’est la cata ! Mais quand le plan est exécuté sur l’autre serveur ça change de fleur et l’accès à la table infsal devient assez efficace.
    Il sera intéressant dans ce cas de faire valider cette idée en créant temporairement un index FBI (TO_CHAR(INDIVIDU) sur la table infsal.

  12. #32
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    @mnitu

    Effectivement l'analyse est bonne.

    J'ai fais le test a l'envers car je ne peux pas toucher a la base de donnée ou est INFSAL.

    J'ai donc fait une copie de DONNEE_TX en ne prennant que les id_conducteur qui sont des nmobre et refait ma requete en enlevant les jointure en to_char.

    Le temps de réponse est de 6 secondes.......

    J'ai fait de meme pour la base de donnée 10g et le temps et de 4 sec.

    Mais cela n'explique pas comment fait le 10 G pour renvoyées les info de la requete pas optimisée en 10 sec alors que le 11g met une minute...

  13. #33
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    Alors la c'est tout de même étrange, ce matin le temps de réponse est a 56 sec sur le 11g avec malgrés le changement des jointures???????

    Bref comprends pas.... hier soir 6 sec ce matin 56....... sur le serveur 10 G RAS.

  14. #34
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par sebgoe Voir le message
    ...
    Mais cela n'explique pas comment fait le 10 G pour renvoyées les info de la requete pas optimisée en 10 sec alors que le 11g met une minute...
    Pour moi c’est de ce coté qu’il faut chercher, paramétrage SQL NET et réseau.
    Une requête peut parfois mettre plus de temps à s'exécuter: lecture physique des données, serveur occupé, réseau chargé, etc. Mais sa moyenne doit rester stable sinon c'est un signe que quelque chose à changée.

  15. #35
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je vois une autre modification à apporter à votre requête.
    Modifiez ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND to_char(DONNEE_TX.DATEJ,'YYYYMM')  =  '201209'
    En :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND DONNEE_TX.DATEJ >= date '2012-09-01'
    AND DONNEE_TX.DATEJ <  add_months(date '2012-09-01', 1)
    Si vous avez un index sur DONNEE_TX (DATEJ), ça peut jouer car actuellement il n'est pas utilisable.

  16. #36
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Points : 20
    Points
    20
    Par défaut
    @Waldar

    Merci pour la remarque

    Effectivement je sais que la requete peut être améliorée pour plus d'efficacité. Le but est la de comprendre pourquoi j'ai une tel différence de perf entre les deux serveurs.

    J'ai néanmoin modifié mon univers BO et modifié le filtre BO comme indiqué dans votre POST.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/05/2010, 19h09
  2. Réponses: 1
    Dernier message: 27/05/2009, 10h18
  3. Différence entre PeopleSoft-Oracle /DataStage-Oracle
    Par vincent1 dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 02/04/2009, 15h44
  4. Performance des recherches Oracle Text
    Par methosxp dans le forum SQL
    Réponses: 0
    Dernier message: 04/09/2007, 16h49
  5. Performances et sizing Oracle
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 1
    Dernier message: 14/05/2007, 11h32

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