Coucou les experts,
Vous pouvez me donner une définition précise de ce qu'est un dirty block?
La littérature n'est pas claire, est-ce un "bloc modifié en mémoire, commité, mais NON encore écrit sur disque dur" ou bien "bloc modifié en mémoire, non commité, et NON encore écrit sur disque dur"?
Ce que je lis sur le web, c'est que les gens font la distinction sur "est-ce que le bloc a été ou non écrit sur le disque dur". Or, pour moi, la différence fondamentale est "est-ce que le bloc modifié a été commité ou non". Pour rappel, Oracle ne fait pas de "dirty read", c'est à dire qu'une session ne verra pas les données NON commitées d'une autre session; donc j'en déduis que c'est bien la notion de COMMIT ou non qui distingue le dirty bloc du bloc clean.
Attention il y a un piège, Oracle peut très bien écrire sur disque dur un bloc modifié en mémoire, non commité, s'il a besoin de place dans le buffer cache par exemple.
Partager