for - oracle 11g linux
Diferencia en el orĂ¡culo 11.2.0.1.0 y el orĂ¡culo 11.2.0.2.0 al insertar un valor en la tabla utilizando la secuencia (1)
El problema puede deberse al hecho de que NOORDER es el valor predeterminado con Oracle Sequences, especialmente si está ejecutando un entorno RAC.
http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm
He aprendido que con Sequences, si deseo garantizar que sean secuenciales, generalmente tengo que agregar las siguientes palabras clave al crear la secuencia:
CREATE SEQUENCE m1_id_sq ORDER NOCACHE;
Editar para hacer referencia a los comentarios anteriores:
Como señaló Alex Poole en los comentarios anteriores:
"Esto realmente no debería importar de todos modos, tendrás lagunas en las secuencias por otras razones, así que no debes confiar en que comience con 1"
El NOORDER es el predeterminado para las secuencias explica este problema.
Alex Poole también notó un problema conocido: Oracle Note 1050193.1 (requiere una cuenta de Oracle Support) relacionado con un problema con deferred_segment_creation=TRUE
ThinkJet también se refiere a los siguientes artículos:
En Oracle 11.2.0.1.0:
1) Creé una mesa.
create table m1(id number(5,2), version number(5,2), primary key (id));
2) Creé una secuencia.
CREATE SEQUENCE m1_id_sq;
3) inserté valores en la tabla.
insert into m1(id, version) values (m1_id_sq.nextval, 1);
4) salida.
version
id
-------------
2
1
* Entiendo que la razón para id = 2 se debe a la característica decreación de segmento diferido introducida desde 11.2.0.1.0 en adelante.
* Creé una instancia de usuario en Oracle y ejecuté los tres comandos anteriores. No como un maestro.
Ahora sigo los mismos pasos
en Oracle 11.2.0.2.0,
pero la salida que obtuve es,
version
id
-------------
1
1
Por favor explique por qué el id = 1 en el oráculo 11.2.0.2.0 mientras que id = 2 en el oráculo 11.2.0.1.0. ¡Muchas gracias!