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 17/11/2010, 16h53   #1
Membre éclairé
 
Inscription : novembre 2002
Messages : 528
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 528
Points : 355
Points : 355
Par défaut [ORACLE 9i] Campagne de réorganisation

Bonjour à tous,

RDBMS 9.2.0.7.

La question à la fin du post - dsl pour la petite tartine -)

Nous menons actuellement des campagnes de réorg de tables partitionnées.

Nous avons identifié en effet potentiellement une assez grande fragmentation de plusieurs segments via la requête suivante (plus de 20000 blocs de 16ko approximativement 20 à 30% de table size)

Code :
1
2
3
4
5
6
7
8
9
10
SELECT owner,
table_name,
round((blocks*16),2) "Table size (Ko)",
round((num_rows*avg_row_len/1024),2) "Data size (Ko)",
round((blocks*16),2)-round((num_rows*avg_row_len/1024),2)
"Fragmentation (Ko)"
FROM dba_tables
WHERE table_name IN (....)
AND owner='...'
ORDER BY 4 DESC;
cette requête on le sait très bien ne fournit qu'une approximation en raison du peu de fiabilité d'AVG_ROW_LEN, mais en 9i d'habitude çà nous sert bien de baseline. Procédure testée jusqu'à présent sur des tables non partitionnées

Avant de lancer la réorg, nous avons lancé la requête suivante :
Code :
1
2
3
SELECT owner,segment_name,bytes,blocks,extents FROM dba_segments
WHERE owner=’&owner’
AND segment_name =’&segment_name’;
Processus de réorg :

--export de table

-- Deplacement TBS reorg
Code :
ALTER TABLE <table_name> move partition <partition_name> tablespace  <TBS_REORG>;
...

-- Retour TBS original
Code :
ALTER TABLE <table_name> move partition <partition_name> tablespace <TBS_ORGINAL>;
...

-- Rebuild d’index
Code :
ALTER INDEX <index_name> rebuild partition <partition_name>;
Une fois le processus terminé, on relance la requête lancée au départ :
Code :
1
2
3
SELECT owner,segment_name,bytes,blocks,extents FROM dba_segments
WHERE owner=’&owner’
AND segment_name =’&segment_name’;
ET LA MYSTERE DE L'OUEST !!! on obtient aucun gain en terme de nombre de blocs/extents ???

Voyez vous une raison ? maj des stats Oracle du dictionnaire décalée ?

Merci pour vos lumières
__________________
PpPool
PpPool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 17h30   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
PCTFREE trop grand peut être ?
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 19h54   #3
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
Bonjour,

S'il s'agit de partitions, il faudrait regarder les stats de dba_tab_partitions au lieu des stats globales de dba_tables.

Mais c'est peut-être simplement une preuve que la requête en question n'est pas très pertinente...

Si le but est d'avoir une idée tu taux de remplissage des blocs, alors pourquoi ne pas utiliser dbms_space (en LMT) ? Ce sera probablement plus fiable.

Cordialement,
Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 09h41   #4
Membre éclairé
 
Inscription : novembre 2002
Messages : 528
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 528
Points : 355
Points : 355
Merci bcq pour vos réponses

donc si la requête suivante :
Code :
1
2
3
SELECT owner,segment_name,bytes,blocks,extents FROM dba_segments
WHERE owner=’&owner’
AND segment_name =’&segment_name’;
lancée AVANT et APRES la réorg donne le même résultat en terme de blocs/extents c'est que les segments n'étaient pas du tout fragmentés ??

Pour la requête initiale sur la fragmentation, je suis ok sur le fait qu'elle n'est pas parfaite mais sur des tables non partitionnées, elle fonctionne relativement bien.
Pour ma part, c'est la première fois que je l'expérimente sur des tables partitionnées.

Pour DBMS_SPACE, on l'emploi depuis la 10g.
Package fiable en 9i ?
__________________
PpPool
PpPool 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 17h57.


 
 
 
 
Partenaires

Hébergement Web