xlfm22 发表于 2016-11-18 02:41:19

第六部分 DB2关于版本迁移

第六部分DB2关于版本迁移

本文测试环境:Windows 32位平台
            DB2 V7DB2 V8 版本

   在实际应用中,我们有时需要在将数据从一个服务器迁移至另外一台服务器。在windows环境下,使用完全脱机备份的文件可在其他的服务器上进行数据库的完全回复,包括表、数据、视图、触发器、存储过程、用户自定义函数等等的用户自定义对象;另外在恢复以后原来的数据库DB级的配置参数将随数据库的恢复迁移到新的服务器上,但是对于DBM级的配置参数需要在服务器上手工调整。

1、迁移前准备:
在迁移数据库之前,我们可以获取DB级别和DBM级别的数据库配置参数,首先确定数据库和数据库管理的服务已启动,如果没有启动在打开DB2命令处理器:DB2CMD,分别执行如下命令:
DB2START
返回:SQL1026N数据库管理器已激活。
DB2ADMIN START
返回:SQL4406W   已成功启动“DB2 管理服务器”。

2、连接至数据库:
DB2 CONNECT TO DB_NAME
返回:
数据库连接信息

数据库服务器         = DB2/NT 8.2.0
SQL 授权标识         = KUN
本地数据库别名       =TEST

3、获取数据库DB级配置参数列表:
DB2 GET DB CFG FRO DB_NAME


4、获取数据库配置参数详:
DB2 GET DBM CFG
获取DBM级配置参数:
          数据库管理器配置

   节点类型                                       = 带有本地和远程客户机
的数据库服务器

数据库管理器配置发行版级别                              = 0x0a00

打开的文件的最大总数                      (MAXTOTFILOP) = 16000
CPU 速度(毫秒/指令)                     (CPUSPEED) = 2.912790e-007

并发活动数据库的最大数目                        (NUMDB) = 8
Data Links 支持                           (DATALINKS) = NO
联合数据库系统支持                        (FEDERATED) = NO
事务处理器监视器名                        (TP_MON_NAME) =

缺省对方付费帐户                      (DFT_ACCOUNT_STR) =

Java Development Kit 安装路径(JDK_PATH)               = C:\Program Files\IBM\
SQLLIB\java\jdk

诊断错误捕获级别                            (DIAGLEVEL) = 3
通知级别                                  (NOTIFYLEVEL) = 3
诊断数据目录路径                           (DIAGPATH) =

缺省数据库监视开关
   缓冲池                              (DFT_MON_BUFPOOL) = OFF
   锁定                                 (DFT_MON_LOCK) = OFF
   排序                                 (DFT_MON_SORT) = OFF
   语句                                 (DFT_MON_STMT) = OFF
   表                                    (DFT_MON_TABLE) = OFF
   时间戳记                        (DFT_MON_TIMESTAMP) = ON
   工作单元                              (DFT_MON_UOW) = OFF
监视实例和数据库的运行状况               (HEALTH_MON) = ON

SYSADM 组名                              (SYSADM_GROUP) =
SYSCTRL 组名                            (SYSCTRL_GROUP) =
SYSMAINT 组名                        (SYSMAINT_GROUP) =
SYSMON 组名                              (SYSMON_GROUP) =

客户机用户标识-密码插件                (CLNT_PW_PLUGIN) =
客户机 Kerberos 插件                  (CLNT_KRB_PLUGIN) = IBMkrb5
组插件                                 (GROUP_PLUGIN) =
本地授权的 GSS 插件                   (LOCAL_GSSPLUGIN) =
服务器插件方式                        (SRV_PLUGIN_MODE) = UNFENCED
GSS 插件的服务器列表            (SRVCON_GSSPLUGIN_LIST) =
服务器用户标识-密码插件            (SRVCON_PW_PLUGIN) =
服务器连接认证                            (SRVCON_AUTH) = NOT_SPECIFIED
数据库管理器认证                     (AUTHENTICATION) = SERVER
没有权限就允许编目                     (CATALOG_NOAUTH) = NO
信赖所有客户机                         (TRUST_ALLCLNTS) = YES
可信的客户机认证                     (TRUST_CLNTAUTH) = CLIENT
绕过联合认证                               (FED_NOAUTH) = NO

缺省数据库路径                              (DFTDBPATH) = C:

数据库监视器堆大小(4KB)               (MON_HEAP_SZ) = 66
“Java 虚拟机”堆大小(4KB)             (JAVA_HEAP_SZ) = 512
审计缓冲区大小(4KB)                  (AUDIT_BUF_SZ) = 0
实例共享内存(4KB)的大小             (INSTANCE_MEMORY) = AUTOMATIC
备份缓冲区缺省大小(4KB)                   (BACKBUFSZ) = 1024
复原缓冲区缺省大小(4KB)                   (RESTBUFSZ) = 1024

代理进程的堆栈大小                     (AGENT_STACK_SZ) = 16
最小已落实专用内存(4KB)                (MIN_PRIV_MEM) = 32
专用内存阈值(4KB)                   (PRIV_MEM_THRESH) = 20000

排序堆阈值(4KB)                        (SHEAPTHRES) = 10000

目录高速缓存支持                            (DIR_CACHE) = YES

应用程序支持层堆大小(4KB)               (ASLHEAPSZ) = 15
最大请求程序 I/O 块大小(以字节计)          (RQRIOBLK) = 32767
DOS 请求程序 I/O 块大小(以字节计)      (DOS_RQRIOBLK) = 4096
查询堆大小(4KB)                     (QUERY_HEAP_SZ) = 1000

已调速实用程序对工作负载的影响      (UTIL_IMPACT_LIM) = 10

代理进程的优先级                           (AGENTPRI) = SYSTEM
现有代理进程的最大数目                      (MAXAGENTS) = 200
代理进程池大小                         (NUM_POOLAGENTS) = 100(已计算)
池中的代理进程的初始数目               (NUM_INITAGENTS) = 0
协调代理进程的最大数目                (MAX_COORDAGENTS) = MAXAGENTS
并发协调代理进程的最大数目               (MAXCAGENTS) = MAX_COORDAGENTS
客户机连接的最大数目                  (MAX_CONNECTIONS) = MAX_COORDAGENTS

保留受防护的进程                           (KEEPFENCED) = YES
合用受防护的进程的数目                  (FENCED_POOL) = MAX_COORDAGENTS
受防护的进程的初始数目               (NUM_INITFENCED) = 0

索引重新创建时间和重做索引构建               (INDEXREC) = RESTART

事务管理器数据库名称                      (TM_DATABASE) = 1ST_CONN
事务再同步时间间隔(秒)            (RESYNC_INTERVAL) = 180

SPM 名称                                     (SPM_NAME) = JK
SPM 日志大小                        (SPM_LOG_FILE_SZ) = 256
SPM 再同步代理进程限制               (SPM_MAX_RESYNC) = 20
SPM 日志路径                           (SPM_LOG_PATH) =

NetBIOS 工作站名                              (NNAME) =

TCP/IP 服务名称                              (SVCENAME) = db2c_DB2
发现方式                                     (DISCOVER) = SEARCH
发现服务器实例                        (DISCOVER_INST) = ENABLE

最大查询并行度                        (MAX_QUERYDEGREE) = ANY
启用分区内并行性                     (INTRA_PARALLEL) = NO

内部通信缓冲区的数目(4KB)         (FCM_NUM_BUFFERS) = 1024
FCM 请求块数目                            (FCM_NUM_RQB) = AUTOMATIC
FCM 连接条目数目                      (FCM_NUM_CONNECT) = AUTOMATIC
FCM 消息锚点数目                      (FCM_NUM_ANCHORS) = AUTOMATIC


记录DBM级别上需要更改的配置参数。

5、备份数据库:
BACKUP DATABASE TIMMS TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
   此处使用完全脱机备份,得到在目录D:\TEMP下的数据库备份映像。

6、在目标服务器上启动DB2命令处理器,将备份映像拷贝至该机器上,备份映像的文件路径不能破坏,还原时DB2需要次目录结构:
   RESTORE DATABASE TIMMS FROM "D:\temp" TAKEN AT 20071219133805 TO "D:" INTO TEST WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
此时可手工修改恢复的新数据库的表空间路径:
具体示例如下:

RESTORE DATABASE TIMMS FROM " D:\temp" TAKEN AT 20071219133805 TO "D:" INTO TEST WITH 2 BUFFERS BUFFER 1024 REDIRECT PARALLELISM 1 WITHOUT PROMPTING;
SET TABLESPACE CONTAINERS FOR 0 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH " D:\temp\ SYS");
SET TABLESPACE CONTAINERS FOR 1 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH " D:\temp\ TEMP");
SET TABLESPACE CONTAINERS FOR 2 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH " D:\temp\DATA");
SET TABLESPACE CONTAINERS FOR 3 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (FILE " D:\temp\TEMP2" 5120);
RESTORE DATABASE TIMMS CONTINUE;


在目标数据恢复完成之后,一般用户可能到此就不操作任何东西了,但是如果两台服务器的DB2软件版本的不一致可能不影响使用,但是会导致数据库与软件版本号不一致。此时需要在目标服务器上进行数据库和软件版本同步问题,也就是这里要说的重点。

7、同步数据库与软件版本:
   用于同步版本的命令格式如下:
   db2updv8 -d <dbname> [-u] <userid> [-p] <password> [-f] [-h]

   -d <dbname> : database name (maximum of 8 characters)
   -u <userid> : userid for database connection must be used with -p
   -p <password> : password for database connection; must be used with -u
   -f          : restore original fenced cataloging for schema procedures
               ( default is to convert to unfenced schema procedures )
   -h          : help


一般使用:
db2updv8 -d DB_NAME -u username -P password
执行成功之后返回:
DB2UPDV8 complete successfully for database 'DB_NAME'.

在DB2 V7版本之下可以使用db2updv7命令。



8、注意:
@ 在数据库迁移是版本好向前兼容,不能向后兼容:
   可由V7 版本下的数据在目标上的v7或者更高版本恢复。
   不能从高版本的数据库备份上向低版本的数据库恢复。
@数据库迁移完成之后要检查数据库状态是否正确:
    使用DB2 GET DB CFG FRO DB_NAME 获取数据库状态。
  DB2 开发系列
页: [1]
查看完整版本: 第六部分 DB2关于版本迁移