ORA-01591 bloqueo transacción distribuida

Es posible que una aplicación muestre en su log un error ORA-01591, que según la documentación oficial es debido a una trasacción de 2 fases que no puede completarse.

Este tipo de transacciones se usan, por ejemplo, cuando se hace un commit usando tablas obtenidas a partir de un dblink. Se verifica que se puede hacer un commit en remoto, otro en local y finalmente se hace en los 2 sitios de forma atómica.

Bueno pues cuando se pierde la conexión con un dblink durante una transacción, la transacción queda en un estado dudoso y si alguna otra sesión intenta modificar los objetos involucrados veremos el error ORA-01591.

Continue reading

Contraseña caducada oracle, Oracle 11

Con la versión más reciente de Oracle Database 11g, se ha reforzado la seguridad por defecto. Esto en principio debería ser positivo, pero hay algunas situaciones en las que pueden resultar desagradables algunos comportamientos.

El caso más claro lo podemos encontrar en la moficación del perfil (PROFILE) DEFAULT, que es aplicado a cualquier usuario creado de forma predeterminada.

Continue reading

ORA-07445 [kkecdn()+9776] Depués de aplicar Pacth Set 10.2.0.5

Recientemente para solucionar un problema en producción identificado como un bug (solventable con el Path Set 10.2.0.4) , ha sido necesario upgradear la BD Oracle de la versión 10.2.0.1 a 10.2.0.5 (ya puestos nos vamos al último Patch Set).

Después de la instalación del Path Set 10.2.0.5 para Linux 64 bits, que se realizó sin problemas y upgradear los catálogos de las bases de datos, todo parecía ir sobre ruedas.

De momento el parámetro COMPATIBLE se mantuvo con la versión original 10.2.0.1.

Los problemas surgieron aproximadamente un día más tarde cuando un report dejó de funcionar, el alert muestra:

Continue reading

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.