Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle 10g
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle 10g

Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle 10g Responder citando

Tengo un servidor con Oracle Database 10g sobre Microsoft Windows Server 2008. Hasta hace unos días me iba sin problemas pero ahora vi que me había quedado sin espacio y, revisando, vi el fichero Alert.log de Oracle, en este fichero aparece contínuamente el error:

Errors in file E:\Oracle\Contabilidad\bdump\contabilidad_j000_3064.trc:
ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-08102: no se ha encontrado la clave de índice, objeto número 239, archivo 1, bloque 126 (2)
ORA-12012: error en la ejecución automática del trabajo 21
ORA-08102: no se ha encontrado la clave de índice, objeto número 239, archivo 1, bloque 126 (2)


Además he visto que en esa carpeta "bdump" me está creando miles de ficheros .trc con tamaños variables (10MB, 20MB) que ocupan una barbaridad (30GB) y que supongo que son los que me han dejado el disco duro sin espacio.

No tengo conocimientos de Oracle ¿estos ficheros .trc son necesarios? ¿se pueden eliminar o mover a otro sitio? ¿por qué se producen? ¿cómo puedo solucionar los errores que aparecen en el fichero alert.log?
MensajePublicado:
Mie Jun 22, 2011 8:42 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



varios escribió:
Tengo un servidor con Oracle Database 10g sobre Microsoft Windows Server 2008. Hasta hace unos días me iba sin problemas pero ahora vi que me había quedado sin espacio y, revisando, vi el fichero Alert.log de Oracle, en este fichero aparece contínuamente el error:

Errors in file E:\Oracle\Contabilidad\bdump\contabilidad_j000_3064.trc:
ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-08102: no se ha encontrado la clave de índice, objeto número 239, archivo 1, bloque 126 (2)
ORA-12012: error en la ejecución automática del trabajo 21
ORA-08102: no se ha encontrado la clave de índice, objeto número 239, archivo 1, bloque 126 (2)


Además he visto que en esa carpeta "bdump" me está creando miles de ficheros .trc con tamaños variables (10MB, 20MB) que ocupan una barbaridad (30GB) y que supongo que son los que me han dejado el disco duro sin espacio.

No tengo conocimientos de Oracle ¿estos ficheros .trc son necesarios? ¿se pueden eliminar o mover a otro sitio? ¿por qué se producen? ¿cómo puedo solucionar los errores que aparecen en el fichero alert.log?


Los ficheros .trc son ficheros de traza de error, en ellos Oracle guarda información útil para solucionar los errores que se producen en la base de datos. Estos ficheros son de texto plano y puedes moverlos a otra unidad pero no debes eliminarlos hasta que no estés seguro de que hayas solucionado el error, pues te pueden servir para solucionarlo. De momento, para liberar espacio corta estos ficheros a otra unidad y carpeta.

En cuanto al error que nos comentas, lo primero que debes hacer es averiguar qué objeto de la base de datos está corrupto. Ejecuta la siguiente select para averiguarlo:

Código:

select segment_name, segment_type, owner
from dba_extents
where file_id=1 and 126 between block_id and block_id + blocks -1;


Esto te devolverá el nombre del segmento, el tipo de segmento y el propietario. Dependiendo del tipo de segmento corrupto tendrás que hacer una cosa u otra para solucionarlo. Ejecuta la select anterior e intentaremos ayudarte.
MensajePublicado:
Mie Jun 22, 2011 7:28 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



alonsojpd escribió:
Los ficheros .trc son ficheros de traza de error, en ellos Oracle guarda información útil para solucionar los errores que se producen en la base de datos. Estos ficheros son de texto plano y puedes moverlos a otra unidad pero no debes eliminarlos hasta que no estés seguro de que hayas solucionado el error, pues te pueden servir para solucionarlo. De momento, para liberar espacio corta estos ficheros a otra unidad y carpeta.

En cuanto al error que nos comentas, lo primero que debes hacer es averiguar qué objeto de la base de datos está corrupto. Ejecuta la siguiente select para averiguarlo:

Código:

select segment_name, segment_type, owner
from dba_extents
where file_id=1 and 126 between block_id and block_id + blocks -1;


Esto te devolverá el nombre del segmento, el tipo de segmento y el propietario. Dependiendo del tipo de segmento corrupto tendrás que hacer una cosa u otra para solucionarlo. Ejecuta la select anterior e intentaremos ayudarte.


La select que me dices devuelve:

segment_name: NATIVE_COMP_SHARED_OBJECTS
segment_type: LOBSEGMENT
owner: SYS


¿Cómo lo soluciono? ¿es un índice?
MensajePublicado:
Mie Jun 22, 2011 7:42 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



varios escribió:
La select que me dices devuelve:

segment_name: NATIVE_COMP_SHARED_OBJECTS
segment_type: LOBSEGMENT
owner: SYS


¿Cómo lo soluciono? ¿es un índice?


Ejecuta esta otra consulta SQL para saber el tipo de objeto de que se trata con certeza:

Código:

select object_type, object_name, owner
from all_objects
where object_name = 'I_JOB_NEXT'
MensajePublicado:
Mie Jun 22, 2011 7:45 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



alonsojpd escribió:
Ejecuta esta otra consulta SQL para saber el tipo de objeto de que se trata con certeza:

Código:

select object_type, object_name, owner
from all_objects
where object_name = 'I_JOB_NEXT'


Me devuelve que es un índice, en object_type aparece "INDEX" ¿cómo lo soluciono?
MensajePublicado:
Mie Jun 22, 2011 7:46 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



varios escribió:
Me devuelve que es un índice, en object_type aparece "INDEX" ¿cómo lo soluciono?


Ahora ejecuta esta otra consulta para saber a qué tabla corresponde el índice corrupto "I_JOB_NEXT":

Código:

select INDEX_NAME, TABLE_NAME, TABLE_OWNER
from SYS.ALL_INDEXES
where index_name='I_JOB_NEXT'
MensajePublicado:
Mie Jun 22, 2011 7:54 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



alonsojpd escribió:
Ahora ejecuta esta otra consulta para saber a qué tabla corresponde el índice corrupto "I_JOB_NEXT":

Código:

select INDEX_NAME, TABLE_NAME, TABLE_OWNER
from SYS.ALL_INDEXES
where index_name='I_JOB_NEXT'


Me devuelve:

INDEX_NAME: I_JOB_NEXT
TABLE_NAME: JOB$
TABLE_OWNER: SYS
MensajePublicado:
Mie Jun 22, 2011 7:56 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-00604, ORA-08102, ORA-12012, ORA-08102 Oracle Responder citando



Anuncios



varios escribió:
Me devuelve:

INDEX_NAME: I_JOB_NEXT
TABLE_NAME: JOB$
TABLE_OWNER: SYS


Ahora debes eliminar y volver a crear el índice corrupto I_JOB_NEXT, antes de nada debes hacer copia de seguridad de la base de datos, tanto un export (copia lógica) como un RMAN o copia física de los ficheros.

Ejecuta la siguiente consulta que te devolverá todos los índices de la tabal JOB$ y todos los datos de los índices:

Código:

select ai.index_name Nombre, ai.index_type Tipo, ai.uniqueness Unico,
   substr(ic.column_name, 1, 30) Columna, ic.column_position Posicion,
    ai.compression Compresion, ai.status Estado, ai.secondary Secundario,
    ai.generated Generado, ic.descend Orden, ai.table_owner Propietario_Tabla,
    ic.index_owner Propietario_Indice, ic.table_name Nombre_Tabla,
    ai.tablespace_name Tablespace
from all_ind_columns ic, all_indexes ai
where ai.index_name = ic.index_name and ai.table_name = 'JOB$'


Si no estás seguro de cómo volver a crear el índice utiliza alguna herramienta como TOAD que te mostrará la consulta SQL necesaria para crear el índice.

En el caso del índice I_JOB_NEXT, para eliminarlo y volver a crearlo, ejecuta estas dos consultas:

Para eliminarlo:

Código:

drop index sys.i_job_next;


Para volver a crearlo:

Código:

create index i_job_next on job$ (next_date);


Con lo anterior de te debería solucionar el problema.
MensajePublicado:
Mie Jun 22, 2011 8:05 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: [RESUELTO]: ORA-00604, ORA-08102, ORA-12012, ORA-08102 Responder citando



Anuncios



alonsojpd escribió:
Ahora debes eliminar y volver a crear el índice corrupto I_JOB_NEXT, antes de nada debes hacer copia de seguridad de la base de datos, tanto un export (copia lógica) como un RMAN o copia física de los ficheros.

Ejecuta la siguiente consulta que te devolverá todos los índices de la tabal JOB$ y todos los datos de los índices:

Código:

select ai.index_name Nombre, ai.index_type Tipo, ai.uniqueness Unico,
   substr(ic.column_name, 1, 30) Columna, ic.column_position Posicion,
    ai.compression Compresion, ai.status Estado, ai.secondary Secundario,
    ai.generated Generado, ic.descend Orden, ai.table_owner Propietario_Tabla,
    ic.index_owner Propietario_Indice, ic.table_name Nombre_Tabla,
    ai.tablespace_name Tablespace
from all_ind_columns ic, all_indexes ai
where ai.index_name = ic.index_name and ai.table_name = 'JOB$'


Si no estás seguro de cómo volver a crear el índice utiliza alguna herramienta como TOAD que te mostrará la consulta SQL necesaria para crear el índice.

En el caso del índice I_JOB_NEXT, para eliminarlo y volver a crearlo, ejecuta estas dos consultas:

Para eliminarlo:

Código:

drop index sys.i_job_next;


Para volver a crearlo:

Código:

create index i_job_next on job$ (next_date);


Con lo anterior de te debería solucionar el problema.



Muchísimas gracias, ya se ha solucionado, he ejecutado las dos últimas consultas en SQLPlus eliminando y volviendo a crear el índice y ya no aparecen errores en el Alert.log ni se crean ficheros .trc.
MensajePublicado:
Mie Jun 22, 2011 8:07 pm
Top of PageVer perfil de usuario
elopezch
Usuario


Registrado: Jul 23, 2012
Mensajes: 1

Asunto: Ayuda urgente error Responder citando

Hola tengo ese mismo problema con una BD 10g.

Ya ejecuté las consultas y me devolvió que el objeto con problemas es: OBJ$, del esquema de SYS.

Que hago para solucionarlo??!!!

Gracias
MensajePublicado:
Lun Jul 23, 2012 11:43 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A