jueves, 31 de julio de 2008

ORACLE: Dos pequeños scripts para verificar y corregir la integridad de los datafiles

El primer script (chkdbf.sh) verifica la integridad de los datafiles ubicados en un directorio determinado, si todo está en orden, el resultado debería visualizar todos los valores en cero.

Caso contrario entraría en acción el segundo script (rcvdbf.sh), que intentará reparar los daños en el datafile y bloque correspondiente.

#!/bin/bash -x
# chkdbf.sh

function chkdbf {
for f in `find /u01/oradata/orcl10g/ -name "*.dbf"`; do
echo `basename $f`|tr [:lower:] [:upper:];
$ORACLE_HOME/bin/dbv file=$f blocksize=8192;
done
}

chkdbf > chkdbf.out 2>&1
grep Failing chkdbf.out

#!/bin/bash -x
# rcvdbf.sh

function Error {
echo "rcvdbf.sh <file number> <block number>"
}

function ChkDigit {
case $1 in
[0-9]*$) return 0;;
*) return 1;;
esac
}

if [ ${#} -lt 2 ]; then
Error
exit 1
fi

if ChkDigit ${1}; then
Error
exit 2
fi

if ChkDigit ${2}; then
Error
exit 3
fi

$ORACLE_HOME/bin/rman target / <<!
blockrecover datafile ${1} block ${2}
exit
!

No hay comentarios: