lunes, 27 de abril de 2009

Retraso en el Curso de Administración de Oracle

Tenia la intención de avanzar la publicación del tema 2 del curso de administración: Instalar Oracle 10g.  Pero me voy a retrasar.

Si mi planteamiento inicial era una presentación cada dos semanas, varias quejas sobre la primera me motivaron a adelantar el segundo tema. Y a partir de ahí cada dos o tres semanas publicar el resto.

El caso si ya avisé del escaso contenido, he tenido opiniones a favor del diseño y me gustaría mantener el nivel. Pero ha sido una semana movida con la compra de Sun por Oracle y algún que otro tema que os ahorrare.

Si alguien conoce un buen manual de OpenOffice, seguro que agilizará los tramites, pero los "controles de calidad" que pasan las presentaciones son muy estrictos...


Imagen: delay...

sábado, 25 de abril de 2009

PostgreSQL en Español

Leo en Barrapunto que hace unos días se inauguró un nuevo portal sobre PostgreSQL: PostgreSQL-es.org, para usuarios del SGBD y en español.



El portal, en su nacimiento, ya esta repleto de detalles que dejan entrever el cuidado con los detalles que seguido su creador: Rafael Martinez, desde la Universidad de Oslo. Utilizando Drupal, PostgreSQL (evidentemente), Apache, PHP y Linux; pero también podemos encontrar bastantes contenidos para empezar: documentación y artículos, y funcionalidades como el registro con OpenID.

Siempre es interesante ver iniciativas de este tipo, y darles ánimos a sabiendas del equipo reducido que hay "por el momento".

Siempre he considerado PostgreSQL como el hermano feo de MySQL, al igual que Oracle tiene otro más guapo, (SQL Server) aunque no por eso sea mejor partido. Ahora con la compra de Sun por Oracle, quizás sea la oportunidad de este SGBD que siempre relegado a utilizaciones más especializadas. Y es que hay sectores muy críticos con esta compra, con grupos ANTI-Monopolio en Facebook o comentarios al respecto.

Quizás no se carácteríce por su sencillez, pero si por su rendimiento; aunque mi experiencia con él es excasa, me vi obligado a ponerlo como mejor opción en un informe donde las condiciones eran: bajo coste y rendimiento.

Aprovecho para anunciar la Beta 1 de PostgreSQL 8.4, publicada recientemente.

miércoles, 22 de abril de 2009

Seminario de Solución Avanzada de Problemas en Oracle para DBA's

Hace poco me llego una invitación para el seminario con un título bastante sugerente:


11 y 12 de Mayo en Madrid y por el módico precio de 998€. Pero dejando de lado el precio, es complicado encontrar seminarios de un nivel tan avanzado y en principio bastante interesante.

Concentrándose en consultas, cursores y transacciones pero con un tema dedicado al hardware y otro a operaciones de E/S. Lo que podríamos decir un seminario de alto nivel.

El problema con el que me encuentro es siempre el mismo, por estos lares los problemas que se encuentra un DBA son otros. Hace varias semanas, tras instalar un sevidor de aplicaciones, e informar a los desarrolladores para que iniciaran las pruebas me encontré con la siguiente queja:

"El servidor no se conecta a la base de datos"

De nada sirvieron las trazas del servidor con un mensaje de error conforme no se podía crear una tabla por que ya existía (si sabe que existé ¿será por que se ha conectado?. Tampoco cuando configuramos el DataSource para  que realizara varias comprobaciones previas antes de iniciar, y sino mostrara un mensaje de error. Y como iba a explicar yo, el log del LISTENER donde quedaban registradas como correctas cada una de las conexiones.

Finalmente tuvimos que desarrollar una miniaplicación que se conectaran a Oracle y mostraran los datos de los desarrolladores en el navegador.

Lo cierto es que, me sentí como cuando empece trabajando en Soporte a usuarios y no había forma de entenderse con ciertos Ingenieros.

Debería impartir un curso con el siguiente temario:
  • Funcionar y no Funcionar, o como explicar que si antes iba bien ya ahora mal, es por que ahora hay varios miles de registros más y esa SELECT no es la mejor del mundo
  • Las Tablas, ese Gran Desconocido, impartido en dos módulos:
  1. Dejar de utilizar las tablas como ese gran saco roto que creemos que es
  2. Por qué las tablas con 200 campos quizás indiquen un pequeño problema de diseño
  • Lentitud, o por qué cuando tu aplicación realiza múltiples bloqueos y los usuarios se quejan de lentitud, la culpa no es del rendimiento de la base de datos
  • [...]
Dejando de lado las bromas, para qué nos sirve un seminario de este tipo, ¿si nos enfrentamos a semejante panorama?

Pues de poco, el seminario nos servirá de poco; pero luego llegarán los problemas reales y también lidiaremos con ellos. Por eso os dejo el enlace de la presentación del curso que esta realizando Tanel Poder por todo el mundo:


Otro ejemplo de alguien que impartiendo un curso a 500€ el día, publica la documentación "libre" en su blog, me suena... excepto por lo de los euros claro. Además es OCM (Oracle Certified Master) y hace poco entro como director en el programa ACE de Oracle.



Lo que se dice un buen CV. Para más información sobre "pringaos" aquí tenéis un enlace:

Análisis de Bases de Datos por Inmersión Visual

No me preguntéis como, pero acabo de naufragar en la red, esta vez he acabado en una isla desierta en 3D y palmeras  virtuales.

Lo habéis adivinado, no eran palmeras sino una aplicación de modelado de bases de datos que no conocía: DIVA (Database Immersive Virtual Analysis)

Este software nos permite navegar (o naufragar, según guste) en 2D, 2.5D y 3D. Todo ello para conocer más, mejor o más rápido las tablas de nuestra base de datos favorita.

Tal como si hermano de Eduardo Manostijeras fuéramos, podemos descargarnos la versión free (con límite de 25 tablas) o la versión de pago. Ambas para trabajar de forma "típica" (con un PC, un ratón...), y finalmente la versión VR compatible con distintos equipos de realidad virtual.

Desarrollado por un equipo de Ukrania llamado VRM (Virtual Reality Models) y del que, para seros sinceros, es la primera noticia que me llega, me parece un producto realmente innovador. Bajo un concepto sobradamente conocido (la realidad virtual), creo que han conseguido darle una aplicación practica bastante interesante y de fácil introducción en el mercado (cada vez los diseños son más complejos y los analístas tienen menos paciencia).



Es curioso que se hayan decidido por esta aplicación, pero seguro que les irá bien a aquellos que se enfrenten a un diseño que se coja con pinzas o sea tan complejo que no sepamos ni por donde empezar. Todo esto, evidentemente, para ayer.

Aunque llevo tiempo preparando un artículo donde hablar en profundidad del nuevo modelador de datos de Oracle (SQL Developer Data Modeling) en fase "beta", no me he podido resistir a presentaros el video donde se explicar la versión de realidad virtual de DIVA:


También podéis ver todas sus fotos en Flickr.

lunes, 20 de abril de 2009

Oracle compra Sun Microsystems

Hoy mismo se ha anunciado la compra de Sun por parte de Oracle.

La noticia me ha dejado tan atónito que lo primero que he visto buscando más información sobre el tema, era que nadie se ponía de acuerdo con el precio: 4,3m, 7,4m, 5,6m...

Primera aclaración, el precio son 5.600 millones de dólares (4.320 millones de euros), que al sumarle la deuda de Sun se queda en 7.400 millones de dólres (5.710 milles de euros).

A juzgar por la web que ha preparado Oracle sobre el tema, dudo mucho que haya sido algo precipitado: Oracle and Sun. Esto, junto al anuncio de obtención de un 15% de beneficios y frases como "la compra de Sun transforma la industria de tecnologías de la información" o "era la evolución natural de la relación entre las dos empresas" que han lanzado ( y que por cierto, leeréis en absolutamente todas las web que comenten la noticia) parece algo de lo más normal del mundo.

Pero no ha sido tan sencillo, la compra se anunció antes de de abrir Wall Street, lo que ha hecho subir el precio de las acciones de Sun un 36%, por encima de los 9 dólares y cerca de los 9,5 que ha pagado Oracle. Esto supone un incremento del 42% respecto al valor de Sun Microsystems el pasado viernes.

Por lo que se, suele ser una cosa habitual que este tipo de compras tengan una cierto incremento, podríamos llamarlo "prima", ¿!¿! pero un 42% ?!?!




El caso es que la compra ha penalizado un 4,5% las acciones de la misma Oracle, por lo que han tenido que salir a la palestra a dar explicaciones (si, las frases de antes no han sido suficientes). La aclaración ha sido la siguiente "la adquisición de Sun será más rentable en su contribución al beneficio por acción en el primer año que las que habíamos previsto para las adquisiciones combinadas de BEA, PeopleSoft y Sieble".

El caso es que esto cierra definitivamente el tema de la compra de Sun por IBM, que se acercaba a los 9,4 dólares y que desde el día 6 ya parecía bastante definitiva. Pero además nos deja con una duda, y es que hace menos de un año Sun compró MySQL...

¿Qué pasará con MySQL?

Aunque en la fiebre de Oracle por adquirir empresas de todo tipo, siempre ha mantenido una postura de consolidación, más que de cambio (podemos seguir buscando BEA o PeopleSoft como productos), es casi la primera vez que adquire a parte de la competencia en su producto estrella: el SGBD. Y digo "casi" por que  Oracle dispone de la Oracle Berkeley DB, con excasa difusión (almenos a mi gusto), pero si de similares carácterísticas a MySQL (también es un producto OpenSource).


MySQL y más desde su adquisición por parte de Sun, era competencia directa a Oracle en sectores más pequeños,  pero siempre vitales por su difusión. Éstos ni siquiera contemplan la posibilidad de instalar un Oracle XP o la misma Berkeley, pero si por un MySQL o un PostgreSQL. Y es lo primero que se me ocurre, la introducción definitiva de Oracle en un sector más pequeño, pero del mismo modo importante. Cosas parecidas se han visto con la participación de Oracle en el desarrollo del kernel de Linux o desarrollando sistemas de archivos en cluster para la comunidad: OCFS.

Entre otras curiosidades, todavía no he podido acceder a la nota de prensa de Oracle, en su lugar me he encontrado con el siguiente mensaje:



Por lo que mejor dirigirse a la nota de prensa de Sun.

domingo, 19 de abril de 2009

Administración de Oracle - Tema 1 - Introducción

Lo se, la primera es de contenido escaso; pero si hay algún problema será con esta, no con el resto.

De todas formas me gustaría comentar, que aunque en versiones anteriores (8i y 9i) se daba mucha más formación sobre SQL y PL/SQL, para la 10g Oracle decidió la gran parte de estos temas. Supongo que ellos lo hicieron movidos por la nueva herramienta gráfica (Enterprise Manager).

Si ellos quitaron parte, yo casi toda, y es que un curso de Administración, es de eso y no de otra cosa. Y aunque ya tengo preparados post que se acercan más a la programación que a la administración, no es así en el curso.

De todas formas las únicas notas sobre SQL las encontraréis en este tema, así como una gran foto de las instalaciones de Oracle, donde intentaba explicar por que Oracle y no otros SGBD.

A ver que os parece:



Presentación del Curso de Administración de Oracle

Antes de publicar las presentaciones del curso me gustaría presentar el formato que tendrán.

Aunque, conociendo el trabajo que tiene preparar un curso de estas características, sigan diciendo que estoy loco, he tenido que tomar algunas decisiones y medidas. La primera es utilizar SlideShare como soporte para las presentaciones.

Lo que me ha decantado por slideshare es su API para visualizar las presentaciones, con la que a través del blog se podrán disfrutar a pantalla completa y con una calidad que no deja de sorprenderme.

Precisamente hace unos días, en GurusBlog, publicaron su presentación en Bolsalia 2009 mediante slideshare.

Feria donde se presentó la Asociación Española de Analistas Técnicos e inversores de Bolsa, y  desde aquí aprovecho para saludar a algunos de sus integrantes. Sobretodo a los del Centro de Formación de Traders.

Para los que estén interesados en servicios para colgar presentaciones, tenia en la recamara una alternativa: Scribd.

Otra cosa que me facilita es que las presentaciones se licencian automáticamente bajo Creative Commons. Si, loco, pero no tanto =)

Aunque la licencia que he escogido es la más restrictiva: Reconocimiento-No comercial-Sin obras derivadas, mi objetivo es difundir la obra. No espero que nadie obtenga beneficios de ella y las actualizaciones creo que me corresponden a mi.

Si alguien tiene alguna propuesta, critica, mejora, quiere publicar en el blog... lo que sea. Lo consideraré todo, dejando constancia de quien es el culpable de la mejor, critica o nuevo contendio, claro está.

También he añadido una marca de agua a las presentaciones, esto más que por "marcar mi obra", para los críticos de estas cosas; lo hago por darle un poco de publicidad al blog ;)


lunes, 13 de abril de 2009

Curso de Administración de Oracle

En el 2007 y 2008 estuve dando clases como profesor, para se exactos daba un curso parecido al Workshop I de Administración en Oracle 10g, con el que intentaba que mis alumnos obtuvieran los conocimientos del nivel OCA.

Oracle Certified Associate es la primera de las certificaciones que concede Oracle y si alguien busca información sobre el curso le remita a la web de educación de Oracle para Administradores: Oracle Certificatin Program

Para el resto, lo único que teneis que hacer es seguir este blog, y es que me he decidido a ir publicando las presentaciones del curso que di los últimos dos años. Los conocimientos a nivel OCA son mucho mayores de los que, por mi experiencia, tienen una gran masa de administradores o técnicos que realizan tareas de administración. Se de sobras que encontrar un DBA puro es casi imposible, y es uno de los motivos que me han animado a publicar estas presentaciones.

Algunos de mis conocidos me han mirado, escépticos, pensando "estas loco". Y es que fue un duro trabajo realizar las presentaciones y preparar el curso desde cero.

Pero no estoy loco, simplemente pienso que las presentaciones pueden ayudar a muchos que no tengan acceso a un curso y no evitará que yo de clases. Además de ser la idea original de este blog.

El valor añadido de la presencia, explicaciones, las prácticas guiadas o el poder hacer cualquier pregunta al profesor, no funciona con todo el mundo, para el resto:

ya os avisaré de mi próximo curso =)

viernes, 10 de abril de 2009

Oracle Enterprise Manager 10g Grid Control Release 5

Cuando escuché por primera vez Oracle OEM, ya tenía mis primeras dudas sobre si era una versión para "servidores nuevos". Después el nombre de Enterprise Manager tampoco me aportó mucho, luego descubrí el concepto de Grid que pretendía vendernos Oracle y la guinda fue cuando descubri lo que era el:

Oracle Enterprise Manager Grid Control

El caso es que llevo una temporada trabajando con él (versión 10.2.0.3.0) y solo os puedo contar cosas buenas. Si bien me lo vendieron como solución para la monitorización de Oracle RAC de forma centralizada, creo que es la única herramienta con esta capacidad. Luego descubrí que Oracle tenía pensado llegar a mucho más.

Han escrito una buena cantidad de teoría sobre lo que debería ser una sistema de monitorización y alertas, pero a la Oracle y listos. De la gestión de bases de datos pasamos a un producto semejante a OpenView o Nagios.

Aunque al producto que más rendimiento le sacaremos es a su base de datos, poco a poco añaden o mejoran el resto de productos de la compañia y mediante plugins se pueden monitorizar desde bases de datos DB2, SQL Server, Sybase o MySQL, a servidores de aplicación como JBoss, IIS, Apache o WebSphere pasando por cabinas de disco como EMC y hasta VMWare o firewalls de CheckPoint y Juniper.

Os dejo un enlace con la lista completa, para que os hagais una idea.

El caso es que ha salido la versión 5 con varias mejoras de las que destacaré que ya que apuestan fuerte por la virtualización, gestionarla con una herramienta como esta, ayuda.

Y sobre el SGBD, me ha llamado la atención la "Monitorización de SQL's en tiempo real". Pero está claro que el hecho de que añadan más y más asistentes en cada versión, les abre cuota de mercado...

Comentar, que me ha llamado la atención el despliegue, tenéis a vuestra disposición de todo:
¿Quién puede ofrecer más?

Pues Oracle, para los que el termino "SGBD" se queda pequeño:

Oracle Enterprise Manager Grid Control Architecture for Very Large Sites

No se a vosotros, pero a mi me han impresionado.

jueves, 9 de abril de 2009

Sinde Pirate!

Con este lema como bandera, y desde que se dieron a conocer los cambios de cierto presidente, en un país de cuyo nombre no quiero acordarme; se ha iniciado un movimiento por Internet que me ha dejado perplejo.



Tengo que reconocer una cosa, si hay algo en este mundo de lo que no tengo "ni papa" es sobre política. Pero si en su día ya comente "La Batalla de Kruger", ahora no podía quedarme quieto tras ver como uno tras otro, blogs, medios de comunicación escritos, radio... se hacían eco de la noticia: Ángeles González-Sinde nombrada Ministra de Cultura.

Así es como nos la presentan el SINDEscargas.net, donde además podremos firmar apoyando su destitución. Pero la cosa no ha quedado ahí, antes de que jurara el cargo, ya exitía un grupo en Facebook pidiendo su destitución: Ángeles González-Sinde pírate.

Unos lo han llamado "pesadilla" (Enrique Dans), otros "desproposito" (Error 500); pero como se ha demostrado, no exite "margen de cortesía" posible (microsiervos).

Y es que, como ya dije "el público manda", para lo bueno y para lo malo. Y cuando tanta gente esta de acuerdo, gente tan dispar, pero con un punto en común, precisamente el de la discordia, Internet. Solo me cabe citar la típica frase:

"Cuando el Río suena, Agua lleva"

lunes, 6 de abril de 2009

Una Oportunidad Única

Con este titular nos presenta T. Kyte un seminario bastante singular: Aprender SQL de mano de uno de mayores promotores, Christopher Date. Básicamente Date es el investigador principal del modelo relacional, uno de los culpables de como escribimos nuestras, tan preciadas, consultas SQL.

Aunque el seminario es del 27 al 29 de Abril en Irvin, Texas os dejo el enlace:

How to Write Correct SQL and Know It: A Relational Approach to SQL

Tal como dice Tom, la gran mayoría esperan un procedimiento del estilo: "Los Diez Pasos para Optimizar tus Consultas SQL", pero solo podemos intentar aprender como funciona el sistema, para que cuando escribamos nuestras consultas sepamos definirlas lo mejor posible. Por eso es una oportunidad unica aprender de la persona que más sabe sobre el modelo relacional.

Sigue hablando sobre el tema y comenta:

"Once you understand query processing, you can make the query do what you think might be best. Writing efficient SQL is no different from writing efficient C, Java, or even English. It takes an understanding of how things work and what is available. If you don't know some technique is available, you¿ll never be able to optimize to use it."

No pienso traducirlo, pero me entenderéis cuando digo, que ahí es donde me encuentro con un problema. Si los programadores no suelen preocuparse de como esta escríto su código, ya sea Java o C; ¿por que iban a preocuparse de las consultas SQL? Y encima, yo tengo la visión desde "la piel de toro", la guinda al tema.

Lo que si traduciré es una parte del temario, para que os hagais una idea. En el Capítulo sobre "Teoría sobre el Diseño de Bases de Datos" hay dos apartados:
  • Normalizar no es la panacea
  • Pero no desnormalices!!

sábado, 4 de abril de 2009

Columnas Auto-Incrementales en Oracle

La verdad es que sobre este tema podemos encontrar infinidad de comentarios en la red, no es demasiado complicado leer la opinión más extendida sobre el tema:

"¿Cómo puede ser que Oracle no disponga de un tipo de dato que se incremente automáticamente con cada nuevo registro?"

Y para los más experimentados, responderé a la pregunta: ¿Por qué merece la pena hablar de esto?

Por que no son pocos los desarrolladores que buscan información sobre este tema en internet, o que me han preguntado directamente.

Os presento las soluciones más "famosas" y sus ventajas e incovenientes:

Soluciones


Creamos una tabla, con un campo númerico como claver primaria:

create table T ( x int primary key, .... );


Creamos la secuencia:

create sequence t_seq;


La Elegante: Secuencia + Disparador
Crearemos un disparador que incrementará el valor del campo númerico:

create trigger t_trigger before insert on T for each row
begin
   if ( :new.x is null ) then
      select t_seq.nextval into :new.x from dual;
   end if;
end;
/

Y digo elegante por ser la que encontraremos en los libros.

La Válida: Aceptamos Barco (o Secuencia)
Cuando vayamos a insertar el registro, no dependeremos de un disparador, pero si utilizaremos la secuencia:

insert into T (x, ...) values (t_seq.nextval, ...);

Con esto perdemos algo de control sobre el valor que se introduce, ya que no podemos introducir condiciones o lógica de ningún tipo, pero no ahorramos los disparadores; algo no despreciable.

La NO Tan Buena: Máxmimo Valor del Campo
Si por un casual se nos ocurre hacer algo como esto:

create trigger t_trigger before insert on table_name for each row
begin
   select max(nvl(col_seq,0))+1 into :new.x
   from table_name ;
end ;
/

Saber que hasta que no finalice la transacción que contenga este disparador, no se actualizará la tabla, por lo que todas las transacciónes que se inicien de forma simultánea obtendrán el mismo valor. Y si el campo es clave primaria obtendremos un error de violacion de la clave única (unique constraint).

Opinión

Nos estamos acostumbrando a mezclar conceptos, nos hacemos la vida más sencilla pensando que debería ser lo "lógico"; cuando en realidad nos complicamos la vida. Señoras y señores, la respuesta es sencilla: las tablas tienen campos, los campos contienen datos y éstos pueden ser de varios tipos diferentes. Un campo numérico y otro de caracteres son diferentes; un campo numérico y otro fecha, son diferentes; un campo numérico y otro auto-incremental NO TINEN NINGUNA DIFERENCIA.

Si quiero que ocurra algo cuando se inserta un registro en una tabla, tengo que utilizar los disparadores (triggers), y eso no lo cuestiona nadie; es más, este sistema si que ha sido copiado por el resto de sgbd. Pero si quiero que se incremente automáticamente, parece que nos cueste encontrar la solución.

Si audiencia, lo más sencillo del mundo, yo mismo programo el disparador, pongo mis condiciones, controlo cuando quiero ejecutarlo o no, o simplemente lo desactivo. Más flexibilidad y opciones para los campos auto-incrementales es imposible.

Conclusión

Con esto espero que quede claro: la clave esta en la secuencia. Además podemos usar disparadores para tener un absoluto control sobre cuando y como se insertan los valores en nuestras tablas. Con cualquier otro sistema dependeremos de las funciones o mecanismos que nos ofrezca el sgbd y sus opciones para el control de los campos autonuméricos, pero nunca un control absoluto.