Archive for October, 2007

Disponible Oracle 11g para Linux x86 64

October 19, 2007

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)

JDBC 9.x y las variables de Timestamp de Java

October 12, 2007

Yo personalmente no programo en Java, lo hice hace casi 10 años y desde hace 8 no lo he vuelto a hacer asi que la verdad es que ni se exactamente como se declara una variable de fechas en Java.

Hace poco en un cliente donde tenian bastantes problemas de rendimiento en una de sus aplicaciones el cual es de una muy elevada criticidad (afecta a los que viajamos ;-) ). La aplicacion esta hecha por J2EE sobre Oracle 9iR2 y como servidor de aplicaciones Bea Weblogic. Se veian queries muy simples contra tablas correctamente indexados realizando Full Table Scan, no era trivial porque lanzaba las mismas queries desde SQLPLUS y me iba de fabula asi que como casi siempre me acorde del bind peeking (los malditos!) pero despues de revisar unas 6 docenas de queries donde algunas no usaban bind variables y tenian el mismo problema de ir rapido en SQLPLUS y lento desde la aplicacion.

Despues de estar unos dias traceando y analizando las 200 trazas que genere me di cuenta que habia muchas ocurrencias de “Dump of memory” en las variables bind. Hablando con los desarrolladores los cuales me comentan que pasan las fechas de java como variables de timestamp a la base de datos. En las trazas muestar algo parecido a esto:

bind 5: dty=180 mxl=11(11) mal=00 scl=00 pre=00 oacflg=03 oacfl2=0 size=0 offset=120
bfp=40759cbc bln=11 avl=07 flg=01
value=
Dump of memory from 0×40759CBC to 0×40759CC3
40759CB0 0C0A6B78 [xk..]
40759CC0 00010101 [....]

Cuando value deberia de aparecer algo asi: value=”9/20/2007 9:20:0″ (dty=180 indica que la variable es del tipo Timestamp)

Cual es el problema? Es la version de JDBC, a partir de la version 9.x el JDBC deja de convertir las variables Timestamp de Java a Date, envia directamente a la base de datos tal cual porque Oracle 9i ya soporte este tipo de datos. La consecuencia es que el motor de la base de datos recibe la variable Timestamp y ve que el campo es un Date por lo tanto le aplica implicitamente un TO_DATE evitando el uso del indice.

La solucion es añadir v8compatible en las propiedades del JDBC. Y este problema ya he lo he visto en mas de un cliente.

Se acerca Oracle Openworld

October 4, 2007

Como todos los años sobre estas fechas se acerca el OOW.

Evento plagado de presentaciones (este año unas 1700). La verdad es que deberia acudir pero dudo mucho este año, puede el que viene. El que intentare ir este año es el UKOUG, el evento mas gordo de Grupo de Usuarios de Oracle en EMEA. El CUORE es como un juguete comparado con estos. Ademas la calidad de las presentaciones de UKOUG es infinitamente superior.

Como todos los años, wget preparado para descargar las presentaciones de OOW, muy muy interesantes que mucha gente no se dan cuenta. Teniendo en cuenta muchos de los que presentan son los Product Managers de Oracle no es de extrañar. Otro punto a favor es que la mayoria no son presentaciones de Marketing ni Comerciales.

Estas van a ser de las mejores:

Bryn Llewellyn : Doing SQL from PL/SQL: Best and Worst Practices
Thomas Kyte : The Top 10–No, 11–New Features of Oracle Database 11g
Graham Wood y Varios : Detecting Performance Problems Accurately and Quickly: Essential Diagnostics Techniques for Oracle Database 11g
Markus Michalewicz & Barb Lundhild : Demystifying Oracle RAC Internals
Raymond Dutcher, Michael Nowak, Lawrence To: Maximum Availability Architecture (MAA) Best Practices: Online Patching, Rolling Upgrades, and Planned Maintenance with Minimal Downtime with Oracle Database
Mohamed Zait: SQL Plan Management: New Approach for Providing SQL Performance Stability in Oracle Database 11g
Kevin Closson: Improve the Performance and Manageability of Your NFS Environment with Oracle Database 11g Direct NFS Client
Steven Shaw: Grid Design with Oracle RAC
Cary Millsap: Why You Can’t See Your Real Performance Problems
Tim Chien, Oracle Greg Green, Starbucks: Backup and Recovery Best Practices for Very Large Databases (VLDBs)
Larry Carpenter, Ashish Ray, John Smiley: Oracle Data Guard Tips and Tricks: Direct from Oracle Development