El problema se solucionó después de la recreación del tablespace PSAPUNDO.
Avalados por :
Hola,
Nuestro sistema SAP está caído. Al verificar, encontré que la tablespace PSAPUNDO necesita recuperación.
SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
NOMBRE_SEGMENTO NOMBRE_TABLESPACE ESTADO
------------------------------
SISTEMA SISTEMA EN LÍNEA
etc...................
18 filas seleccionadas.
En el Registro de Alerta encontré el siguiente error:
-----------------------------------------------------------
Dom 02 Dic 19:06:21 2012
Checkpoint completado hasta RBA [0x2aae.2.10], SCN: 179359877
Dom 02 Dic 19:25:04 2012
Checkpoint incremental hasta RBA [0x2aae.2d36.0], cola de registro actual en RBA [0x2aae.2e11.0]
Dom 02 Dic 19:30:00 2012
KCF: error de escritura/apertura bloque=0x19 en línea=1
archivo=2 D:\ORACLE\SOL\SAPDATA1\UNDO_1\UNDO.DATA1
error=27072 txt: 'OSD-04008: Error de WriteFile(), no se puede escribir en el archivo
Error de O/S: (OS 33) El proceso no puede acceder al archivo porque otro proceso ha bloqueado una parte del archivo.'
Archivo de datos automático fuera de línea debido a un error de escritura en
archivo 2: D:\ORACLE\SOL\SAPDATA1\UNDO_1\UNDO.DATA1
Dom 02 Dic 19:30:01 2012
Errores en el archivo d:\oracle\sol\saptrace\ usertrace\sol_ora_5408.trc:
ORA-00376: no se puede leer el archivo 2 en este momento
ORA-01110: archivo de datos 2: 'D:\ORACLE\SOL\SAPDATA1\UNDO_ 1\UNDO.DATA1'
------------------------------------------------------------
Así que he creado otra tablespace PSAPUNDO2 y he alterado el sistema con los siguientes comandos:
SQL >create undo tablespace PSAPUNDO2 datafile 'D:\Oracle\SOL\sapdata1\undo_2\UNDO.DATA2' size 700MB;
SQL>alter system set undo_tablespace=PSAPUNDO2 scope=spfile;
He cambiado undo_management a Manual. Y aún no he eliminado la antigua tablespace PSAPUNDO,
He reiniciado
El problema se solucionó después de la recreación del tablespace PSAPUNDO.
Ok,
Esto es una especie de conjetura ya que la creación de UNDO2 falta en el registro de alerta,
Pero aquí va:
La BD no puede activar PSAPUNDO2 debido a un tipo incorrecto,
así que asumo que fue creado como un tablespace de DATOS, o la creación falló.
Dado que no es parte de DBA_DATA_FILES, es probable que la creación solo haya tenido éxito parcialmente,
porque al intentar crear UNDO3 falla, ya que especificas el archivo de datos de UNDO2 y
la BD piensa que este archivo ya pertenece a la BD (-1537), lo que significa que ingresó el nombre del archivo
en los archivos de control (V$DATAFILE), pero no logró completar la creación (por eso dba_data_files no tiene entrada).
La pregunta básica es: ¿Tienes el archivo de datos de PSAPUNDO en una copia de seguridad?
Si es así, recupéralo y los logs y habrás terminado. Limpia lo relacionado con UNDO2 y UNDO3,
misión cumplida.
En cuanto a la otra opción (recrear UNDO), aunque no estoy seguro si realmente es una opción (ya que no estoy seguro con la información proporcionada de que los segmentos de deshacer en estado de recuperación no sean necesarios):
En los viejos tiempos, con segmentos de rollback reales, necesitabas un segundo segmento de rollback para crear un tablespace adicional. Dado que las nuevas BD se crean con un tablespace UNDO en la declaración CREATE DATABASE, ya no es necesario hoy en día, pero cuando inicias una BD sin UNDO, es probable que la creación de tablespaces adicionales aún no tenga éxito hoy por esta razón.
(Debo admitir que nunca verifiqué desde la versión 10)
Entonces, si realmente es posible recuperar este sistema eliminando y reemplazando PSAPUNDO,
la forma de hacerlo sería:
- establecer la gestión de deshacer a manual
- crear un segmento de rollback clásico (puede ser RS_HELP en TS SYSTEM)
- poner en línea el segmento de rollback RS_HELP
- crear el tablespace de deshacer UNDO4 con un nombre de archivo de datos aún no utilizado.
- volver a establecer el deshacer automático en UNDO4
- establecer fuera de línea y eliminar el segmento de rollback RS_HELP
- reiniciar la BD
Si esto hace que la BD se inicie correctamente sin NINGÚN problema en el registro de alerta, al menos habrás avanzado un paso.
Luego intentaría limpiar las pruebas de UNDO2 / UNDO3.
En este punto deberías poder iniciar SAP.
Si esto funciona bien durante un tiempo, podrías considerar eliminar PSAPUNDO con cualquier opción de forzado mencionada anteriormente, pero mientras no estés seguro, no pierdas ningún redolog desde tu última copia de seguridad válida en adelante.
Una vez más, si tienes una copia de seguridad, ve por la recuperación.
Solo necesitas restaurar y recuperar PSAPUNDO.
Volker
Hola,
Adjunto el registro de alerta como referencia.
Nuestra versión de Oracle es 10g.
SQL> select status from v$instance;
STATUS
------------
ABIERTO
En cuanto a tu pregunta La base de datos puso archivos adicionales offline debido a que PSAPUNDO no estaba disponible al iniciar. Ejecuté el siguiente comando y encontré
que todos los demás archivos están en línea excepto el archivo2.
SQL> select * from dba_data_files;
NOMBRE_DE_ARCHIVO
--------------------------------------------------------------------------------
ID_DE_ARCHIVO NOMBRE_DE_TABLESPACE BYTES BLOQUES ESTADO
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
EN LINEA_
-------
D:\ORACLE\SOL\SAPDATA1\UNDO_1\UNDO.DATA1
2 PSAPUNDO DISPONIBLE
2
RECUPERAR
Todavía el problema no está resuelto.
Hola,
Creo que podría haber un problema.
Si una instancia de base de datos se bloquea, DEBE tener todo el UNDO ACTIVO disponible para poder realizar una recuperación de instancia al iniciar. De lo contrario, probablemente no se puedan ejecutar las acciones de deshacer requeridas. Por lo tanto, recomendaría enfáticamente NO eliminar el undo, a menos que esté muy seguro de que ya no es necesario.
Por lo tanto, cuando mencionaste que iniciaste la instancia, me intriga saber cómo Oracle logró hacerlo con archivos de undo sin conexión. ¿Puedes adjuntar el registro de alerta desde el último inicio hasta "Completed alter database open" y verificar el estado de la instancia desde V$INSTANCE?
También me gustaría saber si esta es la versión 10 u 11.
Y me gustaría saber si la base de datos estableció archivos adicionales sin conexión debido a que PSAPUNDO no estaba disponible al inicio.
Para que conste, creo que no podrás salirte sin restaurar y recuperar PSAPUNDO.
Si eliminas el undo que podría ser necesario para una recuperación limpia de la instancia en caso de bloqueo, es posible que no puedas abrir la base de datos nuevamente sin usar algunos parámetros de permitir corrupción, y esto podría estar completamente fuera de soporte.
Volker
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute