Oracle – NOLOGGING


Dans certains cas de besoin de gain de performances sur du chargement de base de données Oracle, il peut être tentant de basculer tout ou partie de la base de données en mode NOLOGGING.

Il faut bien garder à l’esprit que ne pas écrire les transactions dans les redologs implique une impossibilité de recover en cas de crash de la base de données.

Utiliser le mode NOLOGGING ne garantit toutefois pas que les transactions ne seront pas écrites dans les redologs. En effet, le mode NOLOGGING est utilisable pour un certain type d’opération d’écriture, les INSERT en mode APPEND.

L’INSERT en mode APPEND a pour vocation d’écrire les lignes insérées en bout de table, au-delà du HWM (High Water Mark) de la table. Le mode APPEND par ailleurs utilise la fonctionnalité d’écriture appelée Direct Path qui force l’écriture directe des lignes sans passer par le cache Oracle.

Un matrice explique dans quels cas le mode NOLOGGING permet de ne pas écrire dans les redologs lors d’insertions en mode APPEND :

Table mode Insert mode Archivelog mode Résultat
LOGGING APPEND ARCHIVELOG Redo généré
NOLOGGING APPEND ARCHIVELOG Redo non-généré
LOGGING NOAPPEND ARCHIVELOG Redo généré
NOLOGGING NOAPPEND ARCHIVELOG Redo généré
LOGGING APPEND NOARCHIVELOG Redo non-généré
NOLOGGING APPEND NOARCHIVELOG Redo non-généré
LOGGING NOAPPEND NOARCHIVELOG Redo généré
NOLOGGING NOAPPEND NOARCHIVELOG Redo généré

Les cas de chargement en Direct Path sont les suivants :

  1. INSERT /*+APPEND */
  2. SQL*Loader en Direct Path Load
  3. impdp en Direct Path

 

Source : Ask Tom : https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5280714813869  et
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:485221567528