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

Import/Export Oracle Discussion :

[9i] tablespace offline


Sujet :

Import/Export Oracle

  1. #1
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select 'ALTER TABLESPACE '||tablespace_name || ' OFFLINE;' 
    from dba_tablespaces
    where contents = 'UNDO'

  2. #2
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    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

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    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

  5. #5
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    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.

  6. #6
    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
    De plus, augmenter le nombre de COMMIT tend en général à dégrader les performances.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    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.

  8. #8
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    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

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    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

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    Attention à l'insert des 30 % !

  11. #11
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    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.

  12. #12
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    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 !!

  13. #13
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    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.

  14. #14
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    En créant des temporary tables tu peux gagner pas mal de temps aussi

    Sinon, export avec l'option query et imp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. export of offline tablespace
    Par assimadi dans le forum Administration
    Réponses: 1
    Dernier message: 13/11/2007, 15h47
  2. Dropper des partitions sur des tablespaces OFFLINED
    Par elhamidi dans le forum Administration
    Réponses: 3
    Dernier message: 25/07/2007, 17h23
  3. tablespace UNDO offline
    Par olivanto dans le forum Administration
    Réponses: 2
    Dernier message: 16/05/2007, 09h37
  4. [eBs 11.5.9] Undo tablespace offline
    Par guigui_cwoco dans le forum Oracle
    Réponses: 7
    Dernier message: 14/12/2006, 10h23
  5. [Offline]Ouverture d'un doc html sous flash
    Par Hermant dans le forum Flash
    Réponses: 2
    Dernier message: 09/12/2002, 10h14

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