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

Administration Oracle Discussion :

pagination avec requetes croisées sous windows


Sujet :

Administration Oracle

  1. #1
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Points : 280
    Points
    280
    Par défaut pagination avec requetes croisées sous windows
    Bonjour

    J'ai herité de l'administration d'une base oracle 10.2.0.2 (migrée depuis oracle 8) sous windows server 2003 entreprise dont les types de champs des tables ne peuvent être modifiés et dont je n'ai pas de licence pour le partitionning (donc non implémenté). Le serveur contient 4 G ram et 2 processeurs Xeon et l'os doit rester un windows .

    J'ai 3 tables qui me posent probleme dont voici la config

    Tables 1 :

    Varchar2 Varchar2
    --------- ---------
    ID1 Données1

    Cle primaire = ID1
    Nombre de lignes : +- 1 millions

    Tables 2 :

    Varchar2 Varchar2 Varchar2
    -------- -------- ---------
    ID1 ID2 Données2

    cle primaire = (ID1,ID2)
    Nombre de lignes :+- 25 millions
    Tables 3 :

    Varchar2 Varchar2 Long_Raw
    -------- -------- ----------
    ID1 ID3 Données3

    cle primaire = (ID1,ID3)
    Nombre de lignes : +- 5 millions
    Taille moyenne Données3 : 15K

    Il n'y a pas de cle etrangere definies entre les tables.

    En utilisation normale , tout se passe bien mais lorsque je doit faire en maintenance des requetes croisée entre les tables ci dessus (ex select * from table1 where ID1 in (select ID1 from tables 2 where ... , ou des join),
    alors Windows pagine et la base de donnée devient extremement lente et ce jusqu'au redemarage de l'instance (+ os).

    J' ai testé avec differentes valeurs des parametres SGA_target ( >800M actuellement), pga_target, index_Caching , ..... mais rien ne resoud le probleme.

    J'ai egalement regardé les explain_plan pour plusieurs requetes differentes (select in , join, exists) avec differentes combinaisons de Hints mais ceux généres par le CBO sont les meilleures.

    Je voulai savoir si passer à windows Datacenter pour pouvoir utiliser le parametre LOCK_SGA= TRUE et/ou implementé le partitionning pourrait résoudre le problème , ou si tout simplement il y a une petite chose qui à echapé au yeux de tout le monde et que l'un d'entre vous connaisse (perso win server connait pas mieux que XP).

    Les stat systèmes et sur tables sont effectuées correctement.

    Merci d'avoir lu jusque la , en esperant trouver une solution, mon avis perso est que Oracle est bien plus adequat sur un système *nix que sur un système Windows pour des gros stockage voir en général.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il faudrait au moins nous donner le résultat des EXPLAIN PLAN avec la description des tables et index concernées ainsi que la façon de calculer les statistiques. Si ces plans sont corrects mais donnent des mauvais résultats, alors il faudrait avoir la trace SQL des requêtes concernées analysées par TKPROF pour comparer les 2 plans(voir le tutoriel).

  3. #3
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Points : 280
    Points
    280
    Par défaut
    Pierre,

    Pour les statistiques , on en realise deux types environ tout les mois

    -Les stats systèmes via

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE dbms_stats.gather_system_stats('Start');
    et Stop durant une journée de travail.

    Les stat du schema qui contient toutes nos tables via une procedure similaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    begin
       dbms_stats.gather_schema_stats(
          ownname          => 'MONSCHEMA', 
          estimate_percent => dbms_stats.auto_sample_size, 
          method_opt       => 'for all columns size auto', 
          degree           => 7
       );
    end;
    /
    -Les indexs sont juste ceux associés à la cle primaire et chaque objet , table ou index a sont propre tablespace

    -Pour le explain plan voici celui d'un requete de type

    delete from table2 where id in (select id from table_temp);

    et table_temp contient les Id issu d'un select sur table3

    ---------------------------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    ---------------------------------------------------------------------------------------------
    | 0 | DELETE STATEMENT | | 15051 | 352K| 45 (3)| 00:00:01 |
    | 1 | DELETE | tables2 | | | | |
    |* 2 | HASH JOIN | | 15051 | 352K| 45 (3)| 00:00:01 |
    | 3 | INDEX FAST FULL SCAN| tables_temp _PK | 300 | 2700 | 2 (0)| 00:00:01 |
    | 4 | TABLE ACCESS FULL | tables2 | 35670 | 522K| 43 (3)| 00:00:01 |
    ---------------------------------------------------------------------------------------------

    En tout cas deja un grand merci pour ton conseil de comparer celui-ci avec les traces via TKPROF, ca me donne une bonne piste je pense

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2007, 22h49
  2. [Free Pascal] Utiliser du code C avec Free Pascal sous Windows
    Par richard dans le forum Free Pascal
    Réponses: 4
    Dernier message: 17/02/2007, 15h26
  3. Réponses: 4
    Dernier message: 03/07/2006, 18h13
  4. Creation de Requete Croisée sous SQL Server 2K
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/08/2005, 17h14
  5. probleme avec requete et sous-requete...
    Par birkoss dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/08/2005, 21h26

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