Mostrando entradas con la etiqueta Base de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Base de datos. Mostrar todas las entradas

miércoles, 26 de noviembre de 2014

Backup / Restore base de datos PostgreSQL

¿Cómo exportar e importar una base de datos postgreSQL?
La forma fácil, pero que no siempre funciona es hacerlo por el PgAdmin, ahí es gráfico y se puede hacer un bakup y un restore.
Lo que voy a explicar son un par de formas de hacerlo desde consola, para los que utilizamos Linux, que también se puede utilizar de Windows.

Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}


Backup:  $ pg_dump -U user bd_name > archive_name.sql

Restore: $ psql -U user db_name < /directory/archive.sql

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.

lunes, 5 de abril de 2010

Consultas en Informix sin commitear

Por mas que la palabra commitear no exista creo que todos sabemos que quiere decir, para el que no sepa aca va una rápida definición:

Commitear: realizar un commit en la base.

Bueno la idea es que tengo algunos procesos que hacen miles de inserte antes de realizar un commit, entonces lo que necesito es saber si estos insert se están realizando y si lo que hace es algo coherente, antes de que termine el proceso, para cortarlo, o dejarlo seguir funcionando o lo que sea.

Entonces para esto entramos con dbaccess, y creamos una nueva consulta, pero al inicio seteamos que queremos los registros aunque no se hayan commiteado.

En resumen la consulta:

Select * from tabla;

Pasaría a ser

set isolation to dirty read;

Select * from tabla;

Espacio en Informix

Tengo un servidor con informix, y estaba teniendo problemas porque no me dejaba ingresar más datos, entonces quería saber cuánto espacio le quedaba a este para trabajar. Corriendo el siguiente comando

onstat –d

y viendo en dbspace de datos (normalmente datosdbs) ahí en la columna free nos informa cuanto tenemos libre.

lunes, 8 de febrero de 2010

Importar y Exportar base en Informix

Vamos a ver como hacemos para exportar una base de datos y levantarla en otra, para esto debe de tener creada la base origen y no haber creado la base destino.

Exportar una base

onunload -t <tapeDevice> -b <blockSize> -s <tapeSize> <nombreBase>

donde:

<tapeDevice> es el dispositivo donde se va a hacer la exportación (puede ser un archivo)

<blockSize> es el tamaño de bloque del dispositivo donde se va a hacer la exportación

<tapeSize> es el tamaño del dispositivo donde se va a hacer la exportación.

<nombreBase> es el nombre de la base a exportar

Por ejemplo, para exportar la base tributos a disco:

onunload -t /tmp/origen.dat -b 64 -s 20000000 baseorigen

Notas:

- El archivo /tmp/origen.dat debe existir y debe tener como dueño y grupo 'informix'. Además, los permisos deben ser 660.

- Cuando vayas a importar la base, vas a tener que usar los mismos tamaños de bloque y del dispositivo, así que acordate que valores usaste al exportar.

- Si la exportación se hace a disco, el límite del archivo generado es de 2 Gb.

- Si la exportación se hace a cinta, o a un dispositivo de disco crudo, no hay límite de espacio.

Importar una base

onload -t <tapeDevice> -b <blockSize> -s <tapeSize> -d <dbspace> <nuevoNombreBase>

donde:

<tapeDevice> es el dispositivo desde donde se va a hacer la importación (puede ser un archivo)

<blockSize> es el tamaño de bloque del dispositivo desde donde se va a hacer la importación

<tapeSize> es el tamaño del dispositivo desde donde se va a hacer la importación

<dbspace> es el nombre del dbspace donde se quiere importar la base

<nuevoNombreBase> es el nombre con que se importará la base previamente exportada

Por ejemplo, para exportar la base tributos a disco:

onload -t /tmp/origen.dat -b 64 -s 20000000 -d datosdbs destino

Notas:

- Antes de hacer la importación, hay que borrar la base destino si existiera

- Los valores de 'blockSize' y 'tapeSize' deben ser los mismos usados durante la exportación.

- Luego de importar, habría que ponerle transacciones a la base, por ejemplo con:

ondblog buf destino

onbar -b -F


sábado, 7 de noviembre de 2009

Configurar Informix para usar con Genexus

Se me presento el siguiente inconveniente, me dejaron un equipo Linux con Informix instalado y tengo que configurarlo para que funcione con una aplicación Genexus.

Recordando viejas épocas puede crear una base de datos con dbaccess, para esto tenes que entrar al equipo Linux y loguearte con el usuario informix, luego ejecutas dbaccess y te sale un administrador para ejecutar consultas, eliminar crear, tablas, bases, etc.

Entonces con esto llego a crear la base de datos, luego eligió el dbspace (alguno que este configurado), luego en la parte de logs le pongo none (aquí empieza el problema).

Entonces para que genexus pueda utilizar la base de datos esta debe de ser transaccional, entonces cuando creas la base debes elegir log o buggered log, pero como no lo hice ahora con unos comanditos vamos a solucionar el problema.

Ejecutamos lo siguiente


ondblog buf <nombreBase> (si vas a configurar buffered log)


ondblog unbuf <nombreBase> (si vas a configurar unbuffered log)

cualquiera de los dos comandos tienen que ejecutarse sin aplicaciones conectadas a la base. Si todo funciona bien, debería devolver 0.


Luego hay que ejecutar un respaldo para que se activen los cambios.

Podes simular un respaldo ejecutando:



onbar -b -F


Con esto la base de datos esta bien configurada, pero ahora debemos definir el modelo genexus, obviamente elegimos como dbms informix, como trabajo con java web, lo que se debe de definir es una conexión jdbc, luego en las propiedades del dbms

en JDBC Driver ponemos custom,

en Custom JDBC Driver ponemos com.informix.jdbc.IfxDriver,

en Custom JDBC URL ponemos el string de conexión jdbc:informix-sqli://servidor:puerto/base:INFORMIXSERVER=ol_.......

Obviamente modificamos el servidor el puerto, etc, y debemos de verificar que el jdbc que tengamos que tenga las carpetas com, informix, jdbc, ifxdriver, sino debemos de modificar esto.

Con estos puntos ya podríamos trabajar con genexus con informix.


Volver al inicio