Estimados
tecnólogos Oracle reciban un cordial saludo nuevamente desde Guatemala, como
ustedes saben, un DBA se enfrenta diariamente a diferentes problemas con las
bases de datos que administra, problemas de performance, de IO, de red, storage,
CPU, etc., para poder encontrar la
solución a estos problemas, el DBA debe ir delimitando la causa, y es por eso
que en esta ocasión veremos una manera fácil de verificar si una base de datos
posee corrupciones.
Oracle
provee desde la versión 7.3.2, una herramienta llamada DBVERIFY la cual es
usada para lo siguiente:
- Validar corrupciones en la cabecera de un datafile
- Cada Bloque de dato dentro de un Datafile tiene un "wrapper" en el cual se encuentra metadata de dicho bloque, este wrapper también es validado en busca de corrupciones.
- Validar Consistencia en tablas e índices dentro de los datafiles.
- Desde la versión 8.1.6 también se validan todos los demás tipos de bloques, por ejemplo bloques de segmentos rollback.
Una
de las ventajas de esta herramientas es que puede ser ejecutada cuando la base
de datos está abierta, esto en ambiente de producción es muy importante pues se
evita downtime.
La
herramienta es muy sencilla de utilizar y provee los siguientes parámetros de
entrada:
FILE: nombre del datafile que se
verificará.
START: Bloque inicial
END: Bloque Final
BLOCKSIZE: Tamaño del Bloque
LOGFILE: Una archivo de log en el que se escribirá
el feedback de la operación.
FEEDBACK: Muestra detalladamente el avance del proceso.
PARFILE: Archivo de parámetro
USERID: Usuario/Constraseña
Entre las limitantes que
tiene esta herramienta están las
siguientes:
- No valida errores entre tablas e sus indices.
- Solo puede ser utilizada con datafiles, no redologs, ni controlfiles.
- dbverify puede ser usada para bases de datos en ASM, sin embargo, la base de datos debe estar abierta y el parámetro USERID debe necesariamente ser especificado.
- Los datafiles necesitan tener una extensión.
- No se pueden validar datafiles mayores a 2GB en 8.1.6 por los bugs: 710888 y 1372172.
El uso de la herramienta
es muy fácil, a continuación describo la manera de validar una base de datos
completa:
Primero obtenemos el
tamaño del bloque que se está utilizando en la base de datos mediante la
siguiente consulta:
SQL> SELECT
value FROM v$parameter WHERE name =
'db_block_size';
VALUE
-----------------------------------------------------------------
8192
Ahora continuamos realizando
un script con las sentencias necesarias para validar todos nuestros datafiles:
SET ECHO OFF
set heading off
set feedback off
spool validardb.sql
select 'dbv file=' ||file_name|| ' logfile=archivo_'||rownum||'.log blocksize=8192' from dba_data_files;
spool off
exit
Verificamos que el
archivo haya sido generado correctamente:
[oracle@soa1 ~]$ ls -ltr
-rw-r--r-- 1 oracle
oinstall 5092 Mar 8 01:25 validardb.sql
El archivo debería
quedar de la siguiente manera:
Le
damos permisos de ejecución al script creado:
[oracle@soa1
~]$ chmod 777 validardb.sql
Ejecutamos
el script:
[oracle@soa1
~]$ ./validardb.sql
DBVERIFY: Release 11.2.0.1.0 - Production on Fri Mar 8
02:33:01 2013
Copyright (c) 1982, 2009, Oracle and/or its
affiliates. All rights reserved.
Verificamos
la salida del archivo:
[oracle@soa1
~]$ ls -ltr
-rwxrwxrwx 1
oracle oinstall 1718 Mar 8 02:32 validardb.sql
-rw-r--r-- 1
oracle oinstall 729 Mar 8 02:33 archivo_2.log
-rw-r--r-- 1
oracle oinstall 726 Mar 8 02:33 archivo_1.log
-rw-r--r-- 1
oracle oinstall 809 Mar 8 02:33 archivo_3.log
-rw-r--r-- 1
oracle oinstall 739 Mar 8 02:33 archivo_4.log
-rw-r--r-- 1
oracle oinstall 736 Mar 8 02:33 archivo_5.log
-rw-r--r-- 1
oracle oinstall 738 Mar 8 02:33 archivo_6.log
-rw-r--r-- 1
oracle oinstall 734 Mar 8 02:33 archivo_7.log
-rw-r--r-- 1
oracle oinstall 740 Mar 8 02:33 archivo_8.log
-rw-r--r-- 1
oracle oinstall 735 Mar 8 02:33 archivo_9.log
-rw-r--r-- 1
oracle oinstall 729 Mar 8 02:33 archivo_10.log
-rw-r--r-- 1
oracle oinstall 733 Mar 8 02:33 archivo_11.log
-rw-r--r-- 1
oracle oinstall 726 Mar 8 02:33 archivo_12.log
-rw-r--r-- 1
oracle oinstall 732 Mar 8 02:33 archivo_13.log
-rw-r--r-- 1
oracle oinstall 728 Mar 8 02:33 archivo_14.log
-rw-r--r-- 1
oracle oinstall 738 Mar 8 02:33 archivo_17.log
-rw-r--r-- 1
oracle oinstall 729 Mar 8 02:33 archivo_16.log
-rw-r--r-- 1
oracle oinstall 732 Mar 8 02:33 archivo_15.log
Escaneamos
los archivos con extensión .log en busca de corrupción:
[oracle@soa1 ~]$ grep Failing archivo*.log
[oracle@soa1 ~]$ grep Corrupt archivo*.log
[oracle@soa1 ~]$ grep Influx archivo*.log
La
salida sería parecida a lo siguiente, en mi caso, la base de datos que estoy
usando para realizar este articulo no contiene corrupciones:
[oracle@soa1 ~]$ grep Failing archivo*.log
archivo_10.log:Total Pages Failing (Data) : 0
archivo_10.log:Total Pages Failing (Index): 0
archivo_10.log:Total Pages Failing (Seg)
: 0
archivo_11.log:Total Pages Failing (Data) : 0
archivo_11.log:Total Pages Failing (Index): 0
archivo_11.log:Total Pages Failing (Seg)
: 0
archivo_12.log:Total Pages Failing (Data) : 0
archivo_12.log:Total Pages Failing (Index): 0
archivo_12.log:Total Pages Failing (Seg) :
0
archivo_13.log:Total Pages Failing (Data) : 0
archivo_13.log:Total Pages Failing (Index): 0
archivo_13.log:Total Pages Failing (Seg)
: 0
archivo_14.log:Total Pages Failing (Data) : 0
archivo_14.log:Total Pages Failing (Index): 0
archivo_14.log:Total Pages Failing (Seg)
: 0
archivo_15.log:Total Pages Failing (Data) : 0
archivo_15.log:Total Pages Failing (Index): 0
archivo_15.log:Total Pages Failing (Seg)
: 0
archivo_16.log:Total Pages Failing (Data) : 0
archivo_16.log:Total Pages Failing (Index): 0
archivo_16.log:Total Pages Failing (Seg)
: 0
archivo_17.log:Total Pages Failing (Data) : 0
archivo_17.log:Total Pages Failing (Index): 0
archivo_17.log:Total Pages Failing (Seg)
: 0
archivo_1.log:Total Pages Failing (Data) : 0
archivo_1.log:Total Pages Failing (Index): 0
archivo_1.log:Total Pages Failing (Seg)
: 0
archivo_2.log:Total Pages Failing (Data) : 0
archivo_2.log:Total Pages Failing (Index): 0
archivo_2.log:Total Pages Failing (Seg)
: 0
archivo_3.log:Total Pages Failing (Data) : 0
archivo_3.log:Total Pages Failing (Index): 0
archivo_3.log:Total Pages Failing (Lob)
: 0
archivo_3.log:Total Pages Failing (Seg)
: 0
archivo_4.log:Total Pages Failing (Data) : 0
archivo_4.log:Total Pages Failing (Index): 0
archivo_4.log:Total Pages Failing (Seg)
: 0
archivo_5.log:Total Pages Failing (Data) : 0
archivo_5.log:Total Pages Failing (Index): 0
archivo_5.log:Total Pages Failing (Seg)
: 0
archivo_6.log:Total Pages Failing (Data) : 0
archivo_6.log:Total Pages Failing (Index): 0
archivo_6.log:Total Pages Failing (Seg)
: 0
archivo_7.log:Total Pages Failing (Data) : 0
archivo_7.log:Total Pages Failing (Index): 0
archivo_7.log:Total Pages Failing (Seg)
: 0
archivo_8.log:Total Pages Failing (Data) : 0
archivo_8.log:Total Pages Failing (Index): 0
archivo_8.log:Total Pages Failing (Seg)
: 0
archivo_9.log:Total Pages Failing (Data) : 0
archivo_9.log:Total Pages Failing (Index): 0
archivo_9.log:Total Pages Failing (Seg)
: 0
[oracle@soa1 ~]$ grep Corrupt archivo*.log
archivo_10.log:Total Pages Marked Corrupt : 0
archivo_11.log:Total Pages Marked Corrupt : 0
archivo_12.log:Total Pages Marked Corrupt : 0
archivo_13.log:Total Pages Marked Corrupt : 0
archivo_14.log:Total Pages Marked Corrupt : 0
archivo_15.log:Total Pages Marked Corrupt : 0
archivo_16.log:Total Pages Marked Corrupt : 0
archivo_17.log:Total Pages Marked Corrupt : 0
archivo_1.log:Total Pages Marked Corrupt : 0
archivo_2.log:Total Pages Marked Corrupt : 0
archivo_3.log:Total Pages Marked Corrupt : 0
archivo_4.log:Total Pages Marked Corrupt : 0
archivo_5.log:Total Pages Marked Corrupt : 0
archivo_6.log:Total Pages Marked Corrupt : 0
archivo_7.log:Total Pages Marked Corrupt : 0
archivo_8.log:Total Pages Marked Corrupt : 0
archivo_9.log:Total Pages Marked Corrupt : 0
[oracle@soa1 ~]$ grep Influx archivo*.log
archivo_10.log:Total Pages Influx : 0
archivo_11.log:Total Pages Influx : 0
archivo_12.log:Total Pages Influx : 0
archivo_13.log:Total Pages Influx : 0
archivo_14.log:Total Pages Influx : 0
archivo_15.log:Total Pages Influx : 0
archivo_16.log:Total Pages Influx : 0
archivo_17.log:Total Pages Influx : 0
archivo_1.log:Total Pages Influx : 0
archivo_2.log:Total Pages Influx : 0
archivo_3.log:Total Pages Influx : 0
archivo_4.log:Total Pages Influx : 0
archivo_5.log:Total Pages Influx : 0
archivo_6.log:Total Pages Influx : 0
archivo_7.log:Total Pages Influx : 0
archivo_8.log:Total Pages Influx : 0
archivo_9.log:Total
Pages Influx : 0
No hay comentarios:
Publicar un comentario