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

Oracle Discussion :

Nologging


Sujet :

Oracle

  1. #1
    Membre chevronné 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
    Par défaut Nologging
    Bonjour,

    D'apres ce que j'ai compris l'option NOLOGGING lors de la création (ou la modification) d'une table permet de ne pas ecrire dans les redolog (et donc eventuellement dans les archivelog). J'ai bon ?

    D'apres ce que j'ai lu (doc 8.1.7.4) cela ne semble fonctionner que pour les inserts .

    Moi j'aurais besoin d'un mecanisme de ce type pour les deletes. Je cherche a réaliser une purge partiel d'une grosse table et ca m'ennuie de remplir mes disques d'archivelogs inutiles.

    Vous avez une idée ?

    Merci par avance

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    L'option nologging, permet effectivement de passer outre le log .
    Cependant certaines opérations ne sont pas concernés et surtout il fau voir si le TBS est loggué ou pas

    Est ce que tu peux nous en dire plus sur l'opération

  3. #3
    Membre chevronné 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
    Par défaut
    J'ai une grosse table 15 millions de ligne sur une base en archivelogs.

    Je veux faire une purge partiel c'est à dire supprimer environs 11 millions de ligne selon un critère de date (indexé) pendant ce temps la base doit rester disponnible.

    J'accepte de prendre un risque sur cette table

    J'en conclue que :

    Je ne peux donc pas faire de truncate
    Je suis coincé avec les delettes qui vont générer des Go dans les archivelogs

    De plus si on peut améliorer un peu les perfs je ne suis pas contre...

  4. #4
    Membre chevronné 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
    Par défaut
    Suite à un petit problème technique laurentschneider à du m'envoyer sa réponse en privé. Je la remet ici maintenant que j'ai recréé le thread.

    Merci

    Citation Envoyé par laurentschneider
    le nologging ne fonctionne que pour les opération DML insert /*+APPEND*/ et pour certains DDL (style rebuild index).

    Pour un delete, il n'y a pas vraiment le choix. éventuellement avec insert into temp / truncate t / insert into t / truncate temp

    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     CREATE TABLE t(x CHAR) NOLOGGING;
     INSERT INTO t VALUES('@');
     INSERT INTO t VALUES('#');
     CREATE TABLE temp_t NOLOGGING AS SELECT * FROM t WHERE 1=0;
     INSERT /*+ APPEND */ INTO temp_t SELECT * FROM t where lnnvl(x='@');
     TRUNCATE TABLE t;
     INSERT /*+ APPEND */ INTO t SELECT * FROM temp_t;
     TRUNCATE TABLE temp_t;

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par Wurlitzer
    J'ai une grosse table 15 millions de ligne sur une base en archivelogs.

    Je veux faire une purge partiel c'est à dire supprimer environs 11 millions de ligne selon un critère de date (indexé) pendant ce temps la base doit rester disponnible.

    J'accepte de prendre un risque sur cette table

    J'en conclue que :

    Je ne peux donc pas faire de truncate
    Je suis coincé avec les delettes qui vont générer des Go dans les archivelogs

    De plus si on peut améliorer un peu les perfs je ne suis pas contre...
    tu as une table de départ de 15 millions de lignes . et tu veux une table d'arrivée de 4 millions.

    Pourquoi ne pas créer une table SAV du style ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create table ma_table_sav as select * from matable where ....
    Il faut bien entendu bien délimiter le nombre d'index de la base de départ et toutes les contraintes , triggers sur cette table.

    S'il n'y a que des index .

    Drop de matable
    renommer ma_table_sav en matable
    Rebuild des index en mode parrallel , nologging et nosort ( si possible )
    Recalcul des stats

  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
    Par défaut
    Il faut aussi ne pas oublier avant de supprimer la table de supprimer d'éventuelles foreign keys et de les recréer après. Si la table a des synonymes, il faut aussi les recréer. Et il faudra aussi exécuter les GRANT, s'il y a des GRANT sur la table.

  7. #7
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Je veux faire une purge partiel c'est à dire supprimer environs 11 millions de ligne selon un critère de date (indexé) pendant ce temps la base doit rester disponnible.
    Si vous avez la version ENTERPRISE, l'utilisation des tables partitionnée est donc à envisager à mon avis.
    Et dans ce cas, vous faites des TRUNCATE sur les partitions que vous voulez purger, et hop, le tour est joué ! :-)

Discussions similaires

  1. sqlplus /nolog ne marche pas
    Par olivanto dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 30/03/2007, 13h20
  2. erreur nolog
    Par zoheir_hm dans le forum Oracle
    Réponses: 1
    Dernier message: 10/04/2006, 11h04
  3. LOGGING / NOLOGGING
    Par jokos2000 dans le forum Oracle
    Réponses: 16
    Dernier message: 09/06/2005, 15h56
  4. [admin] tablespace d'index en nologging...
    Par hkhan dans le forum Oracle
    Réponses: 5
    Dernier message: 06/01/2005, 10h46
  5. [Firebird] nologging
    Par will82 dans le forum Débuter
    Réponses: 1
    Dernier message: 13/12/2004, 11h01

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