清单 6. 导出源数据集
以下是引用片段: db2move dbname export -u username -p password |
根据数据库大小,机器性能的不同,这个导出过程可能耗时几分钟到几个小时不等。在笔者的经历中,这个导出过程就长达 2 个多小时。
4. 生成源数据库系统的数据对象定义语句
在导出了数据之后,要做的就是导出数据对象定义。DB2提供了一个工具叫db2look,用户可以通过它来生成数据库中的数据对象定义,包括别名,表,索引,视图,触发器,用户定义函数,存储过程等。具体的命令如下:
清单 7. 生成数据对象定义语句
以下是引用片段: db2look -d dbname -e -o ddlfile -i username -w password |
如果数据库非常复杂,包含很多的数据对象定义,那么在执行上述命令前,用户有可能要先调整参数appgroup_memo_sz,才能够顺利的生成数据对象定义文件。下面是笔者修改这个参数的命令示例:
清单 8. 调整源数据库参数
以下是引用片段: db2 update db cfg for dbname using appgroup_mem_sz 51368 |
5. 在目标平台创建新的数据库,参照源系统设置参数
在源平台上完成了数据导出和数据对象定义语句生成之后,下面就是要在目标平台建立目标数据库了。参考源数据库的设置为新创建的数据库配置适当的参数,通常需要调整的参数有:
dbheap - 数据堆大小
catalogcache_sz - 目录高速缓存大小
logbufsz - 日志缓冲区大小
util_heap_sz - 实用程序堆大小
buffpage - 缓冲池大小
sortheap - 排序列表堆
stmtheap - SQL 语句堆
applheapsz - 缺省应用程序堆
笔者使用的调整语句如下:
清单 9. 调整语句
以下是引用片段: db2 update db cfg for dbname using dbheap 41599 db2 update db cfg for dbname using catalogcache_sz 38049 db2 update db cfg for dbname using logbufsz 256 db2 update db cfg for dbname using util_heap_sz 20000 db2 update db cfg for dbname using buffpage 1000 db2 update db cfg for dbname using sortheap 4096 db2 update db cfg for dbname using stmtheap 16384 db2 update db cfg for dbname using applheapsz 10242 |
对于非常复杂的数据库,目标数据库的日志参数还需要做出调整,以便在导入数据和生成数据对象时,系统不至于日志溢出。由于笔者要迁移的数据库比较复杂,所以使用了较大的日志配置,命令示例如下:
清单 10. 命令示例
db2 update db cfg for dbname using logfilsiz 8192
db2 update db cfg for dbname using mincommit 1
db2 update db cfg for dbname using logprimary 24
db2 update db cfg for dbname using logsecond 108
6. 导入源数据集
细心的读者可能会发现,这里总结的步骤6和8看似不太符合一般的逻辑顺序