Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2008, 16h40   #1
Invité de passage
 
Inscription : mars 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 16
Points : 2
Points : 2
Par défaut Performance insertion dans une table partitionnée

Nous disposons d'une table partitionnée (une partition par mois comptable).
Sur cette table sont définis des index bitmap eux aussi partitionnés.
Des requêtes d'insertion (via l'ETL datastage) dont la performance est généralement de 160 rows/sec environ se retrouvent à tourner à 1 à 3 rows/sec.
Sur un volume de 200000 lignes à insérer, après environ 15000 lignes traitées nous obtenons une erreur :
ORA-30036: impossible d'étendre le segment par 4 dans le tablespace d'annulation 'UNDO'.
L'insertion s'arrête car l'outil est paramétré pour sortir au bout de 50 erreurs.

Les insertions dans la partition précédente (reliquat des données de mars) se passent sans problème.

Nous avons déjà eu ce problème auparavant et nous l'avions résolu en sauvegardant les données de la partition courante en la recréant, et en y insérant à nouveau les données.
De plus nous avions rejoué le rafraichissement des statistiques sur la partition.
Cette erreur nous était arrivée une fois par an environ, mais cela fait 2 mois de suite que cela se produit sur une partition contenant encore peu de données.

Quelle peut-être la cause de ce problème ? Logicielle ? Matérielle (problème lié au disque ?)
Peut-il être résolu sans suppression et nouvelle création de la partition ? Est-ce que par exemple rejouer les statistiques et la reconstruction des partitions d'index peu suffire ?

Pour info nous avons :
112 partitions pour notre table
29 index bitmap sur cette table ayant chacun aussi 112 partitions
Nous fonctionnons sous oracle 9.2.0.8
regal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 17h04   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Citation:
Envoyé par regal Voir le message
ORA-30036: impossible d'étendre le segment par 4 dans le tablespace d'annulation 'UNDO'.
Essaie de faire des commits intermédiaires ou augmente la taille du tablespace UNDO, ton problème n'a apparemment rien à voir avec le partitionnement, c'est jusque que le volume que tu insères est trop grand pour tenir dans le UNDO
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 10h02   #3
Invité de passage
 
Inscription : mars 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 16
Points : 2
Points : 2
Citation:
Envoyé par scheu Voir le message
Essaie de faire des commits intermédiaires ou augmente la taille du tablespace UNDO, ton problème n'a apparemment rien à voir avec le partitionnement, c'est jusque que le volume que tu insères est trop grand pour tenir dans le UNDO
Le problème ne semble pas là car le même nombre de lignes à insérer a déjà été traité sans problème les mois précédents.
Pour le mois précédent, une fois la partition reconstruite, le chargement du même volume de ligne s'est déroulé correctement.
Important : le ralentissement s'observe aussi avec un faible nombre de lignes à traiter (44 minutes pour insérer 9760 lignes le jour ou le problème est apparu contre 9 minutes pour 59500 lignes la veille pour le même job datastage).
La reconstruction de la partition n'a pas corrigé le problème. Le mois dernier, nous avons cependant dû la reconstruire 2 fois - en la créant dans un tablespace différent la seconde fois - sans être certains qu'il y ait le moindre impact concernant ce changement de tablespace.
Nous créons les partitions dans 3 tablespaces de façon circulaire, pour ce mois-ci ce n'est pas le même que pour le mois dernier.
regal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 11h00   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
C'est pas la taille de données mais celle des extents qui importe. Si tes tablespaces sont en AUTOALLOCATE plutot qu'UNIFORM SIZE alors la taille du NEXT est variable.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 11h20   #5
Invité de passage
 
Inscription : mars 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 16
Points : 2
Points : 2
Une précision : nous avons 3 tablespaces data_xl_1, data_xl_2 et data_xl_3.
Nous avons comme le mois dernier forcé la création de la partition dans data_xl_2 et cela fonctionne.
Il apparait donc que si la partition est dans data_xl_1 ou data_xl_3 l'insertion est très ralentie et non dans data_xl_2.
Un agrandissement des file systems et l'ajout d'un fichier .dbf aux tablespaces avait été effectué mi-février donc juste avant que le problème ne survienne.
Il semble - je ne sais pour quelle raison - que le fichier additionnel ne soit pas utilisé sur le tablespace data_xl_2.
Est-ce que un tablespace créé sur 2 fichiers peut poser problème avec ora9208 - en particulier pour des tables partitionnées ?

PS : les années précédentes quand le problème était apparu, cela faisait suite à une suppression massive de données, ce qui n'est pas le cas cette fois.
regal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 16h17   #6
Membre du Club
 
Avatar de lmartin
 
Inscription : avril 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 61
Points : 61
Points : 61
Proposition de distribution de tes partitions :

une partition/tablespace/mois, chacun de tes tablespaces aura une extension uniforme et tu peux générer un ensemble de tablespace en fin d'année pour l'année suivante. Tu initialise les stats par partition et calcul les stats globales mensuellement.
Tu auras une qualité de distribution de tes données condensée, une lecture plus claire de l'évolution de ta volumétrie (fameux "capacity planning" à la mode).
Les temps d'attentes sur un fichier t'indiqueront directement quel objet est en lecture/écriture.
Tu gagneras aussi en souplesse de maintenance. Par exemple tu peux passer en READ ONLY,par le biais des tablespaces, tes données comptables qui ne doivent plus évoluer.

Pour ton problème de perf après suppression massive de données, je mettrais ça sur le compte des allocations non uniformes transformant tes fichiers dbf en gruyère après suppression.
lmartin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 18h06   #7
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Citation:
Envoyé par regal Voir le message
Sur cette table sont définis des index bitmap eux aussi partitionnés.
Je pense que l'utilisation de l'index bitmap est mal placée dans une table qui change (insert, update) fréquemment
Un index bitmap : gèle les autres sessions au moment de l'insert ou l'update
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h34.


 
 
 
 
Partenaires

Hébergement Web