从 Sybase 到 DB2 的迁移,第 2 部分: 完整性检查指南

信息资产对日常业务至关重要。在支撑的系统不断变化时,信息资产还是必须保留、扩展和重新定位制度价值和知识产权的重要原因。鉴于当前的业务环境,出于许多原因,迁移具有重要的战略意义。本文将帮助您理解在将数据库迁移到 DB2 时,各种数据库对象的完整性检查流程。

Amol D. Barsagade, 软件架构师, IBM

Amol D. Barsagade 是位于普那的 IBM 印度软件实验室的一名 IBM Enterprise Marketing Management 软件架构师。Amol 向亚太地区的各种合作伙伴和客户提供数据库架构、性能调优、容量管理、应用程序开发和迁移的数据库解决方案。Amol 拥有计算机科学专业的学士学位,以及研究关系数据库系统(包括 Oracle 和 SQL 服务器)的多年经验。他通过评审和发表文章为 IBM developerWork 做出了巨大贡献。



2013 年 5 月 14 日

简介

本文介绍验证从 Sybase ASE 12.x/15.x 迁移到 DB2 9.7.x/DB2 10.1.x 而得到的结果数据库的完整性时,应遵循的步骤。本文所介绍的流程将使您能够成功迁移到 DB2 for Linux®, UNIX®, and Windows®,这个流程包含数据库完整性检查。


概述

完整性检查是任何迁移流程的一个重要部分,因为它可确保来源和目标数据库对象是同步的。此流程不是一个分开或独立的流程,应该在迁移每个对象之后执行,使迁移流程更加安全,避免出现数据库不一致性的可能性。

这篇指南适用于执行数据库迁移的人员。迁移一个对象后,您就可以立即执行所提及的步骤,确保已迁移对象的完整性得以保留。


完整性检查流程

  • 数据库的完整性检查
    • 对比来源和目标数据库名称,确保数据库是使用相同名称创建的。
    • 确保创建了合适的表空间和缓冲池。

可使用 IBM Data Studio 来识别表空间和缓冲池。图 1 显示了表空间和缓冲池的详细信息。

图 1. 表空间详细信息
该图显示了表空间的详细信息

或者:

  • db2 连接到样本
  • db2 列表的表格
  • db2 列表表空间显示细节
  • db2 从 syscat.bufferpools 中选择 bpname 和页大小

确保 diaglevel 和日志路径已设置。还要确保数据库处于循环日志模式或归档模式。

  • 表的完整性检查
    • 使用 Sybase Central 对来源表进行完整性检查。
    • 使用 IBM Data Studio 对目标表进行完整性检查。
    • 确保来源和目标数据库中的表名称是相同的。
    • 确保表具有相同的列数。
    • 确保每个列的数据类型与来源表中相同,或者兼容来源数据类型。
    • 对于 char 和 varchar 等数据类型,确保大小正确。
    • 对于 decimal 和 numeric 等数据类型,确保比例是正确的。
    • 确保拥有列 null/not null/default values。
    • 确保设置了检查约束,如果它存在。
    • 确保设置了表的主要约束,如果它存在。
    • 确保设置了表的外键约束,如果它存在。
    • 确保所有索引都已正确的顺序创建。
    • 确保表和它的索引已在各自的表空间中创建。
    • 确保表为各个用户设置了正确的访问权限。
    • 确保身份列已正确复制到目标数据库中。
    • 确保它的名称相同。
    • 确保它拥有相同或兼容的数据类型。
    • 确保它以正确的初始值开头。
    • 确保它拥有相同的增量值。
    • 确保它的下一个值与预期的值相同。
  • 序列的完整性检查:
    • 确保序列是使用相同名称创建的。
    • 确保序列拥有相同或兼容的数据类型。
    • 确保开始值和结束值已适当提及(如果存在)。
    • 确保增量值是正确的。
    • 确保与序列关联的触发器已正确创建(如果存在)。
  • 视图的完整性检查:
    • 确保视图名称是正确的。
    • 确保视图拥有相同的列数。
    • 确保视图列数据类型相同或兼容。
    • 确保视图列名称是相同的。
    • 确保视图定义是正确的。
    • 确保存在依赖于视图的表。
    • 确保视图为各个用户提供了相同的访问权限。
  • 主键的完整性检查:
    • 确保数据库中存在表和相应的字段。
    • 确保字段是使用目标数据库中的 not null 属性创建的。
    • 确保主键名称是正确的。
  • 外键的完整性检查:
    • 确保目标数据库中存在基础表和相应的数据类型。
    • 确保目标数据库中存在参考表。
    • 确保外键名称是正确的。
  • 索引的完整性检查:
    • 确保目标数据库中存在该表和相应的字段。
    • 确保字段列表和它们的顺序相同。
    • 确保索引已以正确的顺序创建(升序/降序或允许逆向扫描)。
  • 别名的完整性检查:
    • 确保别名名称是正确的。
    • 确保别名已在正确的对象上创建。
    • 确保别名拥有相应的访问权限。
  • 用户定义的数据类型的完整性检查:
    • 确保用户定义的数据类型已在目标数据库中正确创建。
    • 确保它们拥有相同的数据类型或兼容的数据类型。
  • 组的完整性检查:
    • 确保来自来源数据库的所有组都已在目标数据库中使用相同名称创建。
    • 确保每个组的访问权限都已从来源数据库正确复制到目标数据库中。
    • 确保附加到每个组的用户在来源和目标数据据库中是相同的。
  • 用户的完整性检查:
    • 确保 Sybase 用户已使用相同名称正确迁移到 DB2。
    • 确保用户属于与来源中相同的组。
    • 确保它们在目标数据库中拥有与来源数据库相同的数据库对象访问权限。
  • 触发器的完整性检查:
    • 确保触发器仅附加到相应的表上。
    • 确保 before 触发器/after 触发器和 insert 触发器/delete 触发器/update 触发器的触发器类型相同。
    • 确保触发条件是正确的。
    • 确保触发器主体是正确的。
    • 确保在触发器主体拥有频繁的回滚时,触发器创建为 before 触发器。
  • 存储过程的完整性检查:
    • 确保存储过程名称是正确的。
    • 确保存储过程拥有相同的输入、输出和 in out 参数。
    • 确保存储过程返回相同数量的结果集。
    • 确保存储过程按预期将结果集返回到客户端或调用方。
    • 确保存储过程依赖于目标数据库中存在的表/视图。
  • 用户定义的函数标量的完整性检查
    • 确保用户定义的函数是使用相同名称创建的。
    • 确保输入参数的数量相同。
    • 确保输入参数数据类型相同或兼容。
    • 确保返回类型相同或兼容。
    • 确保从 UDF 引用的对象已在目标数据库中定义。
    • 确保 UDF 返回了预期的结果。
    • 确保用户定义的函数的主体相同或包含相同的逻辑。
  • 用户定义的函数表的完整性检查
    • 确保用户定义的函数是使用相同名称创建的。
    • 确保输入参数的数量相同。
    • 确保输入参数数据类型相同或兼容。
    • 确保返回类型是表:返回的表拥有相同的列数和拥有相同或兼容的数据类型。
    • 确保从 UDF 引用的对象已在目标数据库中定义。
    • 确保 UDF 返回了预期的结果。
    • 确保用户定义的函数的主体相同或包含相同的逻辑。

结束语

本文介绍了完整性检查对大部分数据库对象的重要性。成功完成整个完整性检查流程后,就可以使用目标数据库,并且可以将它提供给客户。


致谢

感谢 Dan A. Simchuk (simchuk@us.ibm.com) 提供专业经验和进行评审。

参考资料

学习

获得产品和技术

  • 下载 IBM DB2 10.1 for Linux, UNIX, and Windows 评估版。
  • 使用 IBM 试用版软件 构建您的下一个开发项目,这些软件可直接从 developerWorks 下载。
  • 现在您可免费使用 DB2。下载 DB2 Express-C,这是一个面向社区的免费的 DB2 Express Edition 版本,提供了与 DB2 Express Edition 相同的核心数据功能,为构建和部署应用程序提供了坚实的基础。

讨论

  • 参与论坛讨论
  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=929677
ArticleTitle=从 Sybase 到 DB2 的迁移,第 2 部分: 完整性检查指南
publish-date=05142013