my github
english | español
Waldo Urribarri HOME PROJECTS ABOUT ME


Copiar una base de datos DB2 entre sistemas

He encontrado varias veces la necesidad de hacer copias de una base de datos DB2 de un sistema a otro. Quizá porque la base de datos tiene algunos datos que necesito en mi ambiente local, o sólo quiero cambiarle el nombre (no he visto una forma fácil de hacer esto). Les mostraré los pasos que he realizado para hacer esto, que funcionan para hacer backups y restauraciones en sistemas Windows o Linux.

El ejemplo que mostraré es de Linux a Windows:

1) Conéctate al sistema Linux con un usuario con privilegios DB2 (que pueda conectarse a la base de datos, ejecutar comandos db2, db2move, db2look, etc).

2) Crea una nueva carpeta y has cd hacia ella (crearemos muchos archivos).

3) Ejecuta el commando: db2move DATABASE_NAME export

Este último comando exporta la DATA de la base de datos.

4) Ejecuta el comando: db2look –d DATABASE_NAME –e –a –o db2look.sql

Nota: Esto tiene las opciones que yo uso/necesito. Para ver un listado completo de opciones mira en https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002051.html

Este último comando exporta la ESTRUCTURA de la base de datos.

Ahora tenemos todo lo que necesitamos para hacer una copia de la base de datos en el sistema Windows (o cualquier otro sistema).

5) Copia la carpeta que creamos en el sistema Linux al sistema Windows.

6) Ajusta (de ser necesario) el script db2look.sql. Quizá quieres cambiar el nombre de la base de datos, autorización de schema, etc.

7) Ahora, abre el command prompt (con un usuario que puede ejecutar comandos db2, db2move, db2look).

8) Crea la base de datos con el comando: db2 create database DATABASE_NAME

9) Conéctate a la base de datos con el comando: db2 connect to DATABASE_NAME

9.5) Si usaste las mismas opciones que yo en el comando db2look (paso 4) puedes necesitar crear los tablespaces de la base de datos manualmente antes del siguiente paso.

10) Ejecuja el script db2look.sql con el comando: db2 –tvsf db2look.sql

11) Carga los datos en la base de datos con el comando: db2move DATABASE_NAME load

Luego de hacer esto, las tablas estarán en estado CHECK PENDING. Para ver todas las tablas en ese estado, conéctate a la base de datos y ejecuta este query: SELECT tabname FROM syscat.tables WHERE status = 'C';

12) Para cambiar las tablas al estado normal, puedes ejecutar lo siguiente: SET INTEGRITY for TABLE_NAME IMMEDIATE CHECKED;

Nota: Si tienes muchas tablas, o tienes relaciones circulares, solo usa el mismo commando pero con todos los nombres de tablas separados por comas, como: SET INTEGRITY for TABLE_NAME, TABLE2_NAME, TABLE3_NAME IMMEDIATE CHECKED;


www.000webhost.com