26 dic 2007

Online Diagnostic sobre AIX 4.3

Debido a que mi base de datos Oracle 8i no puede iniciar de forma normal he tenido que realizar distintos chequeos. Con grandes posibilidades que algún datafile este corrupto me he dispuesto a chequear el hardware del equipo para descartar un problema a nivel file system, pero ya que estaba cheque toda la máquina ;-)

Como primer paso necesito ubicar la particion en donde se encuentra los datafiles, controlfile y todo lo que haga referencia al motor

user> echo $ORACLE_BASE
/u01/app/oracle # ubicacion de del producto y generalmente las configuraciones initSID.ora

Desde SqlPlus levanto la instancia solamente montandola o sea abriendo los controlfile.

SQL> select NAME from v$controlfile;

NAME
-------------------------- # Obtengo el path de los controlfiles
/storage/oradata/SID/control01.ctl
/storage/oradata/SID/control02.ctl
/storage/oradata/SID/control03.ctl

SQL> select NAME from v$datafile;

NAME
-------------------------- # Path de los datafiles
/tmp/system01.dbf -> yo tambien me pregunto que hace ahi !!!
/storage/oradata/SID/tools01.dbf
/storage/oradata/SID/rbs01.dbf
/storage/oradata/SID/temp01.dbf
/tmp/users02.dbf
/storage/oradata/SID/indx01.dbf
/storage/oradata/SID/drsys01.dbf
/storage/oradata/SID/des201.dbf

SQL> select MEMBER from v$logfile

MEMBER
-------------------------- # Path a la ubicación de los redolog file.
/storage/oradata/SID/redo03.log
/storage/oradata/SID/redo02.log
/storage/oradata/SID/redo01.log
/storage/oradata/SID/redo01_1.log
/storage/oradata/SID/redo02_2.log
/arclog/redo4.log
/arclog/redo5.log

Ya con todo esto esto con un fsck -p /storage /arclog /tmp debería ser
suficiente. Al no acusar problemas voy a pasar a algo mas de bajo nivel.

AIX provee diagnósticos Online y Standalone, este ultimo por el momento no lo tocare
ya que es mayormente utilizado cuando las herramientas o sistema operativo no es instalado,
el cual no es mi caso.
Dentro de los Online Diagnostics existen tres subcategorias
  1. Service Mode.
  2. Current Mode.
  3. Maintenance Mode.
El recomendado es el primero por ser mas completos que el resto, este puede chequear todos los recursos del sistema exceptuando los adaptadores SCSI y el disco usado para la paginación, la memoria y el procesador es verificado durante el POST. Los pasos para ejecutar el Service Mode Diagnostic son los siguientes:
  1. Apagar el equipo shutdown -F
  2. Retirar todos los medios extraibles (CD,tape,etc)
  3. Encendemos el equipo y esperamos que se realice el POST, seguida a la aparicion del led indicador del floppy presionamos F6 o el numero 6. Lo que indica que el se utilizara el modo de diagnostico.
  4. Ingresamos la validacion y seguimos las instrucciones.
  5. Seleccionamos Diagnostic Routines->System Verification->All Resources, esto tarda algunos minutos pero nos verifica todo los recursos de hardware del equipo. Si todo sale bien (como en mi caso :-D ) con Esc+3 volvemos al menu Diagnostic Routines
  6. Si queremos realizar una prueba completa seleccionamos Diagnostic Routines->Problem Determination->All Resources para que realice un test al sistema y analice el errorLog.
Finalizada la prueba no he obtenido ningún resultado negativo lo que me indica que mi hard se encuentra en buenas condiciones.
Existen mas opciones y test para realizar por lo que recomiendo seguir (yo ya lo hice) el capitulo 8 y 9 de la guia del usuario en donde se encuentra el procedimiento de verificación de sistema (paso a paso) y el procedimiento para la determinación de problemas de hardware.

21 dic 2007

Recuperando mi Base de Datos Oracle8.1.7

Hoy dia me he propuesto recuperar de alguna manera la base de datos en un servidor
oracle8i. Afortunadamente es de pruebas .... pero que mejor oportunidad que prepararse para lo peor antes de que suceda ;-).
Voy a empezar describiendo el problema:

1° - Comienzo verificando si la intancia esta arriba

xxx > ps -ef | grep smo

usr 21160 1 0 09:23:47 - 0:00 ora_smon_SID

2° - Inicio sqlplus como sysdba.

xxx > sqlplus '/as sysdba'

3° - Paro la base y todos los procesos que hacen a la instancia

SQL> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.

4° - Al no estar funcionando la base completamente ahora pruebo levantarla.

SQL> startup
ORACLE instance started.

Total System Global Area 72429460 bytes
Fixed Size 73620 bytes
Variable Size 55406592 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

5° - Mato todos los procesos con shutdown abort y comienzo a levantar la base por partes para ver en que momento se produce el error.

SQL> startup nomount # Solo inicializo los procesos de la instancia.
ORACLE instance started.

Total System Global Area 72429460 bytes
Fixed Size 73620 bytes
Variable Size 55406592 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes

SQL> startup force mount # Reinicio la instancia (procesos) y abro los controlfiles
. Lo que tambien se puede obtener con un 
SQL> alter database open;

ORACLE instance started

Total System Global Area 72429460 bytes
Fixed Size 73620 bytes
Variable Size 55406592 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.

6° - Al tratar de levantar la instacia completamente ( procesos, controlfiles, datafiles) vuelvo a
obtener el mismo error. En este punto puedo pensar que el error se produce cuando se leen los controlfiles o el recover datafile 'datafile/path' until cancel anterior dejo mas inconvenientes que soluciones. Por el momento me pongo a investigar el error anterior.