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"”
En effet, j’ai écrit à ce sujet sur un autre blog : http://blog.easyteam.fr/2009/09/06/11-2-append_values/ . C’est tout à fait ça.
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
11.1 :Direct-path INSERT supports only the subquery syntax of the INSERT statement, not the VALUES clause.
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.