lunes, 17 de mayo de 2010

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.

9 comentarios:

Unknown dijo...

buenas.. una consulta: estoy intentando realizar un dbimport pero me sale el siguiente mensaje de error:

can not write data to disk and tape at the same time

que puedo hacer..

Anónimo dijo...

cortarte las venas con una galletita maria

Anónimo dijo...

JA. JA.

Anónimo dijo...

José, ese error es de permisos, no te deja escribir en la cinta donde estas intentando realizar la copia

Anónimo dijo...

Es probable que después de 4 años la respuesta ya se la sude un poco. Pero buen intento no obstante.

Rita dijo...

Hola,
yo quiero hacer un dbexpor y obtengo el error

ERROR: Could not initialize the security subsystem. Please ensure that this account has the necessary privileges and ensure INFORMIXSERVER value exists in the registry and environment.

Anónimo dijo...

Pudiste resolverlo?

Unknown dijo...

Si te sale ese error y estas con Windows solo debes abrir el terminal como adminsitrador, si esta en linux verifica que este con el usuario informix

Anónimo dijo...

Lo interesante es que ese dbimport puede llevar la opcion -l buffered para que la base de datos a crear sea transaccional