Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Import/Export
Import/Export Forum d'entraide sur les outils d'import/export 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 27/02/2007, 09h41   #1
Membre éclairé
 
Inscription : septembre 2003
Messages : 432
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 432
Points : 326
Points : 326
Par défaut [9i] tablespace offline

Bonjour,

je dois faire des grosses modifications (delete from tb where ...)sur une tables (plusieurs Go de donée à supprimer).

Je suis sûr de mes modifications, je voudrais savoir si je mets le tablespace undo offline cela gargnera du temps lors de modification ?

Code :
1
2
3
SELECT 'ALTER TABLESPACE '||tablespace_name || ' OFFLINE;' 
FROM dba_tablespaces
WHERE contents = 'UNDO'
sygale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 09h51   #2
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Ca ne marchera pas.
La suppression de plusieurs millions de lignes doit avoir une autre issue (par ex. create table as select..., drop la table source, rename de la nouvelle table).

Nicolas.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 16h57   #3
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Ou alors passe par une petite procédure stockée crée pour l'occasion qui va te permettre de faire un loop dans lequel tu vas deleter tes lignes par paquets (mettons par paquets de 3000) enchaîné avec un commit, une vérification du fait qu'il reste des lignes à supprimer (sinon exit) et le tour est joué. La
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 16h58   #4
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Ou alors passe par une petite procédure stockée crée pour l'occasion qui va te permettre de faire un loop dans lequel tu vas deleter tes lignes par paquets (mettons par paquets de 3000) enchaîné avec un commit, une vérification du fait qu'il reste des lignes à supprimer (sinon exit) et le tour est joué.

La seule chose délicate est de choisir le bon tempo de commit
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h20   #5
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Citation:
Envoyé par Harry Potter
Ou alors passe par une petite procédure stockée crée pour l'occasion ...
Il y a de forte chance qu'une procédure stockée ne soit pas plus rapide qu'un simple sql d'update.

Nicolas.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h46   #6
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
De plus, augmenter le nombre de COMMIT tend en général à dégrader les performances.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h06   #7
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Citation:
NGasparotto a écrit :
Il y a de forte chance qu'une procédure stockée ne soit pas plus rapide qu'un simple sql d'update.
Je ne vois pas bien le rapport avec le problème, un simple sql d'update sur des millions de lignes va exploser le undo, alors qu'une procédure stockée qui va faire la même chose chose mais disons par paquets de 2000 lignes va permettre de faire l'opération.
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h06   #8
Membre éclairé
 
Inscription : septembre 2003
Messages : 432
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 432
Points : 326
Points : 326
Citation:
Envoyé par pifor
De plus, augmenter le nombre de COMMIT tend en général à dégrader les performances.
Je suis d'accord, comme je souhaite supprimer 70 % de la table, je vais donc
- créer une table de 30% des données à garder
- truncate de la table
- insert des 30 %

je pense que cela sera la solution la moins couteuse

Merci en tout cas pour vos aides
sygale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h10   #9
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Citation:
pifor a écrit :
De plus, augmenter le nombre de COMMIT tend en général à dégrader les performances.
Quand au fait d'augmenter le nombre de commit, c'est un peu plus fin que ça, si on part d'un commit toute les lignes et qu'on augmente la valeur de celui-ci on va avoir un gain qui se met à stagner pour redescend (grosso modo) => il faut trouver la bonne valeur
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h11   #10
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Attention à l'insert des 30 % !
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h31   #11
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Citation:
Envoyé par Harry Potter
Je ne vois pas bien le rapport avec le problème, un simple sql d'update sur des millions de lignes va exploser le undo, alors qu'une procédure stockée qui va faire la même chose chose mais disons par paquets de 2000 lignes va permettre de faire l'opération.
Ben le problème ici n'est pas les undo mais les performances, pour rappel le premier post :
Citation:
Envoyé par sygale
je voudrais savoir si je mets le tablespace undo offline cela gargnera du temps lors de modification ?
Nicolas.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h39   #12
Membre éclairé
 
Inscription : septembre 2003
Messages : 432
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 432
Points : 326
Points : 326
pour info
table T1 33 millions de lignes, nous gardons 9 millions de lignes

- create table 30% = 10 min
- truncate table T1 drop storage = 1 min
- drop index table T1 = 1 min
- insert into T1 des 30 % (découpé en 500 000 lignes max avec commit) = 1h30
- create index T1 = 25 min
- analyze T1 et ses index = 10 min

environ 2h20 de traitements mais cela fonctionne !!
sygale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 17h38   #13
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Citation:
Envoyé par sygale
pour info
table T1 33 millions de lignes, nous gardons 9 millions de lignes

- create table 30% = 10 min
- truncate table T1 drop storage = 1 min
- drop index table T1 = 1 min
- insert into T1 des 30 % (découpé en 500 000 lignes max avec commit) = 1h30
- create index T1 = 25 min
- analyze T1 et ses index = 10 min

environ 2h20 de traitements mais cela fonctionne !!
Est-ce une possiblité de dropper la table d'origine et de renommer la table venant d'être créée avec les 30% (tu économiserais l'insertion) ?

Nicolas.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 20h29   #14
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
En créant des temporary tables tu peux gagner pas mal de temps aussi

Sinon, export avec l'option query et imp
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h25.


 
 
 
 
Partenaires

Hébergement Web