IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

Data Studio Administrator V1.2 中的数据保留和数据迁移

在复杂的数据库变更期间使用 Data Studio Administrator 保留和迁移数据

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码

英文原文

英文原文


级别: 中级

Carolyn Henry, 信息开发人员, IBM
Sangeetha Srinivasan, 开发人员, IBM
Jayashree Ramachandran, 开发人员, IBM
Tina Chen, Data Studio Enablement, IBM

2007 年 8 月 23 日
更新 2008 年 11 月 20 日

您需要对数据库进行复杂的变更吗?例如,保留原有数据的同时将列转移到另一个表中。通过使用 Data Studio Administrator for DB2® for Linux®, UNIX®, and Windows®(即以前的 DB2 Change Management Expert),可以在对数据库进行复杂的变更时保留有价值的数据。本文学习一个场景,在此场景中,DBA 使用 Data Studio Administrator 创建一个新表,然后用现有表中的数据填充这个新表。

注意:本文是对一篇关于 DB2 Change Management Expert 的文章的更新。本文介绍了 IBM Data Studio Administrator for DB2 for Linux, UNIX, and Windows,以及在 Data Studio Administrator Version 1.2 中可用的其他变化。

简介

本文演示一家虚构公司 JK Enterprises 的一名 DBA 如何使用 IBM Data Studio Administrator 对 DB2 数据库进行变更,同时又保留数据。该 DBA 还在将目标模型部署到生产数据库之前,使用 Data Studio Administrator 验证和测试目标模型上的变更。

首先,回顾在进行复杂变更时 Data Studio Administrator 将帮助您执行的步骤:

  • 通过一个丰富的、交互式的用户界面快速识别要变更的数据库对象
  • 创建一个部署脚本,用于管理变更
  • 在一个模型上实现这些变更
  • 识别哪些视图、函数、过程和触发器在变更后不起作用,哪些视图、函数、过程和触发器在变更后还起作用
  • 使用部署脚本生成 SQL,以应用变更
  • 使用导出和导入命令保留数据
  • 将变更部署到数据库

先决条件

本场景使用 Data Studio Administrator Version 1, Release 2。要完成本场景,必须在计算机上安装 Data Studio Administrator(参见 参考资料 小节)。

重要:本场景使用 DSADEMO 数据库。可以从本文的 下载 小节下载 sample02.zip 文件并将其解压缩到一个本地目录,然后安装 Data Definition Language(DDL)(CreateDSADEMO.chx)以创建和设置这个数据库。下面是设置该数据库的步骤:

  1. 选择 File > Import > General > Existing Projects into Workspace,从 sample02.zip 中导入名为 test 的项目。
  2. 单击 Select archive file,找到 sample02.zip 的位置。在 Project 域中单击 test 旁边的复选框。

    图 1. 将项目导入到工作区
    将项目导入到工作区

  3. 单击 Finish 完成项目 test 的导入。
  4. 在 Data Studio Administrator 的 Data Project Explorer 视图中,展开 test 项目中 SQL Scripts 文件夹的内容,右键单击 CreateDSADEMO.chx 文件,并选择 Run SQL
  5. 验证是否选择了适当的数据库版本。输入用户名和密码,不要选中 Create Deployment Project and Script file 复选框,然后单击 Finish
  6. 在 Database Explorer 视图中,验证 DSADEMO 数据库是否已创建,并且存在一个连接。本文接下来继续完成其他步骤。

场景概述

JK Enterprises 已决定,他们需要将雇员的薪水和酬金信息与雇员的其他信息分开。例如,他们决定只有管理层可以看到敏感的雇员酬金信息。如果其他人想运行雇员报告,那么将看不到该信息。作为 JK Enterprises 的 DBA,您现在必须对数据库进行变更,添加一个新表,其中有 4 个新的列,这些列包含来自原始表的数据。在 Data Studio Administrator 中,只需通过几次单击,就可以完成该任务,并确保原始数据被保留,以便在以后将其装载到新表中。

本文分为两个部分,以反映两个主要的任务:

  1. 创建用于存放敏感薪水信息的新表,并将数据从旧表迁移到新表。
  2. 从旧表中删除敏感列,并保留 那些列中的数据,以便用于审计或者确保可以执行撤销。





回页首


第 1 部分:创建和填充新表

要将薪水和酬金信息与雇员表分开,需要创建一个 change-in-place 部署脚本。该脚本执行以下步骤:

按以下步骤创建新的 EMPLOYEEPAYINFO 表,并填充 4 个新列:

  1. 创建一个名为 EMPLOYEEINFO 的新表。EMPLOYEEINFO 表将包括 4 个列:EMPO、SALARY、BONUS 和 COMM。
  2. 创建一个外键,以便将这个新表与已有的雇员表相连接。
  3. 从 EMPLOYEE 表中迁移薪水数据,填充这个新表。

完成以下步骤,以创建一个新的 Data Design Project 和 EMPLOYEEPAYINFO 表,并用另一个表中的数据填充 4 个新列:

  1. 创建一个名为 EmployeeChanges.deployxml 的新部署脚本。
    1. 从菜单中,选择 File > New > Deployment Script 启动 Deployment Script 向导。
    2. 输入 EmployeeChangeManagement 作为项目名称,输入 EmployeeChanges 作为部署脚本名称。
    3. 单击 Next 继续。

      可选:这可能会提示您提供一个 Database Connection。选择 DSADEMO 作为用于创建 Deployment Script 的数据库。

    4. 选择 Change in Place 作为过程,然后选择选项 Migrate Table Data

      图 2. Deployment Script Process 选择页面
      Deployment Script Process 选择页面

    5. 单击 Next 继续。
    6. 当提示选择一个模式时,选择 HR 模式。
    7. 单击 Finish 为 DSADEMO 数据库创建一个新的部署脚本。

    使用 Data Studio Administrator 创建了部署脚本后,展开 Data Model 文件夹,可以看到 EmployeeChangeManagement 项目中创建了基本模型和目标模型。

    Overview Page(有时候也称 Deployment Script Editor)是集中管理变更的地方。部署脚本的 Overview Page 的 4 个主要区域包含以下信息:

    • 数据模型
    • 变更命令
    • 撤销变更



    图 3. 在变更过程中使用 Overview Page 作为指南
    在变更过程中使用 Overview Page 作为指南

  2. 在 Overview Page 上,单击 Target Model 下的 Edit。这将打开物理模型,即 EmployeeChanges_target.dbm。
  3. 在右侧的 Outline View 中,展开 DSADEMO 数据库旁边的节点。右键单击 HR 模式,然后选择 New > Table
  4. Data Object Properties 面板显示在 Data Studio Administrator 的主区域。为了为表提供一个名称,在 name 文本域中输入 EMPLOYEEPAYINFO
  5. 在 EMPLOYEEPAYINFO 表中,添加 4 个列:EMPNO、SALARY、BONUS 和 COMM。
    1. 在 Data Object Properties 面板中单击 Columns 选项卡。
    2. 对于要创建的每个列,单击 Add New 按钮Add New)。创建以下 4 个列:EMPNO、SALARY、BONUS 和 COMM。
    3. 在 data type 域中双击右键,并从下拉列表中进行选择,指定各个列的数据类型。对于需指定长度的数据类型,双击并输入一个值。按照以下列表指定该表中每个列的数据类型:
      • EMPNO 列的数据类型为 SMALLINT。
      • SALARY 列的数据类型为 DECIMAL(长度为 9,小数点后位数为 2)。
      • BONUS 列的数据类型为 DECIMAL(长度为 9,小数点后位数为 2)。
      • COMM 列的数据类型为 INTEGER。


      图 4. EMPLOYEEPAYINFO 表包含的 4 个新列及其属性
      EMPLOYEEPAYINFO 表包含的 4 个新列及其属性

    4. 在 Data Object Properties 面板中选择 Tables Spaces 选项卡。
    5. Regular 表空间下拉菜单中,选择 USERSPACE1 作为这个表的表空间。
  6. 为 EMPLOYEEPAYINFO 表的 EMPNO 列添加一个外键,该外键引用 EMPLOYEE 表的 EMPNO 列。
    1. 在 Data Object Properties 面板中,右键点击 EMPLOYEEPAYINFO 并选择 New > Foreign Key,如图 5 所示。

      图 5. EMPLOYEEPAYINFO 表上的外键
      EMPLOYEEPAYINFO 表上的外键

    2. 在 Add Foreign Key 向导中,选择 EMPLOYEE 表作为引用,并单击 Next 继续。
    3. 在左侧的 Primary Key Columns 域中选择 EMPNO。按住 Shift 键,并在右侧的 Foreign Key Columns 域中选择 EMPNO。单击 Pair 按钮Pair)按钮将所选择的列配对。

      图 6. 将 EMPLOYEE 与 EMPLOYEEPAYINFO 中的 EMPNO 列配对
      将 EMPLOYEE 与 EMPLOYEEPAYINFO 中的 EMPNO 列配对

    4. 单击 Finish

      图 7. 引用 EMPNO 列主键的 EMPLOYEEPAYINF_FK 外键
      引用 EMPNO 列主键的 EMPLOYEEPAYINF_FK 外键

  7. 在主菜单上,单击 File > Save 保存目标模型。记得经常保存更改。
  8. 单击 EmployeeChanges.deployxml 选项卡返回到部署脚本。 EmployeeChanges.deployxml 选项卡
  9. 单击过程流程图中的 Generate,生成用于指定的变更的变更命令。这时会打开 Generate Change Commands 向导。
  10. 图 8 显示了 Generate Change Commands 向导,其中有用于变更的 DDL,以便查看生成的变更命令。

    图 8. Generate Change Commands 向导,其中包含用于变更的 DDL
    Generate Change Commands 向导,其中包含用于变更的 DDL

  11. 如果有破坏性变更,Data Studio Administrator 允许装载或卸载数据。现在是创建表,因此没有破坏性的变更。所以,在该向导出现时,单击 Next
  12. 通过 Unload and Reload Information 向导可以使用 auto cast 解决数据类型冲突。由于没有任何破坏性的变更,单击 Next 继续。
  13. 在 DB2 Maintenance Commands 页面上,可以看到以下选项:
    • Generate Reorg Commands
    • Generate Runstats Commands
    • Generate Flush Package Commands
    • Generate Rebind Commands

    在变更管理过程中,数据库包可能不可用,并且统计信息也有可能不准确。例如,当删除对象时,DB2 将包标记为无效(invalid)或不起作用(inoperative)。当从部署脚本编辑器中生成变更命令时,可以指定 Data Studio Administrator 发出 rebind 命令,以便重新创建包并运行 RUNSTATS 来更新统计信息。这样可以节省时间和精力。

    图 9. DB2 Maintenance Commands 页面
    DB2 Maintenance Commands 页面

    单击 Next 继续。
  14. 在最后一个页面上,检查生成的变更命令,然后单击 Finish
  15. 在 Data Studio Administrator 中可以查看变更报告,该报告总结了对数据库进行的变更。

    可选:单击 Yes 查看变更报告,或者单击 No 继续。

  16. 为了将数据从 EMPLOYEE 表迁移到 EMPLOYEEPAYINFO 表,在 Overview Page 面板上单击 Migrate Data
    1. 当 Migrate Data Wizard 出现时,选择选项 Add the generated data migration commands to the deployment script,并单击 Next

      图 9a. 将数据迁移命令添加到部署脚本中
      将数据迁移命令添加到部署脚本中

    2. 当提示您提供一个数据库连接时,使用一个现有连接,选择连接 DSADEMO。单击 Next 继续。
    3. 选择默认的数据保留提供程序。对于本场景,在 Data Unload Provider 域中选择 EXPORT for DEL data format,在 Data Load Provider 域中选择 LOAD,如图 9b 所示。

      注意:如果要卸载大量的数据,可以使用 IBM DB2 High Performance Unload 作为卸载提供程序。IBM DB2 High Performance Unload 可以提供高速数据卸载功能和更高的性能。要了解更多关于 IBM DB2 High Performance Unload 的信息,请参阅 IBM DB2 High Performance Unload 产品页面



    图 9b. 变更的正确数据保留选项
    变更的正确数据保留选项

    单击 Next 继续。
  17. 在 Map Unload and Reload Tables(图 10)上,将原始的 EMPLOYEE 表与新的 EMPLOYEEPAYINFO 表配对。
    1. 单击该页面右上角的 Add 图标 Add 表映射条目,添加一个新条目 HR.EMPLOYEE。
    2. Unload Table 下拉菜单中,选择 HR.EMPLOYEE,并双击 Reload Table 下拉框。然后,选择 HR.EMPLOYEEPAYINFO 并单击该页面右上角的 Pair 图标 Pair 表映射条目,将这两个表配对。为了将数据从旧的 EMPLOYEE 表导入到新的 EMPLOYEEPAYINFO 表中,必须完成这样的配对。

      图 10. 数据迁移过程的映射表阶段
      数据迁移过程的映射表阶段

      单击 Next 继续。

  18. Customize Unload Commands 页面显示数据的导出命令。在此,从 Employee 表中选择要导出到 select 语句的列。导航到 HR > Employee,将 EMPNO、SALARY、BONUS 和 COMM 列从 Database Objects for Unload 域拖到 Customize Query 域。

    图 10a. 定制卸载命令
    定制卸载命令

    单击 Next 继续。
  19. 在 Customize Reload Commands 页面上,从 EMPLOYEE 表中卸载的列的类型必须与 EMPLOYEEPAYINFO 表中重新装载的列的类型相匹配。Unload Column 中 COMM 列的数据类型是小数(decimal),而 Reload Column 中该列的数据类型是整数。为了消除这种差异,必须转换数据类型。

    查看 HR.EMPLOYEEPAYINFO 表,您应该注意到该表旁边的 Error。这表明存在不匹配的列类型。右键单击 COMM column,并选择 Autocast 将小数类型的数据以整数类型导出,从而与 EMPLOYEEPAYINFO 表中 COMM 列的数据类型相匹配。图 11 显示了这个过程。



    图 11. 自动转换原始列中的数据,使其与新列的数据类型相匹配
    自动转换原始列中的数据,使其与新列的数据类型相匹配

  20. 单击 Finish
  21. 可选:要查看变更命令:
    1. 在 Overview Page 上,单击 Change Commands 下的 Customize 链接。
    2. 双击变更命令文件 /EmployeeChangeManagement/EmployeeChanges_deltadd.chx。这将在 Change Command Editor 中打开该文件。

      图 12. 查看生成的命令
      查看生成的命令

      注意:迁移数据的命令按适当的顺序穿插在生成的命令中。

    3. 要返回 Overview Page,可单击 EmployeChanges.deployxml 选项卡,并在底部的选项卡上单击 Overview
  22. 将变更部署到数据库需要:
    1. 在 Overview Page 上单击 Deploy,以将变更部署到目标数据库。
    2. 完成 Deploy Change Commands 向导中的步骤,将变更部署到数据库。




回页首


第 2 部分:在破坏性变更之后保留数据

本场景涉及 Data Studio Administrator 中的数据保留特性。现在,您已创建了新的 EMPLOYEEINFO 表,接下来需要创建一个单独的 change-in-place 部署脚本,通过该脚本可以删除薪水列,同时保留那些列中的数据。

  1. 创建一个新的名为 EmployeeChanges_2.deployxml 的部署脚本:
    1. 在 Data Project Explorer 中,选择 EmployeeChangeManagement 项目,然后右键单击该项目,并选择 New > Deployment Script,以启动 Deployment Script 向导。
    2. 选择 EmployeeChangeManagement 作为项目名称,并输入 EmployeeChanges_2 作为部署脚本名称。
    3. 选择 DSADEMO 作为数据库连接,然后单击 Next
    4. 选择 Change in Place 作为过程,然后单击 Next
    5. 选择 HR 作为反向工程的模式。
    6. 单击 Finish 完成部署脚本。
  2. 在 Data Model Editor 中,单击 Overview Page 图上的 Edit,打开目标模型。
  3. 在右侧面板上的 Outline 视图中,导航到 EMPLOYEE 表。
  4. 单击 columns 选项卡,查看 HR.EMPLOYEE 表中的列。为了删除 HR.EMPLOYEE 表中的列 SALARY、BONUS 和 COMM,选择要删除的列,并单击 Delete Delete 按钮

    图 13. 从 HR 中删除薪水信息
    从 HR 中删除薪水信息

  5. CTRL+S 保存文件。
  6. 单击 EmployeeChanges_2.deployxml 选项卡,返回到 Overview Page 面板。
  7. 单击 Overview Page 图上的 Generate,生成变更命令。

    注意:数据保留命令中穿插有 DDL 命令。数据保留命令是用默认的提供程序(EXPORT for DEL data format 和 LOAD)生成的。

    在 Data Studio Administrator 中,可以预览可能生成的所有命令。单击 Next 继续。

    1. 要覆盖数据保留设置,可在 Specify Data Unload and Reload Information 向导中选择 Shadow table, reload using LOAD FROM CURSOR 作为 Unload 提供程序,如图 14 所示。

      图 14. 选择使用 LOAD FROM CURSOR 的 Data Preservation
      选择使用 LOAD FROM CURSOR 的 Data Preservation

    2. 单击 Next,直到出现最后一页,在最后一页中,可以查看生成的变更命令,如图 15 所示。

      图 15. 查看生成的变更命令
      查看生成的变更命令

      注意:数据保留命令和维护命令是穿插出现的。当选择 Internal Data Preservation 时,数据被保存在 DB2 中的一个影子表(shadow table)中。RENAME 命令用于创建影子表,而数据是通过 LOAD FROM CURSOR 命令重新装载到 EMPLOYEE 表中的。

    3. 查看这些命令,然后单击 Finish。也可以在 Deployment Script Editor 中的 Change Commands 选项卡中查看这些命令。一种进入该选项卡的简单方法是在过程流程图中单击 Customize Commands
  8. 在 Overview Page 图中单击 Deploy 部署这些命令。




回页首


结束语

现在,您已经为公司发现的问题提供了解决方案。您通过将敏感的数据转移到一个新表中,并在不丢失任何原始的数据的情况下从原始表中删除敏感的列,从而将敏感的薪水信息与其他雇员数据分开。通过使用 Data Studio Administrator,可以避免手动更改数据库、在数据库的其他表中识别并处理所有数据依赖项,以及自己创建保留数据的策略。这些都是非常费力的工作。Data Studio Administrator 可以为您处理所有这些事情,并提供一些易于使用的向导,帮助您完成整个过程的每一个步骤。






回页首


下载

描述名字大小下载方法
创建和设置示例数据库的文件sample02.zip5KBHTTP
关于下载方法的信息


参考资料

学习

获得产品和技术

讨论


作者简介

Carolyn Henry 的照片

Carolyn Henry 是加利福尼亚州圣何塞市 IBM 硅谷实验室 DB2 and IMS Tools 小组的一名信息开发人员。她从 2004 年开始在 DB2 Change Management Expert 小组工作。


Sangeetha Srinivasan

Sangeetha Srinivasan 是加利福尼亚州圣何塞市 IBM 硅谷实验室 DB2 Tools 小组的开发人员。她从 2006 年开始在 DB2 Change Management Expert 团队工作。在此之前,她从事 DB2 for Z/OS 本地压力测试方面的工作。她拥有圣何塞州立大学计算机工程硕士学位。


Jayashree Ramachandran 是加利福尼亚州圣何塞市 IBM 硅谷实验室 Information Management Tools 小组的一名开发人员。她从 2004 年开始在 DB2 Change Management Expert 团队工作。


作者照片:Tina Chen

Tina Chen 是加利福尼亚州圣何塞市 IBM 硅谷实验室 IBM Data Studio 开发组织的解决方案架构师。Tina 负责合作伙伴关系的技术开发和向客户推广 IBM Data Studio。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款