11.1 et "Insert /*+ APPEND */ Values"

Alex, (encore lui!) pointe sur son blog un étonnant changement entre 10.2 et 11.1; INSERT /*+ APPEND */ VALUES fait désormais un INSERT /*+ APPEND */ ;-). Autrement dit, testez en 10g, dans une première session, exécutez :

SQL> create table g1 (id number);

Table created.

SQL> insert into g1 values (1);

1 row created.

Laissez la transaction en cours et dans une seconde session, lancez

SQL> insert /*+append*/ into g1 values (2);

En 10g, le prompt est retourné immédiatement; en 11g… on attend! La raison, ce type d’insert pose un lock exclusif sur la table. Pour vous en persuader, exécutez :

SQL>select sid,
type,
id1,
lmode,
request
from v$lock
where lmode!=request
and type='TM';

SID TY ID1 LMODE REQUEST
--- -- --------- ---------- ---------
155 TM 74741 0 6
170 TM 74741 3 0

Il est facile de se rendre compte de ce qu’il se passe, de ce qu’il faut et surtout de ce qu’il ne pas faire en 11g. Cependant, les vraies questions sont « pourquoi changer cette fonctionnalité ? » et « pourquoi maintenant ? ». Une idée ?

4 réflexions sur “11.1 et "Insert /*+ APPEND */ Values"”

  1. Bonjour,
    d’aprèse ce que j’ai compris, sur OARCLE 11.1 ce hint n’est plus supporté ne fait pas d’insert en mode direct path+ deplacement du WHM.
    maintenant avec la nouvelle reslase 11.2, on a un nouveau hint qui fait le job, /*+ APPEND_VALUES */.
    Confirmiez vous cela?
    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *