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 :

DELETE vs CREATE TABLE as SELECT


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Points : 7
    Points
    7
    Par défaut DELETE vs CREATE TABLE as SELECT
    Bonjour,

    je doit supprimer 7Millions d'enregistrement d'une table partitonnée qui contient actuellement 27Millions.

    J'ai essayé le DELETE de 7Millions de lignes, le problème c'est que oracle génère énormément de LOG (Je suis limité en disque) et de plus l'opération dure 3H ...


    Donc mes questions :
    Y-a t'il un moyen de faire plus rapide ?
    Serait-il avantageux de faire un create table as select ?
    Si oui, doit-je faire un truncate de la table partitionné puis un insert ... as select * from ma_table_temporaire ?
    Si reoui, etant donné que ma table possède une PK + FK + PARTITION, oracle va t'il généré les logs lors de l'INSERT ? (J'ai lu je ne sais plus ou que si la table possédait des index oracle génère les logs)

    J'ai pensé a mettre la base en mode NOARCHIVELOG (don un shutdown est nécéssaire) le temps de la purge est-ce une bonne idée ?

    Version d'oracle 9.2.0.8
    Merci d'avance

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    tes 7 millions de lignes sont dans la même partition ? Le CREATE sera pire, suppression de 7 millions contre insertion de 20 millions, y'a pas photo

    le NOARCHIVELOG ne servira à rien... si tu switches trop c'est plutôt l'agrandissement des redos qui peut aider.

  3. #3
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par orafrance
    le NOARCHIVELOG ne servira à rien... si tu switches trop c'est plutôt l'agrandissement des redos qui peut aider.
    Je ne suis pas completement d'accord car
    Citation Envoyé par beanl
    le problème c'est que oracle génère énormément de LOG (Je suis limité en disque)
    Je pense mais beanl pourrait nous le confimer que c'est la taille disque qui est limité. De plus le mode ARCHIVELOG fais des ecritures en plus (il faut bien écire les fichiers d'archive) et si on a pas plusieurs de disque ca peut bloquer au niveau des IO.

    Il nous arrive de passer en NOARCHIVELOG pour certaine grosse opération mais dans ce cas il faut bien reflechir au conséquence sur les sauvegardes

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    oui t'as un peu d'overhead pendant l'archivage mais c'est pas génant tant que l'allocation dans les redos se passe bien. Moi je miserais plutôt sur un agrandissement des redos mais il est évident que sans l'alert.log on ne peut qu'extrapoler

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Effectivement, je suis limité en espace disque. Et mon idée etait de mettre la base en NOARCHIVELOG le temps de la purge ... en ce qui concerne les backups : Une fois la purge terminée je remet la base en archivelog et je sauvegarde.

    En ce qui concerne l'augmentation des redo log, je ne pense pas avoir de probleme de ce coter la (On a un "Checkpoint not complete" dans les logs si il y a des souci je croit ...).

    PS : Il y a aucun moyen de faire un "delete" en nologging ??? c'est fou ça...

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. Create Table As (select Union Select )
    Par cactus2078 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/07/2009, 12h54
  3. Create table as select
    Par nexuspolaris dans le forum SQL
    Réponses: 2
    Dernier message: 01/10/2008, 08h58
  4. "create table x select" scanne toute ma table
    Par kagemaru dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/11/2007, 21h47
  5. Surveiller 'CREATE TABLE AS SELECT'
    Par mjag dans le forum Administration
    Réponses: 4
    Dernier message: 26/12/2006, 11h42

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