RMAN restaurar datafile read only, Oracle Database

Al realizar una restauración de una copia vía RMAN (Oracle Database), es posible aparezcan avisos como:

datafile #NUM not processed because file is read-only

Esto se debe a que se ha usado el comando:

restore database;

Continue reading

Buscar una cadena de texto en un esquema completo de Oracle

En algunos casos, afortunadamente no demasiados, he tenido que buscar una cadena (normalmente algo relacionado con la configuración) en un esquema de la BD.

El asunto se complica cuando hay una cantidad de tablas ingente y además no hay forma de ponerse en contacto con el desarrollador, vamos un infierno.

Pues bueno para estos casos quiero compartir un script PL/SQL de cosecha propia (como casi todos los que pongo en el blog), que facilita el tema bastante:

Continue reading

Registro automático de servicios en listeners

A partir de la de versión 8i, no es necesario registrar los servicios de BD en el fichero listener.ora, las BD se pueden registrar automáticamente.

Esta funcionalidad funciona perfectamete si tenemos el listener en el puerto 1521 (por defecto), si realizamos un cambio de puerto no hay forma de conectarnos a la BD. Esto ocurre porque el valor de la parámetro LOCAL_LISTENER que por defecto es:

Continue reading

RMAN restaurar backup, desde cinta en otro servidor

Un excelente ejercicio para verificar que los backups se realizan correctemente, es preparar un script que nos haga una restauración a demanda en otro servidor (normalmente preproducción).

Digo una restauración y no un clonado (que es algo realmente impresionante el poder clonar una BD sin pararla hasta el momento actual), porque el clonado necesita que la BD de origen (producción seguramente) tiene que estar abierta y en caso de desastre esto no lo vamos a terner claro.

La restauración que se muestra aquí se realiza sin catálogo RMAN externo (es decir usando el controlfile como catálogo), esto nos obliga tener activa la opción:

Continue reading

Oracle ora-00600 librarycachenotemptyonclose, el famoso error Oracle Database 10g

Este error es producido por un bug reconocido por Oracle que se puede encontrar en el Metalink fácilmente [ID 4483084.8], el error indica que se ha intentado parar la BD sin que el Library Cache estuviese vacío.

La solución propuesta de forma oficial es migrar a 11.1.0.6 y además indica que no produce ningún tipo de corrupción en los datafiles, sugiriendo que nos podemos acostumbrar a verlo en el alert sin preocuparnos.

Lo que no dicen es que este error puede hacer que una parada de BD con un típico shutdown immediate, puede fallar y quedarse la BD en estado nomount, esto me ha pasado en sistemas HP-UX. Si ocurre durante una copia fría de fin de semana, la BD no arrancará porque ya lo está, pero claro en nomunt.

Continue reading

RMAN tag, añadir etiquetas personalizadas a backupsets RMAN

En la versión de Oracle 11g se pueden pasar parámetros desde linea de comandos a RMAN, en las versiones anteriores esto no es posible.

Lo que he hecho en estos casos es desde un scripts bash:

Continue reading

Arranque automático oracle linux, Inicio automático Oracle Database para Red Hat

Un pequeño script para arrancar automáticamente una BD Oracle:

Source   
# chkconfig: 2345 80 20
# description: Oracle Database
#!/bin/bash
start() {
su - oracle <<EOF
lsnrctl start
sqlplus / as sysdba<<EOO
startup
EOO
EOF
}
stop() {
su - oracle <<EOF
sqlplus / as sysdba<<EOO
shutdown immediate
EOO
lsnrctl stop
EOF
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
esac

Arranca la BD como usuario «oracle», que tiene que tener todas las variables de entorno correctemente configuradas (especialmente ORACLE_SID).

Este script se puede instalar con chkconfig ya que tiene la cabecera preparada para ello.

Oracle update undo, updates masivos que pueden generar problemas con el UNDO

No es la primera vez que me veo en la necesidad de ejecutar un DML que actualiza relamente muchos rows, esto puede ser un problema porque el tablespace UNDO no es infinito (ni debe serlo).

Recientemente he tenido que ejecutar un update:

Continue reading