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

  2. mais c’est vieux ce truc, je le savais depuis la sortie de la 11g, je pensais que c’est dans la doc, mais je la retrouve pas.

Les commentaires sont fermés.