Archive for the ‘Clustering’ Category

ORA-25402: transaction must roll back, problema con el TAF

May 2, 2009

Otro dia realizando unas pruebas de TAF se ha visto que una caida del nodo podria provocar inconsistencias en la aplicacion.

La prueba es facil, basicamente es configurar un servicio de TAF, abrir una sesion mediante este servicio, insertar un registro y antes del commit provocar la caida de la red privada/interconnect y seguidamente ejecutar el commit.

Esta sesion se quedaria colgada durante un tiempo y dara el error ORA-25402: transaction must roll back, viendo este error da la sensacion de que la transaccion del insert no se ha validado la sorpresa es que desde otras sesiones consultant a la tabla SI se ve que se ha validado.

El problema es que este error podria provocar que una aplicacion realizando otra vez el insert asumiendo que se ha hecho rollback que es falso.

La prueba se ha realizado en 10.2.0.3 aunque parece que es reproducible en 10.2.0.4 (pendiente de confirmar)

Se puede descargar una prueba aqui Test ORA-25402

Oracle dejara de soportar Raw a partir de 12g

August 10, 2008

Hace unos dias Oracle anuncio que dejara de dar soporte a los dispositivos raw en todas las plataformas a partir de Oracle 12g, aun falta pero hay que ir preparando porque aun veo gente que monta raw sobre RAC 10gR2, totalmente innecesario.

Que pasara con OCR y Voting Disk? Hasta ahora, incluido 11gR1, o usas raw o usas un Cluster Filesystem (no es muy habitual CFS por el coste excepto OCFS2), la mayoria optan por raw. Pues si se ha anunciado para 12g preparemos para ver algo nuevo en la 11gR2, saldra alguna funcionalidad para remediar este tema.

No se yo…. creo que va a evolucionar bastante ASM en la Release 2 de 11g…..

Seminario obligatorio! RAC Avanzado

April 23, 2008

http://www.oracle.com/global/es/education/eblast/es_juliandyke_230408_ol.html

No hay que faltar a este seminario!!!

ASM como solucion de Host Based Mirroring

March 1, 2008

Hace poco instale un RAC sobre IBM AIX 6.1 en un cliente donde la redundancia manda, es decir todo duplicado incluido la cabina de disco aunque sea el mismo Data Center.

Hasta ahora el cliente habia utilizado HACMP como solucion de mirror de los datos entre cabinas, claro eso para RAC de version 9i. En la 10g como ya no es necesario un Clusterware de terceros habia que buscar una opcion para no tener que recurrir a HACMP solo para replicar datos. Aqui entra en juego ASM.

ASM como es sabido da opciones de tener redundancia a nivel de software en vez de hardware, para eso es necesario crear 2 ó más Failure Groups de un Disk Group. Puedes crear X Failure Groups, incluso uno por cada LUN ya que el mirroring de ASM es a nivel de Extents de 1MB. Pero bueno eso es otro tema.

Para este cliente se ha creado 2 Failure Groups, cada uno ubicado en una SAN, esto automaticamente se convierte en una solucion de Host Based Mirroring pero yo creo ASM no estaba diseñado para este tipo de arquitectura y ahora digo el por qué.

Un posible problema es, como es sabido si ASM no puede aceeder a los discos de un Failrue Group automaticamente pone los discos Offline y hace un drop de estos al considerar que están inválidos. Problemón! Porque si un dia hay que hacer mantenimiento de una cabina por ejemplo upgrade de firmware el ASM va a borrar todos esos discos del Failure Group que están ubicados ahi. El Resilvering una vez recuperado la cabina es total, es decir resincronizacion total de los datos de una SAN a la otra. Imagina que tienes que resincronizar 1TB de datos por la Fibre Channel, no irá mal pero no es lo mismo sincronizar en una misma SAN.

ASM, no como otros Volume Managers no tiene la funcionalidad de Dirty Region Logging que es una especie de bitmap que permite una sincronizacion incremental en caso de caida de un lado de mirror.

En 11g, seguro que a petición de muchos clientes y viendo que ASM se puede vender como una solucion de Host Based Mirroring para arquitecturas de RAC Extendido sin necesidad de terceros (un pure Oracle Stack en RAC extendido) se ha introducido la funcionalidad de Fast Mirror Resync, en vez de borrar los discos cuando no puede acceder solo lo deja en estado Offline, dependiendo del parametro DISK_REPAIR_TIME lo deja en ese estado durante el intervalo de tiempo especificado. Durante este intervalo mediante un bitmap va marcando las extensiones que han sido modificados, una vez recuperado los discos en estado Online solo tendría que sincronizar las extensiones que han sido marcados en el bitmap. Ya tenemos sincronización incremental!

La pena es que tienes que tener todo en 11g no solamente el parte de ASM sino también el motor de RDBMS.

Esta misma filosofia es como de un Stretch Cluster/RAC Extendido que por cierto en esta instalación se ha tenido que montar el tercer Voting Disk en un tercer nodo para romper el quorum.

enq: US – contention, buffer busy waits y automatic tuning de undo_retention

October 12, 2007

Cuando aparecen estos sintomas en Oracle 10gR2 y tienes desactivado el autoextend en los datafiles de los tablespace de undo:

1. enq: US – contention, contencion de Undo Segments

2. aumento constante de v$waitstat.file header block

3. buffer busy waits sobre los bloques de la cabecera de los datafiles de UNDO, esto se ve en p1 y p2 de v$session

4. v$undostat.tuned_undoretention tiene un valor exagerado

5. el valor de dc_rollback_segments v$rowcache es exagerado (incluso llegando a negativo)

6. El UNDO esta muy “lleno”

7. Hay muchos segmentos de Rollback en estado Offline, cientos

Activa el autoextend de los datafiles de UNDO con un maxsize (el mismo que el tamaño actual es suficiente). La combinacion de estos sintomas podria generar un aumento de consumo de CPU del 5% a 10% (principalmente por los buffer busy waits)

Esto paso en un RAC de 4 nodos donde solo dos nodos mostraban estos sintomas sin embargo creo que un mono-instancia tambien podria pasar. Tiene que haber bastantes modificaciones como inserciones constantes.

El problema parece que esta relacionado con el tuning automatico de retencion de undo…. Esta reportado como bug 5749075 pero el workaround que ofrece no es el unico, poner autoextend on es mucho mas simple y menos intrusivo (no tienes que tocar parametros ocultos)