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 :
- INSERT /*+APPEND */
- SQL*Loader en Direct Path Load
- 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