Comprobación estado general base de datos Oracle








Muchas veces cuando entramos a un sistema por primera vez no sabemos muy bien como reconocerlo, y empezar a mirarlo...
Lo primero que yo hago es un ps -ef | grep ora_pmon a fin de ver las bases de datos que hay corriendo sobre ese host, en mi caso tenemos:
host110> ps -ef | grep pmon
orauser1 25453     1  0  Apr 14  ?        225:49 ora_pmon_orcl1
orauser2  1915     1  0  Aug  9  ?        213:09 ora_pmon_orcl2
orapbf  6091     1  0  Apr 27  ?        90:00 ora_pmon_pbf
orauser3  8221     1  0  Jun 15  ?        76:55 ora_pmon_orcl3
orafi2 11802     1  0  Jun 13  ?        17:04 ora_pmon_fi2
orauser4 12982     1  0  Jun 15  ?        207:43 ora_pmon_orcl4
oragt4 11493     1  0  Mar  9  ?        119:28 ora_pmon_gt4
oraoq0 28195     1  0  Sep 23  ?         3:53 ora_pmon_OQ0
oraod0   653     1  0  Sep 23  ?         4:02 ora_pmon_OD0
oracle 21760     1  0  Sep 23  ?         0:54 ora_pmon_gh
oracle 25147 22868  1 17:11:29 pts/1     0:00 grep ora_pmon
al cual habría que quitar la última línea por ser el eco de la consulta... lo cual podríamos hacer así:
host110> ps -ef | grep ora_pmon | grep -v grep
orauser1 25453     1  0  Apr 14  ?        225:49 ora_pmon_orcl1
orauser2  1915     1  0  Aug  9  ?        213:09 ora_pmon_orcl2
orapbf  6091     1  0  Apr 27  ?        90:00 ora_pmon_pbf
orauser3  8221     1  0  Jun 15  ?        76:55 ora_pmon_orcl3
orafi2 11802     1  0  Jun 13  ?        17:04 ora_pmon_fi2
orauser4 12982     1  0  Jun 15  ?        207:43 ora_pmon_orcl4
oragt4 11493     1  0  Mar  9  ?        119:28 ora_pmon_gt4
oraoq0 28195     1  0  Sep 23  ?         3:53 ora_pmon_OQ0
oraod0   653     1  0  Sep 23  ?         4:02 ora_pmon_OD0
oracle 21760     1  0  Sep 23  ?         0:54 ora_pmon_gh
Las fechas que aparecen, son en las que se levantó la BBDD, si fuera de hoy nos aparecería la hora y si fuese de mas del año pasado sólo nos diría el año....
De esta forma tenemos una idea de cuando se levantaron.....
Ahora bien: ¿Están levantadas todas las de deberían o hay alguna BBDD caída? Para responder a esto lo mejor es localizar el fichero oratab que siempre estará en la ruta /etc/oratab para todas las distribuciones de UNIX salvo para Solaris que está en /var/opt/oracle
# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl1:/opt/oracle/product/10.2.0/db_1:Y
orcl2:/opt/oracle/product/10.2.0/db_1:Y
pbf:/opt/oracle/product/10.2.0/db_1:Y
orcl3:/opt/oracle/product/10.2.0/db_1:Y
fi2:/opt/oracle/product/10.2.0/db_1:Y
orcl4:/opt/oracle/product/11.2.0/db_1:N
gh5:/opt/oracle/product/11.2.0/db_1:N
OD0:/opt/oracle/product/11.2.0/db_1:N
OQ0:/opt/oracle/product/12.2.0/db_1:Y
gt4:/opt/oracle/product/13.2.0/db_1:Y
como se puede ver es una tabla separada por ":" los campos son: $ORACLE_SID seguido del $ORACLE_HOME y por último y Y/N significa si la BBDD levanta cuando inicie el sistema operativo... (Si hemos tenido un reinicio de la máquina habrá levantar manualmente estas bases de datos...
¿Coincide el fichero oratab con el ps -ef que hemos hecho antes?, si la respuesta es negativa puede ser que alguna base de datos no esté levantada... y quizá debería..
Otra cosa que podemos hacer es ver si la BBDD es un RAC o no. Cuando hacemos nuestro famoso 'ps -ef' podemos ver en el caso del RAC que la base de datos se llama ORCL001, es decir XXXX001 y además tiene otra BBDD llamada +ASM1 que se encarga del manejo de los discos y la gestión del almacenamiento... esto es un indicio, pero no una evidencia...

usodbms-host0019bbdd > ps -ef | grep pmon
usosasm  4860     1  0  Jun 27  ?        43:02 asm_pmon_+ASM1
usodbms  5171     1  0  Jun 27  ?        100:53 ora_pmon_ORCL001
usodbms 27508 27492  0 18:04:33 pts/0     0:00 grep pmon

Para cerciorarnos lo mejor es entrar en la BBDD y hacer:

usodbms-euhuxb0019fgbbd > sqlplus " / as sysdba "

SQL*Plus: Release 11.2.0.4.0 Production on Vie Sep 29 18:15:10 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> set linesize 190
SQL> select INSTANCE_NAME, HOST_NAME, VERSION, STARTUP_TIME from gv$instance;

INSTANCE_NAME    HOST_NAME           VERSION           STARTUP_
---------------- ------------------- ----------------- --------
ORCL001         host0019bbdd         11.2.0.4.0        27/06/17
ORCL002         host0020bbdd         11.2.0.4.0        28/06/17

Aquí podemos ver los nombres de las dos instancias del RAC y los host sobre los que están corriendo.
Otra cosa que suelo mirar es si han tenido o están teniendo algún tipo de error, para eso podemos ver el alert.log. la ruta del fichero se puede ver haciendo:
SQL> show parameter background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /oracle/db/diag/rdbms/orcl/orcl/trace
entonces hacemos:

[oracle@wcp12cr2 ~]$ cd /oracle/db/diag/rdbms/orcl/orcl/trace
[oracle@wcp12cr2 trace]$ ls -ltr aler*
-rw-r-----. 1 oracle oinstall 187805 Sep 29 10:05 alert_orcl.log

Así encontramos el nombre del fichero alert, y luego para ver los últimos registros podemos hacer:
[oracle@wcp12cr2 trace]$ tail -200f alert_orcl.log
o bien para ver los errores que se han producido:
[oracle@wcp12cr2 trace]$ tail -200 alert_orcl.log | grep ORA-
ORA-27037: unable to obtain file status
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/db/oradataCC"F/orcl/control01.ctl'
ORA-27037: unable to obtain file status
ORA-205 signalled during: ALTER DATABASE   MOUNT...
ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...
Otra cosa que podemos mirar son los listeners que hay corriendo sobre la máquina:
[oracle@wcp12cr2 admin]$ ps -ef | grep tns
oracle    3141     1  0 10:12 ?        00:00:00 /oracle/db/ohome/bin/tnslsnr LISTENER -inherit
oracle    3146  2663  0 10:12 pts/1    00:00:00 grep tns
Cuya configuración estará en la ruta en el fichero listener.ora como se puede ver mas abajo:
[oracle@wcp12cr2 admin]$ cd $ORACLE_HOME/network/admin
[oracle@wcp12cr2 admin]$ ls -ltr
total 20
-rw-r--r--. 1 oracle oinstall  407 Jan 19  2012 shrept.lst
drwxr-xr-x. 2 oracle oinstall 4096 Nov 11  2015 samples
-rw-r--r--. 1 oracle oinstall  172 Nov 11  2015 sqlnet.ora
-rw-r--r--. 1 oracle oinstall  314 Nov 11  2015 listener.ora
-rw-r-----. 1 oracle oinstall  305 Nov 11  2015 tnsnames.ora
Para ver qué sistema operativo está utilizando la máquina haremos:
host110> uname -a
HP-UX host110 B.11.31 U ia64 1665298120 unlimited-user license

Comentarios

Entradas populares de este blog

Ampliar tablespace Oracle

Oracle máximo de sesiones

Bloqueos en Oracle