Oracle - Error al quitar sentencia ALTER SESSION ENABLE PAR

   
Vista:

Error al quitar sentencia ALTER SESSION ENABLE PAR

Publicado por El Alber (2 intervenciones) el 17/11/2009 16:10:27
Hola, a ver si alguien me puede echar una mano:

Resulta que tengo un script con una simple sentencia insert as select, en el que estaba esta sentencia al principio:

ALTER SESSION ENABLE PARALLEL DML

El caso es que se producía el error siguiente:

ORA-12838: cannot read/modify an object after modifying it in parallel

y decidí quitar esa sentencia. El caso es que ahora se da un error de violaciónde clave primaria. El caso es que cuando ejecuto yo a mano la sentencia insert as select, no lo da (la tabla está particionada y la pk es local a cada partición).

¿Puede ser que ese error de violación de clave primaria tenga algo que ver con lo de quitar la sentencia ALTER SESSION ...?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al quitar sentencia ALTER SESSION ENABLE

Publicado por JORGE SANCHEZ (186 intervenciones) el 17/11/2009 16:52:25
No tiene nada que ver ... la sentencia que quitaste lo que hace es PREPARAR la sesion para permitiri levantar consultas en PARALELO ...

Revisa las columnas que forman la PK que se insertan en la tabla :
(Suponemos que COL1, COL2 y COL3 son la PK)

SELECT col1, col2, col3, count(1)
from tabla_origen
GROUP BY col1, col2, col3
HAVING count(1)>1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al quitar sentencia ALTER SESSION ENABLE

Publicado por El Alber (2 intervenciones) el 18/11/2009 08:31:57
Hola!

Gracias por responder. Sobre lo de revisar las columnas que forman la PK de la tabla, ya lo tengo mirado y re-mirado. De hecho, cuando salta el error de violación de clave única, ejecuto la misma query del insert as select, para intentar localizar los registros repetidos, pero no hay ningún duplicado. Es decir, salta un error de violación de la PK sin que haya duplicados, además, cuando dicho error salta, el insert as select no llega a meter ningún registro en la tabla de destino.

Es muy raro,

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al quitar sentencia ALTER SESSION ENABLE

Publicado por JORGE SANCHEZ (186 intervenciones) el 18/11/2009 23:50:29
EL ERROR DE VIOLACION DE LA PK EXISTE PORQUE SI TIENES DUPLICADOS CON LAS COLUMNAS QUE ESTA FORMADO LA PK, Y CLARO, NO INSERTA NADA YA QUE EN AUTOMATICO HACE ROLLBACK AL INSERT, COMO TE COMENTE, BUSCA DUPLICADOS

SI LA PK ESTA FORMADA POR COL1, COL2, COL3 Y TIENES MAS, ENTONCES

SELECT COL1,COL2,COL3,COUNT(1)
FROM TABLA
GROUP BY COL1,COL2,COL3
HAVING COUNT(1)>1

NO HAY BYTES MALOS, NO INVENTES, SI MARCA UNA VIOLACION DE PK ES PORQUE TIENES UN CONSTRAINT DE PK Y UN CONSTRAINT ES UNA RESTRICCION DE BASE DE DATOS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar