Colección de citas famosas - Diccionario de frases chinas - ¿Qué sucede cuando una consulta de base de datos Oracle encuentra el error ora-1578? ORA-01578 "El bloque de datos ORACLE está dañado

¿Qué sucede cuando una consulta de base de datos Oracle encuentra el error ora-1578? ORA-01578 "El bloque de datos ORACLE está dañado

Si no puede resolver el problema usted mismo, también puede comunicarse con el equipo profesional de reparación de bases de datos de MACLEAN.

El error ORA-01578 es un error físico común de corrupción de bloques defectuosos en Oracle. Después de 10g, es posible recuperar bloques defectuosos en línea mediante copias de seguridad completas y registros de archivo, siempre que la pista donde se encuentra el bloque de datos todavía esté físicamente disponible.

La siguiente es una solución al error ORA-01578 en ausencia de copias de seguridad adecuadas, siempre que se pueda tolerar la pérdida de datos en la ubicación del bloque defectuoso:

SQL & gtexec DBMS_STATS. REUNIR _ BASE DE DATOS _ ESTADÍSTICAS

Inicie DBMS_STATS. GATHER _ DATABASE _ STATS end;

*

Error en la línea 1:

ORA-01578: bloque de datos ORACLE dañado (archivo n.º 4, bloque n.º 870212 )

ORA-01110: archivo de datos 4:

/s 01/oradata/g 10r 25/datafile/o 1_MF_users_7 ch 7d 4 NX_. dbf

ORA-06512: en "Sistema DBMS_STATS", línea 15188

ORA-06512: en "Sistema DBMS_STATS", línea 15530

ORA- 06512: en "System DBMS_STATS", línea 15674

ORA-06512: en "System DBMS_STATS", línea 15638

ORA-06512: en la línea 1

Utilice el Comando RMAN blockreocver ​​para intentar modificar los bloques físicos defectuosos:

RMAN> archivo de datos blockrecover 4 bloques 870212;

La recuperación del bloque comenzó el 8 de noviembre de 2002 65438+ Inicio

Canal ORA_DISK_1: Bloques restaurados desde la entrada de respaldo 1

Bloques

handle =/s 01/flash_recovery_area/g 10r 25/backupset /2012_08_06/o 1_MF_nnndf_tag 20120806t 075500_81zd 4 njn_. bkp

tag=tag20120806T075500

Canal ORA_DISK_1: recuperación del bloque completada, tiempo necesario: 00:01:16

Iniciar recuperación de medios

Archivo

La secuencia 467 del hilo de registro 1 ya existe como un archivo en el disco

/s 01/flash _ recovery _ area/g 10r 25/archive log/2012 _ 10 _ 31/ o 1_MF_1_467_893571cm_. arc

Archivos

La secuencia 468 del hilo de registro 1 ya existe como un archivo en el disco

/s 01/flash_recovery_area/g 10r 25/ archive log/2012 _ 10 _ 31/o 1 _ MF _ 1 _ 468 _ 893 PC 84 l _. arc

Archivos

La secuencia 469 del hilo de registro 1 ya existe como un archivo en el disco

/s 01/flash_recovery_area/g 10r 25/ archive log/2012 _ 11 _ 01/o 1 _ MF _ 1 _ 469 _ 894 zs bym _.

arc

Archivos

La secuencia 470 del hilo de registro 1 ya existe como un archivo en el disco

/s 01/flash_recovery_area/g 10r 25/ archive log/2012_11_01/ o1_MF_1_470_896 b944 y_. Arco

4_. Arco

RMAN-00571: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

RMAN-00569:= = = = = = = = = = = = = = = = = = = = La pila de mensajes de error es la siguiente = = = = = = = = = = = = = = = = = =

RMAN-00571:= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

RMAN-03002: El comando de recuperación de bloque falló el 08/11/2012 06:19:40

RMAN-06053: No se puede hacerlo debido a que faltan registros Realizando recuperación de medios

RMAN-06025: No se encontró que se restaurara la copia de seguridad del subproceso de registro 1 seq 466 SCN 27762151 bajo

RMAN-06025: No se encontró que se restaurara el subproceso de registro 1 seq 465 Copia de seguridad de SCN 27762145 bajo

RMAN-06025: Subproceso de registro 1 secuencia 464 secuencia 464 bajo SCN 27762142 no encontrado para ser restaurado

Blockrecover no puede tener éxito debido a la falta de registros de archivo necesarios, por lo que necesitamos encontrar otro forma.

Primero, confirme a qué segmento pertenece el bloque de datos.

Si se trata de datos de índice, se pueden reconstruir completamente sin pérdida de datos, pero si se trata de datos de tabla, debe tolerar la pérdida de datos en bloques defectuosos:

Nombre del espacio de tabla col de SQL y gta20

Tipo de segmento de columna SQL y gta10

Nombre del segmento de columna SQL y gta20

Propietario de la columna SQL y gta8

SQL y gt seleccionar nombre del espacio de tabla, segmento tipo, propietario, nombre del segmento

2 de dba_extents

3 donde file id = &fileid

4 y entre &block_id y block_id + bloques block id-1;

Ingrese el valor de fileid: 4

Antiguo 3: donde file ID = & ampfileid

Nuevo 3: donde file ID = 4

Ingrese el valor de blockid: 870212

Cuatro antiguos: y & amp ID de bloque e ID de bloque + ID de bloque entre bloques - 1

Nuevo 4: 870212-1 entre ID de bloque y ID de bloque + bloque

Nombre del espacio de tabla segmento_TY propietario nombre_del segmento

- - - -

Tabla de usuarios SYS CORRUPT_ME

Recuento de SQL y gtselect ( *) de CORRUPT_ME;

seleccione el recuento (*) de CORRUPT_ME

*

Error en la línea 1:

ORA-01578: bloque de datos ORACLE dañado (archivo n.° 4, bloque n.° 870212)

ORA-01110: archivo de datos 4:

/s 01/oradata/g 10r 25/datafile /o 1 _ MF _ usuarios _ 7 ch 7d 4 NX _. dbf

Tabla de análisis SQL & gt estructura de verificación corrupt_me;

Tabla de análisis estructura de verificación corrupt_me

*

Error en la línea 1:

ORA-01498: Error en la comprobación del bloque: consulte el archivo de seguimiento

SQL y gtoradebug setmypid

Informe procesado.

Nombre del archivo de seguimiento de SQL y gtoradebug

/s 01/admin/g 10r 25/udump/g 10r 25_ora_19749

Relativo al bloque corrupto para dba. : 0x010d4744 (Archivo 4, bloque 870212)

Encabezado de error encontrado al leer el búfer

Datos en bloque incorrecto:

Tipo: 6 formato: 2 rdba: 0x000d4744

Último SCN modificado: 0x 0000.0000000 seq: 0x ff flg: 0x 04

repuesto 1:0x 0 repuesto 2:0x 0 repuesto 3:0x 0

Valor de coherencia en la cola: 0x000006ff

Verifique el valor en el encabezado del bloque: 0x6323

Calcule la suma de comprobación del módulo: 0x0

Releyendo rdba: 0x010d4744 (archivo 4, bloque 870212) encontró los mismos datos corruptos

*** 2012-11-08 06:23:12.564

Escaneo de tabla: Segmento: Archivo#4Bloque#870211

Omitir fragmento dañadoFile#4Block#870212

*** 2012-11-08 06:23:36.955

Escaneo de tabla: Segmento: Archivo#4Block#870211

Omitir bloque dañado Archivo#4Block#870212

Omitir bloque dañado en rdba: 0x010d4744

Utilice 10231 nivel 10 para evitar errores ORA-01578 y copie la tabla de bloques defectuosos original:

Evento de configuración de sesión de SQL & gtalter "10231 contexto de nombre de seguimiento para siempre, nivel 10";

La sesión ha cambiado.

SQL & gtselect count(*) de CORRUPT _ ME;

Count(*)

-

50857

Tabla SQL y gt corrupt_me_copy usuario del espacio de tabla creado como select * from CORRUPT_ME

La tabla ha sido creada.

Tabla de análisis SQL & gt estructura de verificación corrupt_me_copy

La tabla ha sido analizada.

Después de esto, sólo necesita cambiar el nombre de la nueva tabla a la tabla anterior y reconstruir el índice:

SQL> renombrar la tabla corrupt_me a corrupt_me_copy 1;

El La tabla ha sido cambiada.

SQL>Renombrar tabla corrupt_me_copy a corrupt_me;

La tabla ha sido cambiada.

Índice SQL y gtRebuild