Restaurar Backup en Informix - Siu Guarani 2.70

Hola, estoy empezando la migración de Siu Guarani 2.70 a 3.11 y como primer paso, estoy pasando de 2.70 a 2.80. Tengo un backup del día de la base de producción en Informix. No sé como restaurarlo y que me genere una nueva base (guarani_test o guarani_migracion, por ejemplo) para que no me pise los datos de la base actual. Hay algún instructivo al respecto? Agradezco cualquier ayuda que me puedan dar.

Saludos.

Guillermo.

No recuerdo si hay algún instructivo… pero asumiendo que ya sabes restaurar el backup, para restaurarlo con un nombre de base de datos diferente te dejo los pasos:

  • renombrar la carpeta nombrebasededatosviejo.exp por nuevonombre.exp

  • renombrar el archivo nombrebasededatosviejo.sql por nuevonombre.sql y editar su primera línea reemplazando “DATABASE nombrebasededatosviejo delimiter” por “DATABASE nuevonombre delimiter”

Con esos cambios cuando hagas el DBIMPORT tenés que usar el nombre nuevo en vez del viejo y listo.

Guillermo, no podras pasar directamente de la version 2.7 a la version 3.11 ya que eso requiere que migres hasta la version 2.9.1 de Guarani 2 para luego hacer la migracion al Guarani 3 version 3.11.
Supongo que no es esto lo que queres hacer sino ir a la ultima version publicada de Guarani 2 que es la version 2.9.1
Para ello tendras que actualizar la base desde la version actual 2.7 a la version 2.8.0, 2.8.1, 2.9.0 y finalmente a 2.9.1

Para pasar de una version a otra tendras que correr los scripts de conversion de la base (uno por vez).
No llego a entender que fue lo que hiciste, pero te comento que deberias hacer, al menos para hacer una prueba de migracion a 2.9.1:

  1. Hacer una copia de la base de producciòn. Esto lo haces exportando la base con el comando dbexport y luego importando la base con el otro nombre con el comando dbimport. (Ver la respuesta anterior de Diego para renombrar la base a importar)
  2. Tomar los scripts de conversion de la base que la convierten de la version 2.7.0 a la version 2.8.0. Correr uno a uno cada script hasta finalizar la ejecucion de todos. Si alguno falla deberas borrar la base, volverla a importar y comenzar todo de nuevo.
  3. Repetir el paso 2 tantas veces por cada pasaje de una version a otra del sistema.
  4. Ya estando en version 2.9.1, deberas bajar el exe de esta version, autogestion y el modulo de preinscripcion (si lo usan) y configurar la conexion con esta nueva base y ver hacer las pruebas necesarias para verificar que todo esta funcionando correctamente.
    En este caso si tienen personalizaciones deberan armar nuevamente el exe de Gestion con los objetos personalizados que tengan.

Una vez que todo este funcionando correctamente deberas hacer todo esto nuevamente con la base actual de producciòn bajando los servicios para que no haya conexiones ni actualizaciones en la base. Para esto tendras que planificar en que momento hacerlo para que el servicio este interrumpido el menor tiempo posible.

Gracias por las respuestas!

Sí, de la versión 2.7 se que primero tengo que pasar a la 2.8 y en eso estoy. Por eso, estoy con el backup, pero el tema es que no se cómo restaurarlo, teniendo en cuenta que lo estoy corriendo en el mismo server de producción y no quiero pisar la base actual. Concretamente no sé cómo se hace, por eso preguntaba si hay documentación al respecto, tengo el archivo .rar pero no quiero meter la pata, no sé en dónde debería copiarlo y qué instrucciones correr en el dbaccess para crear esa nueva base.

Lo único que probé es “DATABASE”, “CREATE”, “guarani_270_mig”, pero bueno, ando medio desorientado. Sería en “C:\Program Files\IBM\IBM Informix Dynamic Server\11.10” en el servidor, donde debería pegar la carpeta guarani_270.exp (y renombrarla a “mig”) del rar?

Hola

Si vos tenes un rar de la exportacion:
1.- En el directorio que te guste, descomprimí el rar.
2.- te creará un directorio guarani_270.exp
3.- Abris la consola de informix y vas al directorio que elegistes en 1.
4.- renombras el directorio guarani_270.exp
5.- entras al directorio definido en 4
6.- renombras el archivo guarani_270.sql con el mismo nombre que el directorio de 4.
7.- editas el archivo sql y cambias el nombre en la primera linea (en algunas versiones de informix no es necesario esto)
8.- ejecutas dbimport

Emilio

Perfecto, pude cumplir con los pasos descriptos, pero no con el dbimport. En la ventana de ol_ids_1110_1, parado en “C:\Program Files\IBM\IBM Informix Dynamic Server\11.10” (ahí tengo la carpeta “guarani_270_mig.exp” que tiene la base copiada) escribo en la línea de comandos “dbimport”. Pero tira errores diversos, depende qué escriba en la línea de comandos:

  • *** create database
    225 - Cannot create file for system catalog (systables).

130 - ISAM error: no such DBspace

  • Database name is missing

  • Cannot open sql script file

Cómo debería ser la sentencia completa?

en informix un dbspace es un espacio reservado (de almacenamiento), hay 5 espacios, los datos y los procedimientos se almacenan en datadbs (por defecto)

si podés conectarte al informix, posicionate en la base sysmaster y ejecutá esta consulta (muestra los espacios y su tamaño):

select
sysdbstab.name,
sum(syschktab.chksize*2048) total,
sum(chksize - nfree)2048 usado,
sum(syschktab.nfree
2048) libre
from
syschktab, sysdbstab
where
syschktab.dbsnum = sysdbstab.dbsnum
group by 1;

la sintaxis del dbimport sería algo así:

dbimport nombre_base_de_datos -d nombre_dbspace -i ruta_de_la_carpeta_exp

para que toda la salida en vez de salir a la terminal quede en un txt podés agregarle:

dbimport nombre_base_de_datos -d nombre_dbspace -i ruta_de_la_carpeta_exp > ruta_log\archivo.log

por cierto, tenés tantos mensajes de error diferentes que no supe que atacar primero :smiley: bromas aparte, entre todos esos mensajes dice:

no such dbspace: el dbspace que donde querés importar la base no es válido (de ahi el principio de mi respuesta, fijate el nombre de tu espacio de datos y usá el correcto).

cant open sql file: ¿renombraste al archivo sql del backup?

cant create file system catalog: esto supongo que es porque falló al encontrar el dbspace

completo un poco…

desde la consola podés poner onstat -d y te muestra la información de los dbspaces que antes te sugerí veas con el select…

si vas a duplicar las bases asegurate de tener suficiente espacio, por otro lado no se si te conviene meter las 2 bases en un mismo espacio, yo le crearía un espacio de datos nuevo (buscá ayuda sobre el comando onspaces en google y si algo no estendés siempre podés consultar en el foro:)

suerte.-

El resultado que me da es el siguiente:

name total usado libre
rootdbs 512000000 25241600 486758400
logsdbs 1024000000 655468544 368531456
temporaldbs 512000000 210944 511789056
guaranidbs 3072000000 641091584 2430908416

El dbspace que debería usar es el guaranidbs, no? Supongo que es el que usa la base de producción. O si estoy con las pruebas de migración, no habría dramas con usar temporaldbs? Al menos lo que quiero es probar que ande. En el mismo dbspace está la base de desarrollo, y versiones anteriores.

Los varios mensajes de error son tantos porque fui cambiando lo que escribía en la línea de comandos, si no le pifiaba en algún nombre era porque me faltaba el dbspace, veré ahora siguiendo el ejemplo que me diste. Gracias.

según veo tu espacio de datos es guaranidbs…

de los otros dbspaces entiendo que:

temporaldbs es de uso interno del servidor, se usa para guardar las tablas temporales y los resultados de las consultas (hasta que termina el fetching del cliente), debería darte error al querer usarlo pero por la dudas yo no probaría :smiley:

logsdbs es el espacio que usa para los logical logs (espacio temporal usado para manejar transacciones y poder hacer rollback) y los physical logs (para asegurar la consistencia de los datos).

rootdbs es el espacio en el que se almacenan las tablas de sistema (systables) y otros datos propios del servidor.

Recapitulando, lo que hice fue lo siguiente…

  1. Descomprimí el backup (archivo rar) en la carpeta C:\Program Files\IBM\IBM Informix Dynamic Server\11.10
  2. Renombré esa carpeta como “guarani_270_mig.exp”
  3. Renombré el archivo “guarani_270.sql” que estaba dentro como “guarani_270_mig.sql”
  4. En la primera línea de este archivo corregí la base de datos “{ DATABASE guarani_270_mig delimiter | }”
  5. Me metí en la consola y ejecuté la instrucción:
    “dbimport guarani_270_mig -d guaranidbs -i C:\Program Files\IBM\IBM Informix Dynamic Server\11.10”

Venía todo bien pero me tira este error: “Cannot open sql script file”…

la ruta del archivo está en formato largo… probá poniendo la ruta entre comillas dobles.

algo así:

dbimport guarani_270_mig -d guaranidbs -i "C:\Program Files\IBM\IBM Informix Dynamic Server\11.10"

Hola

Si estás en el directorio que contiene a guarani_270_mig.exp no te hace falta poner el parámetro -i

Emilio

Probé con y sin comillas y con y sin el parámetro -i y me tira el mismo error.

te dejo el link de la ayuda oficial de informix para ese error: http://www-01.ibm.com/support/docview.wss?uid=swg21155935

Hola

Otro detalle
A la importación la tenes que hacer con usuario dba.

Ello implica que dba tiene que tener acceso al servidor informix y tener permisos de lectura y escritura sobre el directorio en el cual estas y sobre el de la exportación de la base de datos.

Emilio

Puse la carpeta “guarani_270_mig.exp” con permiso total y ahora pudo andar la migración tras ejecutar la línea dbimport guarani_270_mig -d guaranidbs -i “C:\Program Files\IBM\IBM Informix Dynamic Server\11.10”. Al menos arrancó!!

Luego de importar la base tenes que pasarla a modo buffered log o unbuffered log para uqe soporte transacciones sino no va a funcionar el sistema.
Esto lo haces desde linea de comandos con el comando ondblog u ontape (con este ultimo va a peidr el nivel de backup ya que ademas realizarà un backup, podes ponerle el valor 0 para que realice un backup completo de la instancia):
…\ontape -s -U nombre_base_importada

El dbimport se hizo bien, sin errores.

Intenté correr el ontape -s -U guarani_270_mig pero tira este error:

[b]Archive failed - Error changing logging status - ‘guarani_270_mig’. iserrno 107.

Program over.[/b]

Este error creo se da porque hay alguna conexion activa a esa base. Fijate de no tener conexiones a la base y luego correr ese comando.
Con el comando onstat -u podes consultar las conexiones que hay.

Guillermo:

Como esto seguramente lo vas a tener que realizar más de una vez, me permito algunas sugerencias prácticas:

  1. Colocar el archivo de la exportación en una carpeta más corta (ejemplo: C:\Exports\guarani_270_mig.exp)
  2. Posicionarte siempre en esa carpeta de exports (C:\Exports) y no es necesario el uso del parámetro -i
  3. Veo que tenes ya al menos 2 bases: una base de producción y otra de desarrollo en el dbspace guaranidbs, y no sé si alguna otra más (versiones anteriores me pareció que mencionabas). Te sugiero que crees un dbspace nuevo y grande para la nueva base de datos.
  4. Para el cambio del modo de logging ejecuta ontape -s -L 0 -U guarani_270_mig , habiéndote asegurado que no hay nadie conectado a la base que le querés cambiar el modo.

El error 107 de ISAM es que hay un registro lockeado, que puede ser de la misma base o algún registro de las systables, en este caso solo sería momentáneamente. Fijate que no tengas otras sesiones de consola abiertas y usando un dbaccess.

Saludos

Gustavo