内容


从 Sybase 到 DB2 的迁移,第 2 部分

完整性检查指南

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 从 Sybase 到 DB2 的迁移,第 2 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:从 Sybase 到 DB2 的迁移,第 2 部分

敬请期待该系列的后续内容。

简介

本文介绍验证从 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) 提供专业经验和进行评审。


相关主题


评论

添加或订阅评论,请先登录注册

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