Backup: $ pg_dump -U user bd_name > archive_name.sql
Restore: $ psql -U user db_name < /directory/archive.sql
Intentare mostrarles todas las cosas que me pasan día a día en mis pruebas, en mi trabajo, etc.
Backup: $ pg_dump -U user bd_name > archive_name.sql
Restore: $ psql -U user db_name < /directory/archive.sql
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.
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;
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.
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