iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >DB2 V95 数据库 迁移升级至 V105 实战案例
  • 910
分享到

DB2 V95 数据库 迁移升级至 V105 实战案例

2024-04-02 19:04:59 910人浏览 独家记忆
摘要

cbsdb09-jsJKDB V95迁移升级至tms01db01sz V105步骤 1.       准备工作 新机器tms0

cbsdb09-jsJKDB V95迁移升级至tms01db01sz V105步骤

1.       准备工作

新机器tms01db01sz的环境搭建,DB2介质安装及数据库恢复,具体请参考文档《招行HADR环境搭建指南》

DB2 V9.5 - jsjinst1-JSJKDB

Instance创建后修改/etc/services中关于数据库的端口号

数据库恢复之后修改log相关参数:

db2 get db cfg for JSJKDB|grep -i log

db2 update db cfg for JSJKDB using MIRRORLOGPATH /db/mirlog/jsjinst1/JSJKDB

db2 update db cfg for JSJKDB using LOGARCHMETH1 DISK:/db/archm1/

db2 update db cfg for JSJKDB using LOGARCHMETH2 DISK:/db/archm2/

同时建立一个DB2 V10.5 的空库用于CDC预定的搭建

jsjinst2-JSJKDB

 

检查cdcserver和源库,目标库的连接是否有问题,如不通则找行方DBA协调解决防火墙问题

telnet 10.0.58.18 50020

telnet 10.2.59.184 50020

 

在源库对JSJKDB所有要同步的业务表开启data capture changes include longvar columns 属性

db2 "select 'alter table '||trim(tabschema)||'.'||trim(tabname)||' data capture changes include longvar columns ;' from syscat.tables where type='T' and tabschema not like 'SYS%' and datacapture<>'L'"|tee alter_table_fbudb.sql

db2 -tvf alter_table_fbudb.sql|tee alter_table_fbudb.out

 

在源和目标机器上新建用户cdcuser,并加入实例用户组,赋DBADM权限(cbsdb09-jsjinst1,tms01db01sz- jsjinst2)

mkuser pgrp=jsjigrp1 shell=/usr/bin/ksh cdcuser

db2 "grant DBADM on database to user cdcuser"

 

修改源库identity column(必须在db2look之前,否则identity column无法复制)

select 'alter table '||trim(tabschema)||'.'||TABNAME||' alter column '||COLNAME||' set GENERATED by default;' from syscat.columns where left(tabschema,3)<>'SYS' and generated<>'' and generated!='D' and  tabschema='FMDBRUN'

 

alter table FMDBRUN.SYBRADTAP alter column BRDSEQNBR set GENERATED by default;

alter table FMDBRUN.ACFIXCUR alter column CURDTLSEQ set GENERATED by default;

alter table FMDBRUN.DT_LOTRSPAYP alter column LPYROWNUM set GENERATED by default;

alter table FMDBRUN.ACTRSDTLP alter column ATSBUSNBR set GENERATED by default;

 

db2look备份源库DDL

db2look -d JSJKDB -a -e -l -x -o JSJKDB.ddl

 

将JSJKDB.ddl拷贝到到新机器tms01db01sz上,用jsjinst2执行:

在跳板机器如:[01057007@szsc-core2 ~]上执行(文件都放在/tmp目录):

cp /opsw/Server/@/cbsdb09/files/dbmonusr/tmp/JSJKDB.ddl /opsw/Server/@/tms01db01sz/files/dbmonusr/tmp/

db2 -tvf JSJKDB.ddl | tee JSJKDB.out

 

查看所有表数量,确保要复制的表都已经创建成功

db2 "select substr(tabschema,1,20) tabschema,count(*) as tabnums from syscat.tables where tabschema='FMDBRUN' and type='T' group by tabschema"

 

2.   正向CDC搭建(cbsdb09 v9.5->tms01db01sz-jsjinst2 v10.5)

登录cdcuser@cdcserver,编目源库和目标库( jsjinst2-JSJKDB)并用cdcuser测试能否连接数据库:

. ~srcinst1/sqllib/db2profile

db2 catalog tcpip node S_JSJKDB remote 10.0.58.18 server 50020

db2 catalog db JSJKDB as S_JSJKDB at node S_JSJKDB

. ~tgtinst1/sqllib/db2profile

db2 catalog tcpip node T_JSJKDB remote 10.2.59.184 server 50001

db2 catalog db JSJKDB as T_JSJKDB at node T_JSJKDB

 

使用如下命令创建并启动CDC实例s_jsjkdb,t_jsjkdb(输入CDC作为CDC数据的模式名)

/cdcopt/ReplicationEngineforIBMDB2/bin/dmconfigurets

检查CDC实例进程是否启动:

ps -ef|grep dmts64

启停命令:

nohup /cdcopt/ReplicationEngineforIBMDB2/bin/dmts64 -I s_jsjkdb &

/cdcopt/ReplicationEngineforIBMDB2/bin/dmshutdown -I s_jsjkdb

查看状态:

/cdcopt/ReplicationEngineforIBMDB2/bin/dmgetstagingstorestatus -I s_jsjkdb

检查CDC复制日志

/cdcopt/ReplicationEngineforIBMDB2/instance/t_jsjkdb/log

 

登录CDC控制台,创建datastore及预定,具体过程参考文档《CDC安装配置规范》

预定建好后选定所有的表,点右键,选择parktables,标记捕获点

 

标记外部刷新开始(对预定中的所有表执行如下命令)

/cdcopt/ReplicationEngineforIBMDB2/bin/dmmarkexternalunloadstart -I s_jsjkdb -s <预定名,如:sub_jsjkdb> -t ${_TableName}

可连接源库用如下语句生成脚本:

db2 "select '/cdcopt/ReplicationEngineforIBMDB2/bin/dmmarkexternalunloadstart -I s_jsjkdb -s sub_jsjkdb -t '||trim(tabschema)||'.'||trim(tabname) from syscat.tables where type='T' and tabschema='FMDBRUN'"|tee markstart.sh

 

源库手工归档,确保新库能滚日志到外部刷新开始之后:

db2 arcHive log for db JSJKDB

 

标记外部刷新结束(对预定中的所有表执行如下命令)

/cdcopt/ReplicationEngineforIBMDB2/bin/dmmarkexternalunloadend -I s_jsjkdb -s <预定名,如:s_jsjkdb> -t ${_TableName}

可连接源库用如下语句生成脚本:

db2 "select '/cdcopt/ReplicationEngineforIBMDB2/bin/dmmarkexternalunloadend -I s_jsjkdb -s s_jsjkdb -t '||trim(tabschema)||'.'||trim(tabname) from syscat.tables where type='T' and tabschema='FMDBRUN'"|tee markend.sh

 

用 jsjinst2备份CDC数据

db2move jsjkdb export -sn CDC

 

拷贝所有需要的日志到新机器tms01db01sz(文件都放在/tmp目录),使用jsjinst1前滚打开数据库:

cp /opsw/Server/@/cbsdb09/files/dbmonusr/tmp/S00033*.LOG /opsw/Server/@/tms01db01sz/files/dbmonusr/tmp/

db2 "rollforward db JSJKDB to end of logs overflow log path ('/db/archm1/overflowlogs') noretrieve"

 

查看rollforward状态,确保新库能滚日志到外部刷新开始之后:

db2 rollforward db JSJKDB query status using local time

 

打开数据库:

db2 "rollforward db JSJKDB stop"

 

将数据库升级至v10.5.5,重绑定包

参考文档《DB2V9.5-10.5升级方案》

 

用 jsjinst1恢复CDC数据

db2move jsjkdb import

 

CDC重编目指向新升级的v10.5.5数据库

. ~tgtinst1/sqllib/db2profile

db2 uncatalog node T_JSJKDB

db2 uncatalog db T_JSJKDB

db2 catalog tcpip node T_JSJKDB remote 10.2.59.184 server 50000

db2 catalog db JSJKDB as T_JSJKDB at node T_JSJKDB

 

重启目标库的实例使之连接新升级的v10.5.5数据库

/cdcopt/ReplicationEngineforIBMDB2/bin/dmshutdown -I t_jsjkdb

nohup /cdcopt/ReplicationEngineforIBMDB2/bin/dmts64 -I t_jsjkdb &

 

在CDC控制台操作,启动正向预定(v9.5->v10.5.5),监控CDC的状态,检查源库和目标库数据的一致性

 

删除jsjinst2-JSJKDB并drop instance,删除用户

db2 drop db JSJKDB

db2stop

/opt/IBM/db2/V10.5.5/instance/db2idrop jsjinst2

rmuser jsjinst2

 

新环境的监控、备份配置的部署和确认-检查tivoli监控,dbmdb新监控,NBU调度策略

 

新环境HADR搭建

 

JSJKDB 创建反向CDC预订(新库v10.5->源库v9.5)并停用

 

回收新环境的应用用户CONNECT权限

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

db2 -v "revoke connect on database from user FMDBRUN,ITMUSER,FMQRYNJ,DBMUID";

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

 

3.       实施步骤

源库JSJKDB应用运行状况检查(收集应用连接数)

db2 list applications for db JSJKDB > $HOME/app_FBUDB_before.`date +%H%M%S`.txt

 

回收源库JSJKDB应用用户的connect权限

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

db2 -v "revoke connect on database from user FMDBRUN,ITMUSER,FMQRYNJ,DBMUID";

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

 

开源库JSJKDB的应用连接,确保没有应用连接上来

db2 list applications|grep -iw JSJKDB|grep -iv cdcuser|awk '{print "db2 \"force application ("$3")\";"}'|tee force_JSJKDB_app.sql

 

登陆MC,检查cdc同步情况,停止正向订阅

 

新库JSJKDB的seq的序列号和identity column加1000(无序列)-在源库执行下列SQL并将执行结果拷贝到新库执行:

select 'alter table ' ||trim(tabschema)|| '.' ||tabname || ' alter column '|| colname || ' restart with '||trim(char(bigint(NEXTCACHEFIRSTVALUE + 1000))) || ';'  from syscat.colidentattributes

 

JSJKDB 新库与原库数据一致性比对

 

启动反向复制

 

放开新库fbudb11上FBUDB的应用用户的connect权限

db2 "grant connect on database to user FMDBRUN,ITMUSER,FMQRYNJ,DBMUID"

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

 

F5切换,新F5设备对外释放VIP

 

通知JSJKDB相关系统进行开发、业务验证

 

新库运行状况检查、连接数比对、CDC同步情况检查

db2 list applications for db JSJKDB > $HOME/app_FBUDB_after.`date +%H%M%S`.txt

 

4.       变更后处理

回收权限并删除CDC用户

db2 "revoke DBADM on database from user cdcuser"

rmuser cdcuser

 

在CDC控制台删除预定,datastore

 

在cdcserver上删除实例

/cdcopt/ReplicationEngineforIBMDB2/bin/dmshutdown -I s_jsjkdb

/cdcopt/ReplicationEngineforIBMDB2/bin/dmshutdown -I t_jsjkdb

/cdcopt/ReplicationEngineforIBMDB2/bin/dmconfigurets

 

取消数据库编目

. ~srcinst1/sqllib/db2profile

db2 uncatalog node S_JSJKDB

db2 uncatalog db S_JSJKDB

. ~tgtinst1/sqllib/db2profile

db2 uncatalog node T_JSJKDB

db2 uncatalog db T_JSJKDB

 

旧库全库备份及下线

 

5.       回退步骤

回收新环境的应用用户CONNECT权限

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

db2 -v "revoke connect on database from user FMDBRUN,ITMUSER,FMQRYNJ,DBMUID";

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

 

断开新库所有应用连接

db2 list applications|grep -iw JSJKDB|grep -iv cdcuser|awk '{print "db2 \"force application ("$3")\";"}'|tee force_JSJKDB_app.sql

 

断开CDC订阅

 

源库JSJKDB的seq的序列号和identity column加1000(无序列)-在新库执行下列SQL并将执行结果拷贝到源库执行:

select 'alter table ' ||trim(tabschema)|| '.' ||tabname || ' alter column '|| colname || ' restart with '||trim(char(bigint(NEXTCACHEFIRSTVALUE + 1000))) || ';'  from syscat.colidentattributes

 

数据一致性比对

 

放开源库应用用户的connect权限

db2 "grant connect on database to user FMDBRUN,ITMUSER,FMQRYNJ,DBMUID"

db2 "select substr(grantor,1,10) grantor,substr(grantee,1,10) grantee,connectauth from syscat.dbauth where connectauth='Y' with ur";

 

F5切换,业务验证,原库运行状况检查、连接数比对

您可能感兴趣的文档:

--结束END--

本文标题: DB2 V95 数据库 迁移升级至 V105 实战案例

本文链接: https://www.lsjlt.com/news/47210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作