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 :

[Archive log] Comment désactiver les archives log pour une requête insert précise


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut [Archive log] Comment désactiver les archives log pour une requête insert précise
    Bonjour

    Je cherche le moyen d'exécuter une requête INSERT sans que celle-ci génère une entrée dans les archive logs. Dans la FAQ, il est indiqué comment désactiver les Archive logs sur la base de données. Or, je ne veux pas désactiver les archive logs pour la base en entier. Je voudrais juste qu'une requête INSERT particulière, utilisée lors d'un chargement de données massif (environ 2,5 millions de lignes), ne génère pas d'entrée dans les archive logs.

    On m'a dit d'utiliser le hint Oracle : insert /*+ append */ into ....
    C'est ce que j'ai fait, mais malgré ça les archive logs continuent à grossir lors du gros chargement de données que j'effectue. Cela vampirise l'espace disque disponible sur le serveur hébergeant la DB Oracle. Après quelques recherches, j'ai juste trouvé que ce hint APPEND sert à écrire à la fin du fichier contenant les données de la table, ce qui augmente les performances de l'INSERT ; mais je n'ai pas trouvé d'information comme quoi l'utilisation de ce hint permet de ne pas écrire dans les archive logs.

    Pourriez-vous me dire si la solution est bien d'utiliser le hint APPEND, ou sinon comment faire ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il faut que votre table soit en NOLOGGING pour que celà fonctionne, et encore je crois qu'il log quand même un peu.

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il faut que votre table soit en NOLOGGING pour que celà fonctionne, et encore je crois qu'il log quand même un peu.
    Et que le tablespace ne soit pas en FORCE LOGGING.
    Et que la base ne soit pas en FORCE LOGGING.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Merci pour vos réponses.

    Mais serait-il possible d'influer sur l'écriture d'archive logs au niveau juste de la requête. Ma table reste configurée pour écrire des archive logs mais pour une requête bien précise aucun archive log n'est généré.

  5. #5
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par El Saigneur Voir le message
    Bonjour

    Je cherche le moyen d'exécuter une requête INSERT sans que celle-ci génère une entrée dans les archive logs. Dans la FAQ, il est indiqué comment désactiver les Archive logs sur la base de données. Or, je ne veux pas désactiver les archive logs pour la base en entier. Je voudrais juste qu'une requête INSERT particulière, utilisée lors d'un chargement de données massif (environ 2,5 millions de lignes), ne génère pas d'entrée dans les archive logs.

    On m'a dit d'utiliser le hint Oracle : insert /*+ append */ into ....
    C'est ce que j'ai fait, mais malgré ça les archive logs continuent à grossir lors du gros chargement de données que j'effectue. Cela vampirise l'espace disque disponible sur le serveur hébergeant la DB Oracle. Après quelques recherches, j'ai juste trouvé que ce hint APPEND sert à écrire à la fin du fichier contenant les données de la table, ce qui augmente les performances de l'INSERT ; mais je n'ai pas trouvé d'information comme quoi l'utilisation de ce hint permet de ne pas écrire dans les archive logs.

    Pourriez-vous me dire si la solution est bien d'utiliser le hint APPEND, ou sinon comment faire ?

    Merci d'avance.
    As tu des indexes sur la table ?

    ca ralentit les inserts ...

    tu peux les desactiver ...

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Merci pour tes indications fatsora, mais mon problème ne concerne pas les performances. Je souhaiterais juste savoir comment faire pour exécuter une requête INSERT sur une table sans que cela génère une écriture dans les archive logs et sans désactiver les archive logs à un niveau plus global que ma requête (table, base de données, tablespaces, ...).

  7. #7
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Justement

    en fait je voulais dire que si tu a des indexes , ca genère aussi des log ....

    donc si tu mets les index en nologging ou les tablespaces indexes en nologging ou que si tu desactive ou drop les indexes

    .... tu auras moins de log generés

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  8. #8
    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
    Citation Envoyé par El Saigneur Voir le message
    Merci pour vos réponses.

    Mais serait-il possible d'influer sur l'écriture d'archive logs au niveau juste de la requête. Ma table reste configurée pour écrire des archive logs mais pour une requête bien précise aucun archive log n'est généré.
    non

  9. #9
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Les archives logs sont les copies des fichiers redo logs, si tu veux éviter d’écrire dans un fichier archivelog cela veut dire éviter d’écrire sur les fichiers redos, ce qui n’est pas possible.(Il y a des exceptions).

    Le mieux est de lancer un batch qui purge ou compresse tous les archivelogs.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/12/2009, 15h16
  2. Comment avoir un objet log commun à toutes les pages?
    Par mfrai02 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/03/2009, 23h21
  3. Comment désactiver les log de IIS en asp.net
    Par infostars dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/02/2009, 15h55
  4. Comment récuperer les différentes lignes d'une requête ?
    Par frikazoide dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/01/2007, 08h33
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02

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