Problemas con arranque de Oracle XE 11g luego de apagado incorrecto de Windows

En esta profesión, los pequeños problemas que te pueden hacer perder horas y horas de productividad están a la orden del día, te hacen darte cuenta de cuan valioso es el tiempo, y que tan rápido y fácil te puedes desviar de los plazos previstos.

Uno de esos problemas se me presentó con una base de datos Oracle XE 11g que dejó de funcionar luego de que el sistema operativo Windows 7 en el que estaba instalado se reinició varias veces por problemas con un teclado. Investigando sobre el tema pude llegar a una solución, la misma se recopila en los siguientes sucesos cronológicos que espero sean de utilidad.

Una vez reparado el problema del hardware y reiniciado el equipo, pude constatar que era imposible conectarse con cualquier usuario al motor de base de datos mediante sqlplus, ya que el mismo tiraba el siguiente mensaje de error: ORA-12528: TNS:listener: all appropriate instances are blocking new connections.
  1. Investigando sobre el mensaje de error que generaba el motor de base de datos encontré que el mismo se debía a que la instancia no se había iniciado, motivo por el cual el listener era incapaz de ubicar la base de datos. Para corregir este problema solo fue necesario editar el archivo listener.ora del directorio C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN y agregarle la siguiente directiva en la sección SID_LIST_LISTENER:
    (SID_DESC =
          (GLOBAL_DBNAME = XE)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (SID_NAME = XE)
        )
    
    Quedando el archivo como sigue:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = XE)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (SID_NAME = XE)
        )
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = pctest)(PORT = 1521))
        )
      )
    
    DEFAULT_SERVICE_LISTENER = (XE)
    
  2. Sin embargo, el problema de conexión continuaba. Al tratar de establecer conexión a la base de datos con el usuario sysdba mediante la herramienta sqlplus el motor generaba los siguientes errores:
    C:\> sqlplus /nolog
    
    SQL> conn as sysdba
    ...
    ORA-28056: Writing audit records to Windows Event Log failed
    ORA-01031: insufficient privileges tips
    
  3. Luego de buscar en Internet pude dar con el origen del problema y su respectiva solución en éste artículo y en éste otro, que consistía básicamente en limpiar los logs de eventos de las aplicaciones que en teoría podían estar llenos. Para ello había que acceder a Panel de Control -> Herramientas Administrativas -> Visor de Eventos, sin embargo, al intentar abrir la herramienta la misma desplegaba también un error informando que el Registro de Eventos de Windows no funcionaba.

  4. Se intentó levantar el servicio Registro de Eventos de Windows en la ventana Panel de Control -> Herramientas Administrativas -> Servicios, pero la herramienta generó de igual manera un error indicando que no podía arrancar el servicio por otros motivos. El error fue el siguiente:
    Windows could not start the Windows Event Log service on Local Computer.
    
    Error 4201: The instance name passed was not recognized as valid by a WMI data provider.
    
  5. Buscando el error anterior finalmente se pudo encontrar el origen de todo este despelote y la solución final documentada de forma excelente aquí. En resumen, la solución real consistía en dirigirse al directorio C:\Windows\System32\LogFiles\WMI, hacer clic derecho sobre la carpeta RtBackup, ir a Propiedades, clic en la pestaña Seguridad, luego hacer clic en el botón Editar, en la siguiente ventana presionar el botón Agregar para especificar el grupo SYSTEM al que luego le asignamos el permiso Control total. Se guardan todos los cambios, se aceptan los mensajes y finalmente se reinicia el equipo para que los cambios tomen efecto.

    Luego de lo anterior, tanto la herramienta Visor de Eventos de Windows como el motor de base de datos Oracle XE 11g volvieron a funcionar correctamente.

En fin, nunca me quedó claro porqué se presentó el error en el registro de eventos de Windows, pero lo bueno es que en esta ocasión se tuvo suerte y se pudo restablecer el equipo, en contrapartida a lo que me sucedió hace pocas semanas atrás cuando ya no hubo opción y se tuvo que proceder con la tediosa reinstalación, pero eso es otra historia.

Fuentes

Comentarios

Entradas populares