sábado, 19 de enero de 2013

Inicializando un hashmap en una clase de constantes

Esta semana he necesitado instanciar un Map en un fichero constantes. El truco no es mio, sino de esta fuente.


public static final Map < Integer, String >  MAPA= Collections.unmodifiableMap(
              new HashMap< Integer, String >(){
                   {
                    put(0,"");
                    put(1,"");
                   }
               });

martes, 8 de enero de 2013

Reiniciando el pool de conexiones de Oracle 11g a lo bestia

La semana pasada me encontré con un problema en el entorno de desarrollo, el pool de conexiones de Oracle. El problema en concreto es que el pool se llena demasiado rápido y hay que estar reiniciando Oracle constantemente. Por defecto Oracle admite 20 conexiones de pool, aunque este valor se puede incrementar.

¿Pero que pasa si hay varias máquinas de desarrollo (tomcat + eclipse) apuntando al mismo oracle? Pues que aunque subamos el pool al final del día vuelve a estar lleno y es necesario vaciarlo.

La forma bonita sería entrar como SYSDBA y ejecutar:

SYS as SYSDBA:
SQL> EXEC DBMS_CONNECTION_POOL.stop_pool;
SQL> EXEC DBMS_CONNECTION_POOL.start_pool;

Pero claro, ¿qué ocurre si no tenemos el password del usuario? ¿ o si no están los listener necesarios configurados? ¿o simplemente si queremos hacerlo "de otra forma" pero que sea más rápida?.

Mi solución ha sido un poco bestia, como matar moscas a cañonazos, pero efectiva.

Viendo los procesos del sistema

ps aux|grep oracle

me di cuenta de había procesos con la nomenclatura oracle+SID, en mi caso oracleorcl.

ps aux|grep oraceorcl

Por tanto se pueden matar procesos a mano (kill -9) para liberar pool. Pero claro, 20 ó 30 procesos a mano es un poco pesado. Googleando un poco y combinando post nos sacamos de la manga el comando:

ps aux|grep oracleorcl| awk '{print $2}' |xargs kill –KILL

y matamos a todos de golpe :D

Lo malo es que tiramos las conexiones activas (vamos, que podemos joder al personal), así que hay que avisar a los compañeros antes, pero es un mal menor.

Y la pregunta clave, ¿todo esto para qué? Pues simplemente ganamos un poco te tiempo y ya no es necesario reiniciar Oracle, y porque me divirtió investigar este tema, por supuesto ;D

Por cierto que este problema de pools al parecer sólo se da en java, ya que el driver de oracle no libera las conexiones pilladas.

saludos

domingo, 23 de diciembre de 2012

Feliz Navidad.

Aunque este blog lo creé en 2011, no fue hasta julio de 2012 que me lo tomé un poco más en serio. Al principio lo iba a usar como blog de notas personal, con acceso privado para escribir chuletillas que uso de vez en cuando en el trabajo, pero por motivos que no vienen al caso decidí hacerlo público y cambiar un poco el tipo de contenidos.

No fue hasta octubre (no podría jurarlo) que incorporé estadísticas de google, así que los datos no son del todo fiables. Aún así ha sido un placer recibir unas 500 visitas estos meses y comprobar que los códigos que escribo han servido para facilitar el trabajo al visitante.

Estadísticas del año 2012 por países.

Algunos de los post como las series de OpenETL han sido fruto del trabajo de meses de investigación sobre la librería, viendo el código por dentro, haciendo pruebas, etc. Otros en cambio han sido resultados de búsquedas de bing y google sobre temas en concreto que yo después de leer cientos de post he tratado de ordenar. En estos casos siempre he citado, y lo seguiré haciendo, las referencias.

Como he comentado, durante estos meses he tenido unas 500 visitas. La mayoría han sido españolas, aunque otras han venido de países como México, Alemania, EEUU, etc. Cuatro navegadores han sido los usados para ver el blog. Me sorprende que Chrome esté en cabeza de navegadores usados, creo que Google ha hecho un buen marketing.

Estadísticas del año 2012 por navegador.

A todos los visitantes del blog, os deseo que paséis unas muy felices fiestas. Espero veros por aquí el año que viene.

Feliz navidad.

Related Posts Plugin for WordPress, Blogger...