lunes, 31 de mayo de 2010

Actualizar zona horaria en Ubuntu

· Primero, sacamos una copia del fichero actual, por si hubiera que volver atrás:

mv /etc/localtime /etc/localtime.old

· Crear un enlace simbólico a la zona que queremos que tenga nuestro servidor:

ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime


La otra opción es reconfigurar el paquete tzdata

sudo dpkg-reconfigure tzdata

martes, 25 de mayo de 2010

modificar instancia de informix

Cuando se trabaja con Informix, y se tiene odbc generados para algún servidor que tenga una determinada instancia (ejemplo ol_srv1) y tenes otro servidor que tenga el mismo nombre de instancia, el odbc da problemas al configurarse, porque por algo al poner la instancia (ServerName en el odbc de Windows) entonces queda atada la instancia a la ip, entonces si configuras otro odbc y también pones el mismo servername, y cambias la ip, todos los odbc generados que tengan ese servername quedan con la misma ip, y esto puede causar problemas, o confusiones.

Entonces la solución es cambiar la instancia, pera eso debemos hacer los siguientes 4 pasos.

En el ejemplo cambiaremos en uno de los equipo el nombre de la instancia de ol_srv1 a ol_srv2

1 – tocar el archivo /opt/informix/ifmx.sh, cambiamos donde dice ol_srv1 a ol_srv2

2 – mover el archivo /opt/informix/etc/onconfig.ol_srv1 a /opt/informix/etc/onconfig.ol_srv2

3 – en el archivo onconfig.ol_srv2 DBSERVERNAME modificar ol_srv1 a ol_srv2

4 – el archivo /opt/informix/etc/sqlhost cambiar ol_srv a ol_srv2

Luego reiniciamos informix y queda este equipo con el nombre de instancia ol_srv2.

En este pos lo único que queda es agradecerle a Diego, que fue quien me enseño como cambiar esto, y exigio que lo nombrar.

Agrandar Temporales de Informix

Si necesitamos agrandar los temporales de Informix, para por ejemplo cuando nuestra aplicación utiliza índices temporales muy grandes, lo que hacemos es lo siguiente:

Debemos ir a la carpeta donde están los temporales (normalmente /etc/datos.informix/).

Entonces con el motor de base de datos levantado ejecutamos los siguiente

onspaces -c -d temp4dbs -t -p /opt/datos.informix.test/temp4dbs.000 -o 0 -s 256106

Luego en la carpeta de instalación de informix (normalmente /etc/informix) en la carpeta etc, editamos el onconfig, sería algo así:

informix@suseimf:/opt/informix/etc>cd $INFORMIXDIR/etc

informix@suseimf:/opt/informix/etc> vi $ONCONFIG

agregamos el nuevo temporal en la línea del DBSPACETEMP, sería algo así:

DBSPACETEMP tempdbs,temp1dbs,temp2dbs,temp3dbs...... # Default temp dbspaces

En este caso tenemos 4 archivos de temporales, esto lo tienen que adaptar a sus necesidades y configuración que hayan realizado, y dependiendo del archivo que hayan creado.

sábado, 22 de mayo de 2010

Reload automatico de clases en tomcat

Para los desarrolladores estar bajando y subiendo el tomcat para que se actualicen las clases es un poco molesto, entonces tomcat provee de una configuración para no tener que bajar y subir, sino que solo al copiar las clases el solo se actualiza.

Tenemos que editar el archivo context.xml que se encuentra en la carpeta conf.

Buscamos el siguiente texto

context privileged="true"

Y lo cambiamos por este

context privileged="true" reloadable="true"

viernes, 21 de mayo de 2010

Importar .sql en informix

Para importar un .sql con insert y update a informix deberían de ejecutar lo siguiente:

dbaccess mi_base script.sql.

Puntos a tener en cuenta, primero se tienen que loguear con un usuario de permisos en informix, el archivo debe de ser .sql y tener permisos en ese archivo.

El .sql yo tengo insert y update, pero puede tener cualquier sentencia sql.

miércoles, 19 de mayo de 2010

Wsdl Inspector windows 7

Si trabajas con Windows 7, con genexus (por lo menos la versión 9), y tenes que utilizar algún webservice entonces tenes que trabajar con el wsdl Inspector, pero al ejecutarlo la primera vez, este no funciona.

Para arreglar esto tenemos que registrar una dll, entonces se debe de hacer lo siguiente:

Desde dos, desde donde se esta instalado el framework, corremos lo siguiente:

regasm “Dir donde está instalado genexus”\GeneXus90\gxwsdlinspector.exe"

por ejemplo se podrían seguir los siguientes 3 pasos

1) Abrir CMD

2) Ir a: C:\Windows\Microsoft.NET\Framework\v1.1.4322

3) Ejecutar: regasm "C:\Program Files (x86)\ARTech\GeneXus\GeneXus90\gxwsdlinspector.exe"

Nota: Gracias a Federico que fue quien me paso la solución

/bin/sh^M: bad interpreter: No such file or directory

Si en algún momento les salió este error, y pasaron horas intentando ver que es, no son los únicos, a mi me paso. Entonces les cuento cual es el error.

El problema es cuando pasas algún .sh que utilices (por lo menos en mi caso), en algún momento lo pasaron por Windows, entonces algún símbolo extraño le puso.

Entonces para solucionar el problema hay que editar el .sh directamente desde Linux y crearlo directamente desde ahí, si el código es muy largo lo mejor es abrir un putty, en Windows editar el archivo con block de notas o el editor que quieran, copiar todo el código, y en putty, hacemos vi miscrip.sh, luego i (insertar), y luego botón derecho del mouse, esto pega todo lo copiado, y :wq, y listo, arreglado el problema.

lunes, 17 de mayo de 2010

Actualizar estadisticas Informix

El problema que estoy teniendo es que tenía una tabla que la cargaba en un solo proceso y esto cargaba 16 millones de registros.

La clave de esta tabla era los 2 primeros registros y luego tenia uno de datos que era un VarChar de 800.

El problema es que al procesar algo de la tabla que comentaba, que es decir al hacer un select sobre esta tabla, como las estadísticas no estaban actualizadas, el motor informix, no se daba cuenta que la tabla tenia 16millones de registros y se pensaba que tenia 0 registros, entonces no utilizaba el índice que debía, ya que le motor suponía que al tener tan pocos registros, que no utilizara índices sino directamente recorra la tabla entera.

Esto lo que pasaba era que utilizaba demasiado espacio tanto en los temporales como en los logs de informix, lo cual hacia que mi aplicación se cayera y dijera que no tenia espacio para procesar esto.

Antes de actualizar las estadísticas, hacer un count de la tabla migración me demoraba aprox 20 minutos, luego de actualizar las estadísticas me demora un minuto y poquito.

Entonces el comando para actualizar las estadísticas de informix es el siguiente:

UPDATE STATISTICS LOW FOR TABLE nombreTabla; (ejecución muy rápida, estadísticas poco detalladas, planes de ejecución adecuados)

UPDATE STATISTICS MEDIUM FOR TABLE nombreTabla; (ejecución relativamente rápida, estadísticas confiables, planes de ejecución buenos)

UPDATE STATISTICS HIGH FOR TABLE nombreTabla; (ejecución muy costosa, estadísticas con máximo detalle, planes de ejecución óptimos)

Si se esta ejecutando esto desde genexus, se debe de poner adelante SQL, y poner este código en algún procedimiento.

dbexport / dbimport en informix

Para respaldar una base de datos en informix, tenemos lo que posteamos en otro post (http://mistrucosinformaticos.blogspot.com/2010/02/importar-y-exportar-base-en-informix.html), pero también tenemos, y es más fácil, dbexport y dbimport.

Par exportar la base de datos, ejecutamos:

dbexport –d nombre_base_de_datos

ejemplo: dbexport –d mibase

Esto nos genera una carpeta mibase.exp, con muchos .unl, y un mibase.sql

Para importar este respaldo, lo que hacemos es nos paramos donde esta la carpeta .exp, por ejemplo si ejecutamos el comando anterior en /home/informix, nos genera una carpeta /home/informix/mibase.exp, y para ejecutar el siguiente comando nos paramos en /home/informix.

Entonces para importar, ejecutamos lo siguiente

dbimport mibase –d datosdbs (si queremos levantar a datosdbs, sino al que sea).

Este sería el caso en que todo anda bien, ahora vamos a poner 2 ejemplo en los cuales podemos tener algún problema.

El primer caso seria que la base que respaldo se llame mibase, y la base donde tengo que levantarla se llama migase2, entonces para poder importarla tenemos que hacer 2 cosas.

La primera es renombrar la carpete, en el ejemplo seria mibaes a mibase2.

mv mibase.exp mibase2.exp

Y lo siguiente es entrar en la carpeta mibase2.exp, encontrar el archivo mibase.sql, editarlo y en el primer renglón donde dice mibase, cambiarlo a migase2, y también renombrar el archivo mibase.sql a migase2.sql.

Luego de esto solo se debe de importar con dbimport la base y listo.

Ahora el segundo inconveniente, es si tenemos la fecha americana en un informix (ejemplo 12/31/2010) o la fecha española (ejemplo 31/12/2039). Si tenemos diferencia en el servidor donde hacemos el backup y el servidor donde lo levantamos, cuando ejecutemos el dbimport nos dará un error y no nos levantara la base de datos entera.

Para detectar que debemos hacer, debemos editar alguno de los unl, y ver en que formato esta la fecha, y dependiendo del formato agregar los siguiente:

Fecha inglesa: export DBDATE=MDY4/

Fecha española: export DBDATE=DMY4/

Luego de esto se corre el dbimport, y listo.

domingo, 16 de mayo de 2010

sábado, 15 de mayo de 2010

Configurar usuario y contra para admin de tomcat

Normalmente cuando instalamos un tomcat nuevo ya sea en Windows o Linux, normalmente instalamos el admin, bueno lo primero que intentamos es acceder para levantar, bajar o ver solamente las aplicaciones que tenemos, pero lo primero que nos pide es la contraseña, y tenemos que configurarla.

Esto es muy fácil, lo que hay que hacer es editar el archivo de TOMCATDIR/conf/tomcat-users.xml, donde tomcat dir es la raíz de donde está instalado tomcat, por ejemplo c:\tomcat o si es Linux /tomcat

Y lo que tenemos que configurar es el rol usuario y contra de manager, entonces debería de quedar algo asi (pueden haber mas líneas)

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

<role rolename="manager"/>

<role rolename="admin"/>

<user username="admin" password="" roles="admin,manager"/>

</tomcat-users>

La líneas que tienen que agregar o editar son la 3ra y la 5ta, si se fijan para acceder al manager en este ejemplo usarían el usuario admin, y la contra vacía.

miércoles, 12 de mayo de 2010

Agrandar disco de VMWare

Hoy otra vez tenia que una maquina virtual hecha con VMWare, le tenía que agrandar el disco, si se fijan en el post http://mistrucosinformaticos.blogspot.com/2008/12/agrandar-particion-en-maquina-virtual.html van a ver como lo hacía hasta hoy.

Por casualidad antes de hacer esto fue a editar la configuración de la maquina virtual, luego fui a disco duro, y abajo donde dice Utilitis, abrí el combo y dice Defrag, Expand, Compact, obviamente lo primero que hice fue ejecutar Expand, me pide el tamaño al cual quiero llevar mi disco duro, y luego de aceptar, espero un rato, y cuando termina tengo el disco ya del tamaño pedido. Eso si van a tener que utilizar algun programa para agrandar la particion (sugiero Gparted).

Esto lo probé con VMWare Workstation, y el Player nuevo, que también tienen edición y creación de maquinas.

Asi que desde ahora no tenemos que utilizar los comandos de DOS sino que el mismo VMWare lo tiene todo incluido en su IDE.