Intervenciones en el podcast de la Comunidad Oracle Hispana (completo).

Ha terminado la temporada 2 del Show de la Comunidad Hispana y os paso los audios del programa de la Comunidad Oracle Hispana, donde en mi sección dedicada a la Optimización SQL cuento algunos de los consejos y conceptos que desarrollo en mi libro «Optimización SQL en Oracle».

Más o menos ésto es lo que se contó:

Temporada 2 – Programa 2 – Abril de 2014

Fernando García y Clarisa Maman presentan conmigo la nueva sección y damos un repaso a los contenidos del libro y su historia. 

Arranca la sección con un tema que ha vuelto loco a más de uno: los productos cartesianos. No obstante, dándole una vuelta de tuerca, pues hay casos en los que el producto cartesiano es la forma óptima de resolver una sentencia… lo crees?


Temporada 2 – Programa 4 – Junio de 2014

Intento resolver la pregunta sobre por qué Oracle no siempre utiliza el índice que queremos y presentamos junto con Fernando García y Clarisa Mamán el concurso del libro «Optimización SQL en Oracle».

Temporada 2 – Programa 5 – Julio de 2014

Cuento en qué consisten las hints, menciono algunas de mis favoritas, y pongo ejemplos de cómo pueden usarse para ayudar a resolver problemas de optimización (y no, no es forzando el uso de un índice).

Desvelamos quien ha sido el ganador del concurso y cuento un poco más sobre el paquete DBMS_STATS y su uso para recopilar estadísticas de forma eficiente. 
Hablo sobre el uso de las vistas materializadas y cómo pueden ayudarnos, sobre todo, en entornos data warehouse sobre tablas con un gran volumen de datos.
No mucha gente conoce los índices bitmap y sus beneficios. Hablo de ellos y de como estas estructuras, mal implementadas, pueden causarnos problemas de rendimiento usados bajo ciertas condiciones.
Temporada 2 – Programa 9 – Noviembre 2014

En el último programa de la temporada cuento un truco que puede ser muy útil gestionando problemas de rendimiento en bases de datos subidas de versión. El optimizador cambia su comportamiento y decisiones en cada versión de Oracle y cuento cómo configurar el optimizador para que se comporte como en versiones anteriores.


¿Te ha parecido interesante esta entrada? 
Si es así, échale un ojo a mi libro sobre Optimización SQL en Oracle.


 Libro Optimización SQL en Oracle



El Show de la Comunidad Hispana. Podcast de Junio 2014.

Ya ha salido el programa del mes de junio del Show de la Comunidad Hispana!

¡Episodio con premios!

El Show de la Comunidad Oracle Hispana sigue dándote sorpresas. Escucha el programa y entérate de los nuevos concursos y premios que preparamos para tí. Te contamos quienes son los ganadores de la Trivia y de los Indicios del programa anterior. Traemos mas Indicios y una nueva Trivia. Jugamos el mundial con una aplicación APEX. Javier Morales nos invita a participar en un nuevo concurso. En la entrevista del Show, Deiby Gomez te cuenta todo acerca de Exadata, las nuevas prestaciones de Oracle 12c, y su ambicioso emprendimiento OraWorld. En el segmento de APEX Clarisa te cuenta cómo funciona esta tecnología dentro de la nueva arquitectura multitenant de Oracle 12c. ¡Programa imperdible!

Además, en mi sección sobre optimización SQL cuento por qué Oracle, en ocasiones, no utiliza los índices que nosotros creemos más convenientes! La respuesta a una de las preguntas más frecuentes sobre temas de optimización SQL!!

150.000 GRACIAS! – Concurso «Optimización SQL en Oracle»

Gracias! 
Ciento cincuenta mil gracias!!!

El blog ha llegado a las 150.000 visitas desde su inicio, y ¿qué mejor forma que celebrarlo con un sorteo?!

¿Quieres ganar un ejemplar impreso del libro «Optimización SQL en Oracle»?

Las bases son muy simples. Tan sólo tienes que:

  • 1.- Visitar la tienda de Amazon correspondiente a tu región (amazon.mx si vives en México, amazon.es si vives en España y amazon.com para el resto de paises) y accede al libro en versión Kindle para descargarte gratuitamente el fragmento de principio del libro: unas 45 páginas.
  • 2.- Leerlo! (sí sí sí… es muy importante leerlo! así sabré que si sigues adelante con el concurso es porque eres un apasionado del SQL, de la optimización y del mundo Oracle y te encantaría tener este libro!!).

Si no tienes un kindle, puedes descargarte gratis la app para visualizar Kindle para Windows, MacOSx, iOS (iPad, iPhone), android, etc. o incluso leerlo desde tu navegador desde la nube https://read.amazon.com/. No hay excusas!! 🙂

  • 3.- Mandarme un mail a  oraclexperto@gmail.com con el texto «CONCURSO Optimización SQL en Oracle» y los siguientes datos:
    • Nick en la Comunidad Oracle HispanaSi no estás registrado, es el momento! Es la comunidad de habla hispana lider con foros, grupos, y más de 4500 usuarios como tú.
    • País en el que vives.
    • Motivos por los cuales quieres el libro (venga, sé creativo!  🙂 puedes contarme tanto un caso que te haya pasado, o algo que hayas leído referente al principio del eBook (ya sabes, lo que hiciste en el paso 2).
  • 4.- Yo te responderé con una pregunta personalizada, sólo para ti, haciendo referencia al principio del eBook  sobre algo que habrás leído. Ahora ves por qué el paso 2 es tan importante!.
  • 5.- Cuando me respondas a la pregunta, publicaré en el blog tu usuario de la COH, tu país y tu número en el sorteo y A ESPERAR!

El día 15 de julio de 2014  termina el plazo de concurso y el ganador será aquel cuyo número coincida con las últimas cifras del sorteo de la Lotería Nacional (España) del sorteo siguiente del jueves 17 de julio.

En caso de no haber ganador, los mismos números jugarán con el siguiente sorteo (sábado 19 de julio), y si no, en los siguientes!

ADVERTENCIA! El libro se enviará desde USA a la dirección del ganador, de modo que puede haber cargos de aduana… En ese caso el ganador correrá con los gastos si los hubiera.

MUCHA SUERTE!!! 

El Show de la Comunidad Hispana. Podcast de Mayo 2014.

Ya ha salido el programa del mes de mayo del Show de la Comunidad Hispana!

Si quieres conocer más sobre los productos cartesianos (contado por un servidor), las nuevas funcionalidades de Oracle12c o el programa ACE, no puedes perdértelo de ningún modo!!

El ¿auto deadlock?

¡Últimamente me pasan unas cosas muy curiosas!

¿Qué puede causar que una sesión aparezca en la vista DBA_WAITERS como bloqueadora y como en espera? Fernando García sabe la respuesta, pues él «estaba allí» cuando sucedió.

Se trata de la sesión 80 y, como podéis ver, los bloqueos son todos sobre el objeto 524308 (una tabla).

Se admiten apuestas!!! La base de datos es una Oracle12c y hay tres sesiones en el juego.
PISTA: No hay, ni hubo, ni habrá en este ejemplo un deadlock ORA-00060.

PDB1@ORCL> select * from dba_waiters;

WAITING_SESSION HOLDING_SESSION LOCK_TYPE
————— ————— ————————–
MODE_HELD
—————————————-
MODE_REQUESTED   LOCK_ID1   LOCK_ID2
—————————————- ———- ———-
    80     44 Transaction
Exclusive
Exclusive     524308  2374

    72     44 Transaction
Exclusive
Share     524308  2374

    80     80 Transaction
None
Exclusive     524308  2374

    72     80 Transaction
None
Share     524308  2374

Feliz Sant Jordi!

Hoy es el día del libro! Feliz Sant Jordi!
En Amazon España hay un 10% dto en el libro Optimización SQL en Oracle
(para compras en España no hay gastos de envío ni cargos de aduanas)


Los miembros de COH tienen un 35% dto comprando en la tienda de CreateSpace
Envío internacional desde USA.


Resuelto el misterio del año 0000!.

Hoy, gracias a una discusión a tres bandas en twitter con Tony Doval @tonydoval, Xavier Picamal @Condebond y Elias Fernández @sailefm se ha resuelto por fin el misterio del año 0000 en algunas de mis bases de datos.
¿Quién localizó el bug? El premio es para Elias Fernández! (que se lleva mi más sincero «me quito el sombrero»).
La cuestión es que el año 0000 no existe, aunque en algunas bases de datos he visto lo siguiente:

SQL> select * from zero_leap_year
  2  where to_char(date_year,’yyyy’)=’0000′ and rownum<6;

DATE_YEAR
——————–
30-DEC-0000 00:00:00
30-JAN-0000 00:00:00
30-DEC-0000 00:00:00
29-FEB-0000 00:00:00
30-JAN-0000 00:00:00

El año 0000 no existe. Del año 1 antes de Cristo se pasa al año 1 después de Cristo. Cualquier forma de insertar un año 0000 o una fecha 29-febrero en un año no bisiesto dará los siguientes errores:

SQL> insert into zero_leap_year values (to_date(’20-02-0000 00:00:00′,’dd-mm-yyyy hh24:mi:ss’));
insert into zero_leap_year values (to_date(’20-02-0000 00:00:00′,’dd-mm-yyyy hh24:mi:ss’))
                                           *
ERROR at line 1
ORA-01841 :(full) year must be between -4713 and +9999, and not be 0
SQL> insert into zero_leap_year values (to_date(’29-02-2007 00:00:00′,’dd-mm-yyyy hh24:mi:ss’));
insert into zero_leap_year values (to_date(’29-02-2007 00:00:00′,’dd-mm-yyyy hh24:mi:ss’))
                                           *
ERROR at line 1:
ORA-01839: date not valid for month specified

No obstante, estas filas misteriosas seguían apareciendo. Tanto en versión Oracle9i, Oracle10g y Oracle11g. ¿Cómo han podido colarse? Muy probablemente como Elias Fernandez encontró: partiendo de una fecha como, por ejemplo, 1-enero del año 1, restarle 1 día. Voilà! 

SQL> select (TO_DATE(’01/01/0001 00:00:00′, ‘DD/MM/YYYY HH24:MI:SS’) – 1) from dual;

(TO_DATE(’01/01/0001
——————–
31-DIC-0000 00:00:00

No sólo eso… ese año 0000 que no existe en la historia, según Oracle, es bisiesto!

SQL> select (TO_DATE(’01/01/0001 00:00:00′, ‘DD/MM/YYYY HH24:MI:SS’) – 307) from dual;

(TO_DATE(’01/01/0001
——————–
29-FEB-0000 00:00:00

Esto es un bug en toda regla!

Nueva sección en la Comunidad Oracle Hispana.

A partir de abril, el Show de la Comunidad Oracle Hispana tendrá una nueva sección en el podcast con píldoras para mejorar el rendimiento de código SQL en Oracle.

En el minuto 3 empieza mi sección, que arranca con una entrevista. Muchas gracias a Fernando García y a Clarisa Maman por acogerme en este proyecto.

PD: Vaya, este post se quedó en «borrador»… :/

«Optimización SQL en Oracle» disponible en Kindle.

Hoy ha salido a la venta el libro «Optimización SQL en Oracle» en formato Kindle.

Aun hay esperar a que Amazon vincule la edición impresa y la electrónica (dicen que sobre unas 48 horas), sobre todo porque el libro está en Amazon Matchbook, que permite que quien ha comprado la edición impresa pueda descargarse el libro en Kindle gratis, aunque creo que esta opción sólo está disponible en amazon.com por el momento.

¿Por qué ha tardado tanto en salir la edición Kindle?

Para empezar, porque es un libro concebido para un tamaño concreto. Está lleno de líneas de código y outputs de pantalla (en ocasiones con anchos de línea de 140 o 160 caracteres) para que los planes de ejecución puedan leerse correctamente. El libro impreso tiene un tamaño de ancho y alto de 9.6 pulgadas x 6.7 pulgadas (24,6cm x 17cm) y otras pruebas de impresión a formatos más reducidos perdían legibilidad. ¿Has visto alguna vez un plan de ejecución con explain plan en tu iPhone? Complicado.

¿Por qué una edición en Kindle?

Personalmente, pienso que la edición impresa es de lujo. La calidad de impresión es ideal, los contenidos están indexados por palabras al final del libro y, por lo que nos han comentado los lectores, vale la pena tenerlo impreso y leerlo de principio a fin. La maquetación de los contenidos y las imágenes están ajustadas al tamaño del papel. No obstante, tenerlo en papel implica en ocasiones unos gastos de envío (en ciertos países con fuertes cargos de aduana) y unos tiempos de espera considerables.

Con esta edición, el libro puede estar disponible inmediatamente en los dispositivos digitales, y gratis para quien haya adquirido el libro en Amazon (que imagino que serán los usuarios de Kindle), con actualizaciones de contenido que las impresiones registradas con ISBN en papel no permiten, con todas las ventajas que la lectura electrónica ofrece como búsqueda de palabras, diccionario, lectura práctica, lectura en el PC con copy/paste directamente del código del libro, etc.

¿Cómo se han resuelto estos aspectos de visualización?

Para empezar, el libro incluye embebida una fuente gratuita Courier Prime para que el código y el resultado se vea lo más parecido al libro impreso. La mayoría de problemas de se resuelven reduciendo la fuente o usando la visualización horizontal.  ADVERTENCIA! No obstante, en ciertos dispositivos como iPhone o Kindle2 (el más pequeño), algunos planes de ejecución más complejos se pueden leen con cierta dificultad.

En estos casos, lo más recomendable es descargarse el código SQL de ejemplo de la web y seguir la lectura practicando con los ejemplos sobre la base de datos.

Preparando la edición Kindle de «Optimización SQL en Oracle»

Aunque el libro está concebido en formato papel, por el ancho de página y los contenidos (código, trazas, etc.) la edición kindle ya está en el horno!

… ¿qué os parece?, ¿alguien interesado?, ¿alguna sugerencia?, ¿dudas?, ¿comentarios?, …