¿Qué pasa si se borra el ORACLE_HOME?

Hace poco, alguien me preguntó qué pasaba si se borraban los binarios que se guardan en el ORACLE_HOME mientras está la instancia de la base de datos arriba. Aquí desarrollo lo que puede pasar cuando se hace algo de esto.

Primero hay que ver qué instancias se tienen arriba en el servidor actual. Aquí se puede ver que en mi laboratorio tengo dos, una correspondiente al ASM y otra correspondiente a una base de datos llamada orcl:

oracle|laboratory|orcl$ ins
SINCE INSTANCE USER
13:30 +ASM     grid
16:16 orcl     oracle

Con base en esto, se consultan los procesos de sistema operativo que se tienen corriendo en el servidor que pertenecen a la base de datos orcl:

oracle|laboratory|orcl$ ps -fe | grep orcl
oracle 10446 1 0 16:16 ? 00:00:00 ora_pmon_orcl
oracle 10448 1 0 16:16 ? 00:00:00 ora_psp0_orcl
oracle 10468 1 2 16:16 ? 00:00:01 ora_vktm_orcl
oracle 10472 1 0 16:16 ? 00:00:00 ora_gen0_orcl
oracle 10474 1 0 16:16 ? 00:00:00 ora_diag_orcl
oracle 10476 1 0 16:16 ? 00:00:00 ora_dbrm_orcl
oracle 10478 1 0 16:16 ? 00:00:00 ora_dia0_orcl
oracle 10480 1 0 16:16 ? 00:00:00 ora_mman_orcl
oracle 10482 1 0 16:16 ? 00:00:00 ora_dbw0_orcl
oracle 10484 1 0 16:16 ? 00:00:00 ora_lgwr_orcl
oracle 10486 1 0 16:16 ? 00:00:00 ora_ckpt_orcl
oracle 10488 1 0 16:16 ? 00:00:00 ora_smon_orcl
oracle 10490 1 0 16:16 ? 00:00:00 ora_reco_orcl
oracle 10492 1 0 16:16 ? 00:00:00 ora_rbal_orcl
oracle 10494 1 0 16:16 ? 00:00:00 ora_asmb_orcl
oracle 10496 1 1 16:16 ? 00:00:00 ora_mmon_orcl
oracle 10498 1 0 16:16 ? 00:00:00 ora_mmnl_orcl
...

Entonces, al ir al ORACLE_HOME, se pueden ver los distintos directorios y archivos que lo componen:

oracle|laboratory|orcl$ cd $ORACLE_HOME
oracle|laboratory|orcl$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1
oracle|laboratory|orcl$ ls
apex       cfgtoollogs css    deinstall   EMStage instantclient jdev      log     nls    opmn        owb     racg      slax         suptools        usm
assistants clone       ctx    demo        has     inventory     jdk       md      oc4j   oracore     owm     rdbms     sqldeveloper sysman          utl
bin        config      cv     diagnostics hs      j2ee          jlib      mesg    odbc   oraInst.loc perl    relnotes  sqlj         timingframework wwg
ccr        crs         dbs    dv          ide     javavm        ldap      mgw     olap   ord         plsql   root.sh   sqlplus      ucp             xdk
cdata      csmig       dc_ocm emcli       install jdbc          lib       network OPatch oui         precomp scheduler srvm         uix

Entonces, ahora hay que revisar qué procesos están ocupando un porcentaje importante de memoria y procesador, así como ver cuáles de ellos tienen algo relacionado con los archivos del ORACLE_HOME. Aquí de momento, se puede ver de inicio al 10468 relacionado con un archivo ejecutable llamado oracle y que reside en el ORACLE_HOME. El 6371 no se toma en cuenta porque este pertenece al usuario grid, por lo que su archivo oracle del Grid Home:

oracle|laboratory|orcl$ top

top - 16:18:40 up 2 days,  4:20,  5 users,  load average: 0.72, 0.49, 0.36
Tasks: 230 total,   1 running, 229 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  0.4%sy,  0.0%ni, 67.7%id, 31.6%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   6123156k total,  2068792k used,  4054364k free,   165572k buffers
Swap:  6290428k total,        0k used,  6290428k free,  1176108k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6371 grid      -2   0 1306m  14m  12m S  3.0  0.2   4:27.92 oracle
10468 oracle    -2   0 2045m  16m  14m S  2.7  0.3   0:03.15 oracle
 3146 root      20   0 50192 3008 2240 D  1.0  0.0   0:57.85 devkit-power-da
  421 root      20   0     0    0    0 D  0.3  0.0   0:08.38 jbd2/sda1-8
 3314 oracle    20   0  204m 1392  980 S  0.3  0.0   6:31.49 VBoxClient
 3779 grid      20   0  679m  40m  16m S  0.3  0.7  11:03.53 oraagent.bin
 4132 oracle    20   0  444m  19m  11m S  0.3  0.3   1:52.90 gnome-terminal
10498 oracle    20   0 2047m  24m  21m S  0.3  0.4   0:00.07 oracle
10651 oracle    20   0 15172 1344  940 R  0.3  0.0   0:00.06 top
    1 root      20   0 19356 1556 1228 S  0.0  0.0   0:03.13 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:15.69 ksoftirqd/0
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.54 watchdog/0
    7 root      20   0     0    0    0 S  0.0  0.0   1:34.92 events/0
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.01 khelper
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns
   14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr
   15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm
   16 root      20   0     0    0    0 S  0.0  0.0   0:00.70 sync_supers

 

Entonces, como estamos ya ubicados en el ORACLE_HOME, podemos buscar dicho archivo y se ven varios que tienen este nombre:

oracle|laboratory|orcl$ find * -name 'oracle'
apex/utilities/oracle
bin/oracle
oc4j/j2ee/home/database/j2ee/jta/oracle
oc4j/j2ee/home/database/webservices/reliability/oracle
owb/rtasst/jrtaudit/oracle
owb/rtp/jrtaudit/oracle
owb/jrt/default-web-app/WEB-INF/classes/com/oracle
owb/wf/java/oracle

Ahora, el momento de la verdad, vamos a borrar todos los archivos y directorios que se tienen en la ubicación donde estamos parados, es decir, el ORACLE_HOME, borrémoslos y veamos qué pasa:

oracle|laboratory|orcl$ rm -rf *
oracle|laboratory|orcl$

Después de esto, consultaré las instancias que están ejecutándose aún en el servidor, aún se ve el mismo comportamiento inicial así como sus procesos:

oracle|laboratory|orcl$ ins
SINCE INSTANCE USER
13:30 +ASM     grid
16:16 orcl     oracle
oracle|laboratory|orcl$ ps -fe | grep orcl
oracle 10446 1 0 16:16 ? 00:00:00 ora_pmon_orcl
oracle 10448 1 0 16:16 ? 00:00:00 ora_psp0_orcl
oracle 10468 1 2 16:16 ? 00:00:05 ora_vktm_orcl
oracle 10472 1 0 16:16 ? 00:00:00 ora_gen0_orcl
oracle 10474 1 0 16:16 ? 00:00:00 ora_diag_orcl
oracle 10476 1 0 16:16 ? 00:00:00 ora_dbrm_orcl
oracle 10478 1 0 16:16 ? 00:00:00 ora_dia0_orcl
oracle 10480 1 0 16:16 ? 00:00:00 ora_mman_orcl
oracle 10482 1 0 16:16 ? 00:00:00 ora_dbw0_orcl
oracle 10484 1 0 16:16 ? 00:00:00 ora_lgwr_orcl
oracle 10486 1 0 16:16 ? 00:00:00 ora_ckpt_orcl
oracle 10488 1 0 16:16 ? 00:00:00 ora_smon_orcl
oracle 10490 1 0 16:16 ? 00:00:00 ora_reco_orcl
oracle 10492 1 0 16:16 ? 00:00:00 ora_rbal_orcl
oracle 10494 1 0 16:16 ? 00:00:00 ora_asmb_orcl
oracle 10496 1 0 16:16 ? 00:00:00 ora_mmon_orcl
oracle 10498 1 0 16:16 ? 00:00:00 ora_mmnl_orcl
...

Pero, ¡esperen! Después de un pequeño lapso de tiempo, cuando el proceso requiere de acceder al archivo que ya hemos visto y al no encontrarlo, se viene abajo la instancia orcl. Se puede observar que ¡ya no está!

oracle|laboratory|orcl$ ins
SINCE INSTANCE USER
13:30 +ASM     grid

Y luego, cuando se consultan los procesos de dicha instancia, se puede observar que tampoco están, se vinieron todos abajo también:

oracle|laboratory|orcl$ ps -fe | grep orcl
oracle 10804 10409 0 16:23 pts/0 00:00:00 grep orcl
oracle|laboratory|orcl$

En este caso, vimos que hay una relación importante entre procesos de la instancia de base de datos y el archivo oracle, pero hay más archivos que pueden estar relacionados con procesos. Así, tengan un respaldo del ORACLE_HOME y ¡no lo borren!

Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: