"Copiando" una base de datos DB2

Publicado por Norberto Herz el
Si algo tiene DB2 (de bueno y de malo) es que para realizar casi cualquier operación, existen muchas maneras diferentes de hacerlo (más de las necesarias quizas). Pero esto lleva a tener que conocer las diferentes precondiciones para cada procedimiento.
En este caso, algo que debería ser sencillo, puede resultar un poco engorroso (la documentación está dando vueltas por allí, pero algo desorganizada).
¿Como copiar una base de datos? Existen diversas maneras de hacerlo.
  • Opción 1: Backup & Restore: Esta opción es útil cuando se quiera realizar una copia de seguridad para ser restaurada más tarde en el mismo server del cual se origina, o incluso, en máquinas con características similares (sobretodo, sistema operativo). Existen 2 tipos, pero más allá de sus diferencias técnicas, quiero hacer hincapié en sus pre-requisitos y sus pos-condiciones:
    • Online Backup: La principal ventaja, es que no existe la necesidad de desconectar todas las aplicaciones que estén haciendo uso de la base de datos. Una desventaja: NO SE PUEDE RESTAURAR EN UN ENTORNO CON DISTINTO SISTEMA OPERATIVO (y por este motivo empezó mi búsqueda).
    • Offline Backup: No tiene el problema de la restauración en otras plataformas, pero, claro está, necesita que todas las aplicaciones que estén accediendo a la base, cierren sus conexiones. (Nota: para saber que aplicaciones tienen conexión, ver el comando db2 list applications).
  • Opción 2: DB2move: Estando en el entorno de la base que quiere hacer copiada, DB2move export, realiza una exportación de todos los datos, generando una buena cantidad de archivos dentro de la carpeta donde se ejecuta el comando. Luego, haciendo DB2move load, estando en la carpeta que contiene los archivos, los datos se cargan a la base de datos indicadas. He aquí, que esa base, debe existir y tener la misma estructura de tablas y schemas que la original (incluso constrains). Afortunadamente, esto es facil de obtener también: db2look -d -e -a -o genera el DDL y lo almacena en el file especificado (usando la base de datos, pero no creandola). Luego, Creando la base de datos (CREATE command) y corriendo db2 -tvf , somos capaces de crear la estructura de base de datos, para luego poder correr el db2move load que terminará de importar los datos.
Pasando en limpio, los pasos de esta segunda opción serían:
1. Generar el DDL: db2look -d -e -a -o
2. Generar el export de datos: db2move export
3. Suponiendo que estamos conectados a un servidor remoto y queremos pasarlo a alguna otra terminal, copiar la carpeta con el archivo con ddl y los exports a la nueva terminal.
4. En la terminal, db2 create database
5. Generar la estructura: db2 -tvf
5. Importar los datos: db2move load

Todos los comandos de DB2 tienen infinidad de opciones, y los mencionados no son la excepción, pero para simplificar, preferí ir directo al punto. En los links adjuntos, paso algunas fuentes que usé, y siempre pueden ver la documentación de TODOS los comandos de DB2 en http://www.ibm.com/developerworks/data/library/techarticle/dm-0406dang/index.html .

Links útiles: