供稿人:刘淳
内容提要:
本文描述将非UTF-8的IBM DB2 Content Manager图书馆服务器数据库(ICMNLSDB)转换为使用UTF-8编码的数据库的步骤,相关命令,以及注意事项等。
为了支持多语言的环境,有时可能需要将非UTF-8的IBM DB2 Content Manager服务器数据库转换为使用UTF-8编码的数据库。由于IBM DB2 Content Manager资源管理器数据库一直使用UTF-8代码页来存储数据,所以这个转换的过程只需要处理IBM DB2 Content Manager图书馆服务器数据库,也即数据库ICMNLSDB。
下面,我们以工作于Windows操作系统的IBM DB2 Content Manager V8.3为例,来介绍一下这个数据库转换的过程。这个数据库转换的步骤也可应用于其它的操作系统平台,只是命令的语法在各个操作系统平台可能略有不同。
在实际进行数据库的转换时,需要注意以下几点:
1.在转换完成之后,需要对系统的工作进行测试。测试系统的导入,检索等功能。
2.对于生产系统,在进行操作前,请对系统进行备份。备份可以按照如下的步骤进行:
1)停止所有的Content Manager处理
2)停止所有相关ICMNLSDB数据库的处理
3)执行db2stop/db2start命令
4)完整的备份ICMNLSDB数据库
5)创建一个目录来存放备份的配置信息
A.mkdir c:\temp\backup
B.cd c:\temp\backup
6)执行命令connect to db连接到数据库ICMNLSDB
7)执行下面的命令来备份相关的配置
A.db2 get db cfg for ICMNLSDB > db.out
B.db2 get dbm cfg > dbm.out
C.db2set - all > db2set.out
在对ICMNLSDB数据库进行了完整的备份之后,就可以按照下面的步骤来对数据库的代码页进行转换了。 备份以及进行下面的转换时还要注意,我们使用临时目录c:\temp,请确认该目录下有足够的空间。
将非UTF-8的IBM DB2 Content Manager图书馆服务器数据库(ICMNLSDB)转换为使用UTF-8编码的数据库的步骤:
1.首先,需要连接到DB2数据库ICMNLSDB,命令如下:
db2 connect to ICMNLSDB user icmadmin using password
2.使用db2look命令导出创建对象的DDL语句,以用于之后重建数据库对象,命令和步骤如下:
A.mkdir c:\temp\db2look
B.cd c:\temp\db2look
C.db2look - d ICMNLSDB - l - a - e - xd - f - o db2look.out
注意,在执行命令前请确认c:\temp目录下有足够的磁盘空间。
3.使用db2move命令来移动数据。db2move命令主要用于导出和导入数据。 具体的命令和步骤如下:
A.确认c:\temp目录下有足够的磁盘空间
B.mkdir c:\temp\db2move
C.cd c:\temp\db2move
D.db2move ICMNLSDB EXPORT > db2move.out
E.检查上一步的输出文件 db2move.out, 确认命令正确完成。
db2move命令会将数据库中所有的用户表数据导出成IXF格式的文件。 我们可以将这些IXF格式的文件中的数据导入到其它的数据库中。
4.删除当前的ICMNLSDB数据库
为了重建一个UTF-8代码页的数据库,我们需要将现有的ICMNLSDB数据库删除。在删除当前的ICMNLSDB数据库之前,建议先对其进行完整的备份,以在需要时可以恢复该数据库。 可以按照如下的步骤删除ICMNLSDB数据库:
A.关闭所有和ICMNLSDB数据库的连接
B.执行命令删除数据库:
db2 drop db ICMNSLDB
5.创建新的UTF-8编码的数据库
为了在IBM DB2 Content Manager系统中接受多语言信息并更好的处理多语言信息,我们需要建立UTF-8编码的数据库,这可以通过下面的命令实现:
db2 create database ICMNLSDB using codeset UTF-8 territory US collate using system
6.连接新创建的UTF-8编码的ICMNLSDB数据库, 命令如下:
db2 connect to ICMNLSDB user icmadmin using password
7.重建IBM DB2 Content Manager图书馆服务器数据库需要的数据库对象。
执行前面通过db2look命令导出的DDL语句,以创建需要的数据库对象,命令和步骤如下:
A.cd c:\temp\db2look
B.db2 -tvf db2look.out > load1.log
C.检查load1.log输出文件,确认命令执行成功
8.使用db2move命令将前面导出的数据重新装载到新的ICMNLSDB数据库中, 命令和步骤如下:
A.cd c:\temp\db2move
B.db2move ICMNLSDB LOAD > load2.log
C.检查load2.log输出文件,确认命令执行成功
9.在完成装载数据后,对于某些表对象,可能会处于“检查暂挂”的状态。这时,表是不可连接的。可以通过下面的步骤,将表恢复到正常状态:
A.执行下面的命令,以得到所有当前处于“检查暂挂”状态的表:
db2 "select name from sysibm.systables where status='C'" > checkPending.txt
B.对于checkPending.txt文件中出现的每一个表,执行下面的命令:
db2 “set integrity for <Table> immediate checked”
10.更新索引的统计信息。由于我们使用LOAD参数来执行db2move命令装载数据,则DB2不会更新相关索引的统计信息。这会对系统的性能造成影响,请使用runstats命令来更新数据库中相关索引的统计。
11.在数据库被使用之前,需要重新bind数据库中的相关程序包,以使得这些命令可以用到更新的统计信息,步骤如下:
A.db2rbind icmnlsdb -l tmp.log -u icmadmin -p password all
B.cd C:\Program Files\IBM\db2cmv8\config
C.cmcfgls.bat -t bind
12.检查DB2数据库的相关环境,包括数据库配置参数,数据库管理器配置参数和DB2的注册变量。如果需要,可以根据我们之前作的这些参数的备份对参数值进行修改。
至此,我们的数据库转换工作已经完成。我们建议您对新的数据库进行备份。