Oracle - particionamiento de tablas

   
Vista:

particionamiento de tablas

Publicado por kessica (1 intervención) el 01/03/2016 22:29:51
Hola, tengo creada una tabla con un particionamiento de tipo range:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE TT_DOC
(	id NUMBER(14,0) NOT NULL ENABLE,
	tipo VARCHAR2(20 BYTE),
	folio VARCHAR2(30 BYTE)
 )
 PARTITION BY RANGE (ID)
 (PARTITION p01  VALUES LESS THAN (1015633)  TABLESPACE TBL_01
  PARTITION p02  VALUES LESS THAN (2031266)  TABLESPACE TBL_01
  PARTITION p03  VALUES LESS THAN (3046899)  TABLESPACE TBL_01
) ;

El problema es que cuando busco el ultimo registro no lo encuentra pero cuando lo busco indicandole en que particion esta si lo encuentra:

1
2
3
select max(id) from tt_doc; <-- debuelve el id 3046899
select * from tt_doc where id =3046899;  <-- NO debuelve resultados
select * from tt_doc partitions(p03)  where id =3046899;  <-- SI debuelve resultados

Alguien que me pueda orientar?
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

particionamiento de tablas

Publicado por David Loinaz (2 intervenciones) el 12/05/2016 13:36:59
Me temo mucho que tienes una corrupción a nivel del indice global de esa tabla.
El plan de ejecución de una y otra sentencia seguro que son diferentes y están usando índices distintos.

Para confirma si tienes algún problema de corrupción de índice, ejecuta:

SQL>analyze table tt_doc validate structure cascade into invalid_rows;


Apuesto a que te va a devolver un ORA-1499..... Si es así, revisa el fichero de traza que te genera el error para identificar el indice corrupto y recrealo con DROP/CREATE

(Al ser una tabla particionada necesitas tener la tabla INVALID_ROWS creada en el schema donde ejecutas en analyze. Si no la tienes ejecuta el script $ORACLE_HOME/rdbms/admin/utlvalid.sql)
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