Migrating a Db2 database to the new schema

How you migrate a database with the existing schema to the new schema, by using the sample SQL script file.

Before you begin

Take a backup of the database, and its relevant configuration information, that you are going to migrate and refer to the Db2 entity relationship diagram.

Attention:
In the Db2 database, the LongVarchar data type now has a limit of :
  • 2000 bytes in the SOURCE_FILENAME and DESTINATION_FILENAME columns, in the TRANSFER_ITEM and SCHEDULE_ITEM tables
  • 4000 bytes, or 256 bytes for all the remaining columns, depending on the purpose of each column

If, for any reason, you want to increase the size of these database columns, you can change the script file and increase the size of the corresponding column.

About this task

The following four sample SQL script files are located in <MQ_Installation_Directory>/mqft/sql:
  • db2_varchar_migration_step_1.sql
  • db2_varchar_migration_step_2.sql
  • db2_varchar_migration_step_3.sql
  • db2_varchar_migration_step_4.sql

Procedure

  1. Carry out the following tasks in order:
    1. Run db2_varchar_migration_step_1.sql
    2. Run db2_varchar_migration_step_2.sql
    3. Run db2_varchar_migration_step_3.sql
    4. Run db2_varchar_migration_step_4.sql
    Important: Before running step 1.c, ensure that steps 1.a and 1.b have run successfully.
  2. Issue the command cd <MQ_Installation_Directory>/mqft/sql
  3. Process the SQL script files, using the following commands in order:
    1. Run db2 -tvmf db2_varchar_migration_step_1.sql
    2. Run db2 -tvmf db2_varchar_migration_step_2.sql
    3. Run db2 -tvmf db2_varchar_migration_step_3.sql
    4. Run db2 -tvmf db2_varchar_migration_step_4.sql

What to do next

If you receive some errors while creating new tables or new columns, caused by temporary table spaces, you can resolve these problems as follows:
Error:
SQL State [54048], Error Code [-1585], Message [DB2 SQL Error: SQLCODE=1585 , SQLSTATE=54048, SQLERRMC=null in the trace file of logger

Explanation:

 One of the following conditions could have occurred:

1.  The row length of the system temporary table exceeded the
    limit that can be accommodated in the largest system
    temporary table space in the database.

2.  The number of columns required in a system temporary table
    exceeded the limit that can be accommodated in the largest
    system temporary table space in the database.
Link:
Message SQL1585N.
Solution:
Create a system temporary tablespace for each page as SMS (System Managed). In that case, your query always finds a tablespace with the appropriate page size.
Example:
The following SQL commands resolve the preceding issue:
CREATE BUFFERPOOL BP4K pagesize 4K
CREATE SYSTEM TEMPORARY TABLESPACE STB_4 PAGESIZE 4K BUFFERPOOL BP4K  
CREATE BUFFERPOOL BP8K pagesize 8K
CREATE SYSTEM TEMPORARY TABLESPACE STB_8 PAGESIZE 8K BUFFERPOOL BP8K
CREATE BUFFERPOOL BP16K pagesize 16K
CREATE SYSTEM TEMPORARY TABLESPACE STB_16 PAGESIZE 16K BUFFERPOOL BP16K
CREATE BUFFERPOOL BP32K pagesize 32K
CREATE SYSTEM TEMPORARY TABLESPACE STB_32 PAGESIZE 32K BUFFERPOOL BP32K