使用 IBM Optim Database Administrator V2.2 进行数据库版本控制

增强协作并确保审计路径

您是否想知道数据库何时更改?Data Studio Administrator(以前是 DB2 Change Management Expert)能够帮助您!IBM Optim Database Administrator (ODA) 可以帮助您跟踪变更、与其他小组成员无缝合作、逆转或者撤消变更,以及审计数据库的任何变更。本文描述这样一个场景:DBA 所在的公司使用 ODA 和 Eclipse Team 项目来增强协作和确保一致的审计路径。您将学习连接到库控制系统并将变更管理项目、模型和脚本保存到库控制中,以及审计变更。此外,还将了解如何从库控制中检索变更,以及使用部署脚本撤消变更。

注意:本文是之前发布的关于 DB2 Change Management Expert 的一篇文章的更新版本,该文最后更新于 2008 年 8 月,当时针对的是 Data Studio Administrator。Data Studio Administrator 于 2009 年 6 月更名为 IBM Optim Database Administrator,本文就此以及 Option Database Administrator, Version 2.2 中可用的其他变更进行了更新。

Carolyn Henry, 信息开发人员, IBM

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



Marcia Miskimen, 软件工程师, IBM

Marcia Miskimen 的照片Marcia Miskimen 是加利福尼亚州圣何塞市 IBM 硅谷实验室 Information Management Tools 小组的一名软件工程师。她从 2003 年开始从事多平台工具支持方面的工作。



Jayashree Ramachandran, 开发人员, IBM

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



Sailaja Bandlamoori, 测试主管, IBM

Sailaja Bandlamoori 是加利福尼亚州圣何塞市 IBM 硅谷实验室 Information Management Tools 小组的一名测试主管。她从 2006 年开始在 DB2 Change Management Expert 团队工作,此前在 DB2 for z/OS client/server System Test 工作。



2009 年 9 月 07 日 (最初于 2007 年 4 月 26 日)

简介

数据库的维护不外乎变更 二字。您需要确保数据库应用程序按预期运行,变更能够顺利进行,并且,如果出现错误,可以找到问题的根源。虽然数据库可以用日志记录某些活动,但是日志的分析比较困难。最后,日志只能提供对数据库变更的一个不完整的描述。那么,为何不借助软件开发中的技术来帮助管理变更呢?在传统的软件开发中,跟踪变更的方法是使用某种类型的变更管理系统、过程或工具。这种方法有很多名称:配置管理、变更管理、源代码控制、库控制、版本控制等等。对于本文,我们使用的术语是版本控制

不管是对于应用程序还是对于产品代码本身,变更管理的过程都相当成熟。大多数程序员都熟悉对代码进行签入和签出操作,并知道什么版本与哪个软件发行版是对应的。但是,应用程序开发周期中的其他参与者清楚这些因素的重要性吗?他们使用版本控制工具吗?架构师的设计、项目经理的计划、编程人员的文档以及测试人员的场景和结果又如何呢?数据库管理员呢?应用程序可不仅仅是代码。组成一个发行版的所有部分都应该在一起。作为应用程序一部分的任何对象都可以、也应该成为版本控制工具或过程的一部分。


总体过程

图 1 显示了使用 Optim Database Administrator 和版本控制系统更改一个数据库的总体过程:

图 1. 使用 Optim Database Administrator 更改数据库的总体过程
图 1. 使用 Optim Database Administrator 更改数据库的总体过程

Optim Database Administrator 和 Eclipse

Optim Database Administrator 可以帮助 DBA 管理他们的数据库系统。它允许 DBA 配置数据库,跟踪变更,与作出不同变更的其他 DBA 协作,审计和管理那些变更的历史,并逆转或撤销不再需要的变更。

Optim Database Administrator 基于开源的 Eclipse,后者提供了一个平台无关的软件框架,用于交付富客户机应用程序。Eclipse 平台使其它工具开发人员可以轻松地构建和交付集成的工具。该框架用于为 Optim Database Administrator 开发集成开发环境(IDE)。欲了解关于 Eclipse 平台的更多信息,请参阅本文的 参考资料 小节。Optim Database Administrator 中的一个成功的版本控制过程包括使用 Eclipse Team 功能。

Eclipse Team 集成是 Optim Database Administrator 版本控制功能的关键组件。Eclipse Team 组件提供了一种机制,允许储存库工具将它们的储存库解决方案的完整的、丰富的功能集成到 Eclipse 工作台中。本文中的例子演示了 Eclipse Team 功能。欲了解关于 Eclipse Team 的更多信息,请参阅本文的 参考资料 小节。

当数据库更改后,Optim Database Administrator 项目(包括它所包含的所有资源)应该签入到版本控制中,并被赋予一个标记或标签。

还可以使用 Eclipse Team 功能归档 Optim Database Administrator 项目。在跟踪变更之前,应该先归档项目。可以在变更开发的过程中,在部署任何变更之前进行归档。这样一来,就可以引入迭代,其它团队成员或 DBA 可以参与进来并提供变更,其他人则可以查看和修改已经作出的变更。


Data Design Projects、数据库与版本控制之间的关系

可以以不同的方式使用版本控制来管理数据库变更项目。可以使用正式的或非正式的版本控制系统。版本控制系统可以像计算机上的文件系统一样简单,也可以像 Concurrent Visioning System (CVS) 或 IBM Rational® Clear Case 一样完善。本文的大多数示例都使用 CVS。

Optim Database Administrator 通过项目将需要变更的不同资源进行分组。Data Design Project 是与变更相关的所有资源(脚本、模型、日志文件等)的存储库,它还可以用于跟踪数据库的生命周期。通过使用 Eclipse Team 功能,可以共享项目,以便多个 DBA 在变更上实现协作。Data Design Projects 在特定的时间点上表示变更。部署变更之后,资源通常被提交到版本控制系统,并被赋予一个标记或标签。可以使用标记或标签返回到变更保存点,以撤销变更,或者审计特定的变更。

在更复杂的数据库中,可以使用 Data Design Project 来管理一个特定数据库应用程序的生命周期。在某些公司,表或模式被拆分开来,由特定的 DBA 或 DBA 团队管理。可以修改 Data Design Projects 以匹配这些环境。因此,可以将一个数据库拆分开,由数个 Data Design Projects 来管理。

插入到 Eclipse 中的版本控制系统,例如 CVS 或 IBM Rational Clear Case,能够与 Optim Database Administrator 完美集成。但是,由于 Optim Database Administrator 将所有数据文件和文件夹存储在本地文件系统上,因此也可以使用未与 Eclipse 集成的版本控制系统来管理 Optim Database Administrator 资源。还可以在没有正式的版本控制系统的情况下管理变更。本文在 如何在没有版本控制系统的情况下使用 Optim Database Administrator 小节对此进行了描述。


结合使用版本控制系统和 Optim Database Administrator

这个示例演示如何使用版本控制审计变更,以及协调由不同 DBA 做出的变更。示例中的图显示了使用 DB2 V9.1 的 Optim Database Administrator。示例分为以下四个部分:


前提条件

本场景使用 DSADEMO 数据库。您还需要使用 GSDB 示例数据库。依照以下步骤创建数据库:

  1. 从本文的 下载 小节获取 zip 文件,并解压其中的 GSDB_Database.sql 文件。
  2. 打开 DB2 命令窗口。
  3. 导航到 GSDB_Database.sql 文件所在的位置。
  4. 输入: db2 -td~ -f GSDB_Database.sql

启动 Optim Database Administrator 之后,与数据库的连接将自动出现在 Data Source Explorer 中,如图 2 所示。在第一次使用这些连接时,您需要输入用户或和密码,以便连接到数据库。

Figure 2. Data Source Explorer 中的连接
Data Source Explorer 中的连接

第 1 部分:DBA 之一 Jaya 对数据库进行更改。

Jaya 创建了一个名为 GOSALES.PROD_PROMO 的新表,用于存储关于所选产品回扣的信息。为了执行此项更改,她选择使用 ODA 的 Change Management 脚本编辑器。和 Jaya 一样,您将完成以下步骤:

  1. 创建一个新的变更管理脚本。

    在 Data Source Explorer View 中,展开连接 GSDB(GSDB 需要处于已连接状态)。右键单击 Change Management 文件夹,并选择 New Database Change... 菜单项,如图 3a 所示。

    图 3a. 创建一个新的 Change Management 向导
    启动 New Change Management 向导

    这打开 New Change Management 向导。在此向导中,选择 GOSALESGOSALESCT 模式,然后单击 Finish

    向导关闭后,将创建一个名称为 GSDB.changexml 的新脚本文件。此外还将创建两个物理数据模型。其中一个模型文件(称作基础模型) 表示更改之前的数据库。第二个文件(称作目标模型)将包含 DBA 在编辑器中做出的所有更改。更改命令是根据这两个模型文件生成的。changexml 脚本文件并数据库模型文件是在新的 GSDB 项目中创建的,并且可以使用 Data Project Explorer 视图来访问它们。

    新创建的变更管理脚本文件将在编辑器中自动打开,以便于 DBA 开始执行更改。

  2. 创建 PROD_PROMO 表。

    在编辑器中,定义将在数据库中创建的新表(PROD_PROMO)。为此,将表添加到 Objects to be changed 列表,方法是单击添加图标(由 + 号表示),然后在弹出列表中选择数据库对象类型 Tables in the pop-up(参见下面的图 3)。为新表使用 GOSALES 模式。

    图 3b. 使用 Change Management Editor 创建新表 PROD_PROMO
    使用 Change Management Editor 创建新表 PROD_PROMO
  3. 将表添加到 "Objects to be changed" 列表之后,在编辑器中选择表并在 Properties 视图中执行以下更改:
    1. 如果新表有默认名称(比如说 Table1),则将它重命名为 PROD_PROMO。
    2. 通过单击 new(由一个绿色的 + 号表示)图标添加以下列,如图 4a 所示:
      • PROMO_CODE of type INTEGER
      • PROD_NUMBER of type INTEGER
      • START_DATE of type DATE
      • END_DATE of type DATE
      • DISCOUNT_PCNT of type INTEGER
      • DESCRIPTION of type VARCHAR(128)
      图 4a. 重命名新表并向其添加新列
      向 PROD_PROMO 添加新列。
    3. 将 PROMO_CODE 列设置为 PROD_PROMO 表的主键,方法是选中该列的 Primary Key 复选框。
    4. 使用 Properties 视图中的 Table Space 选项卡将表空间 USERSPACE1 添加到 GOSALES.PROD_PROMOview 表,如图 4b 所示。
    图 4b. 指定 PROD_PROMO 的表空间
    指定 PROD_PROMO 的表空间。
  4. 在 GOSALES.PROD_PROMO 表的 PROD_NUMBER 列与 GOSALES.PRODUCT 表的 PRODUCT_NUMBER 列之间创建一个外键关系。为此,向 "Objects to be changed" 列表添加一个新的 Foreign Key 约束,使用 GOSALES.PROD_PROMO 作为基表,并使用 GOSALES.PRODUCT 作为父表。为此,单击 Add 图标,然后选择数据库对象类型 Foreign Key Constraint,如图 4c 所示。系统将提示您指定基表和父表。
    图 4c. 在 GOSALES.PROD_PROMO 和 GOSALES.PRODUCT 表之间创建 Foreign Key 关系
    在 GOSALES.PROD_PROMO 和 GOSALES.PRODUCT 表之间创建外键关系。
  5. 接下来,在编辑器中选择新添加的外键约束,并使用 Properties 视图指定关键列。在 Properties 视图中选择 Details 选项卡。对于 Child,通过单击 Key Columns 浏览按钮将 PROD_NUMBER 添加为外键。对于 Parent,在 Unique Constraint or Index 组合框中选择对 PRODUCT_NUMBER 定义的主键。如图 4d 所示:
    图 4d. 向 Foreign Key Constraint 添加关键列
    向 Foreign Key 添加关键列。

    General 选项卡的 Properties 视图中,选中 Non-Identifying 单选按钮,如图 4e 所示:

    图 4e. 更新 Foreign Key 属性
    更新 Foreign Key 属性。

    保存更改。


第 2 部分:Jaya 的更改已完成,她已准备好将其添加到版本控制系统来共享项目。

在版本控制系统中提交更改之后,可以稍后从版本控制系统中提取它们并继续变更管理流程。如有必要,其他管理员还可以审计变更。两个或多个 DBA 做出的更改可以方便地组合、协调。

本例使用 CVS 作为版本控制系统。向 CVS 添加项目的步骤如下。

  1. 安装 CVS Server 并设置存储库。
  2. 切换到 CVS Repository Exploring 透视图。此透视图包括一个 CVS Repositories 视图,您可以在其中添加各种存储库位置。
  3. 要为 Optim Database Administrator Data Design Project 添加存储库位置,在 CVS Repositories 视图中单击鼠标右键并选择 New > Repository Location,如图 5 所示:
    图 5. Add CVS Repository 对话框
    Add CVS Repository 对话框
  4. 在必需字段中输入信息并选择 Finish。现在,您将看到在 CVS Repository 视图中添加的存储库。
    图 6. 指定了新存储库位置的 Repository Exploring 视图
    Repository Exploring 视图
    您可以深入浏览存储库中的内容。
  5. 切换回 Data Administration 透视图。选择希望签入到 CVS 中的 test 项目,右键单击它并选择 Team -> Share Project。此时将显示 Share Project 向导。
    图 7. Share Project 向导
    The Share Project 向导
  6. 选择已有存储库位置(在上一步中已经添加)。接受所有默认设置并单击 Finish记住:您可以将所有 Optim Database Administrator 资源作为 ASCII 类型签入。任何具备权限访问此特定的存储库位置的 DBA 现在都可以签出项目,审计它并做出更改。

第 3 部分:Eric(另一名 DBA)签出项目并做出其他更改。

与 Eric 一样,您将完成以下步骤:

  1. 签出项目。
    1. 打开 CVS Repository Exploring 透视图。
    2. 在 CVS Repository 视图中选择 GSDB 项目,单击鼠标右键,并选择 Check Out。这将在当前工作区中创建一个项目副本。
    3. 切换回 Database Administration 透视图。从 CVS 签出的文件现在在 Data Project Explorer 视图中应该可用。您现在可以修改项目以及任何相关的文件。在编辑器中打开 GSDB.changexml 文件之前,确保连接 GSDB 存在并且处于已连接状态。
  2. 指定要执行的其他更改。
    1. 打开变更管理脚本文件 GSDB.changexml,方法是在 Data Project Explorer 视图中双击它。该文件位于 Data Project 视图下的 SQL Scripts 文件夹中。
    2. 在编辑器中选择 PROD_PROMO 表。
    3. 在 Properties 视图中,将 PROMO_CODE 列重新命名为 PROMO_NUMBER
    4. 保存更改。
  3. 假设 Eric 意味到这些更改是错误的。要返回 CVS 中的版本,在 Data Project Explorer 视图中右键单击项目 GSDB(或者项目中的单独资源),然后选择上下文菜单 Replace With > Latest from Head。这将撤消在文件签出后做出的所有更改。此特性(及时撤消)非常方便,特别是在需要撤消大量更改时。
  4. 替换文件后,您将执行以下额外更改:
    1. 重新打开 GSDB.changexml 文件,然后向 GOSALESCT.CUST_ORD 表添加一个类型为 INTEGER 的新列 PROMO_CODE。将要修改的表添加到 "Objects to be Changed" 列表,方法是单击 Alter 图标 并选择 CUST_ORD 表,如图 8a 所示:
      图 8a. 选择要修改的 GOSALESCT.CUST_ORD 表
      Alter table

      在编辑器中选择表,并使用 Properties 视图添加新列,如图 8b 所示:

      图 8b. 向 GOSALESCT.CUST_ORD 表添加新列 PROMO_CODE
      添加新列
    2. 在 GOSALESCT.CUST_ORD 表的 PROMO_CODE 列与 GOSALES.PROD_PROMO 表的主键列 PROMO_CODE 之间创建外键关系。
  5. 单击变更管理编辑器中的 Preview Commands 按钮,保存更改并生成命令。验证生成的命令没有问题。

    注意:

    • 生成的命令包括保留数据以防破坏性表更改的命令。此外,还包括 reorgrebind 等维护命令,用于在命令部署后恢复数据库的状态。
    • 如果生成的命令存在一些错误(比如说错误地导出和导入列映射),则会提示您使用 Data Options 向导,该向导用于指导您完成修正问题的步骤。有关使用 Optim Database Administrator 进行变更管理的更多信息,请参见本文档的 参考资料 小节。
  6. 对数据库应用更改。

    在编辑器中单击 Run... 按钮,以 GSDB 数据库为基础部署命令。编辑器和 SQL Results 视图中将显示部署状态消息,如图 9 所示。编辑器中的状态消息部分还包括一个进度栏,用于估算完成命令部署的剩余时间。

    图 9. 命令部署
    命令部署
  7. 保存文件并关闭编辑器。要将新更改复制到 CVS,右键单击 GSDB 项目,然后选择 Team > Commit 将更改签出到 CVS 中。

现在整个团队都可以查看 Jaya 和 Eric 所做的更改。


第 4 部分:第一个 DBA Jaya 签出项目,并查看 Eric 做出的更改。

虽然改变通常仅在经过许可后才部署到数据库上,但有时您仍然需要在执行更改后对其进行备份。此部分就描述了一个这样的场景:第一个 DBA 决定撤消已部署的更改。

Jaya 将执行以下步骤来撤消 Eric 部署到数据库的更改:

  1. 从 CVS 签出项目(如果项目已经存在于工作区中,则将其替换为 CVS 中的最新版本。)
  2. 确保存在连接 GSDB,并且它处于已连接状态。
  3. 打开变更管理脚本并单击编辑器中的 Undo... 按钮(Undo 按钮位于编辑器的 Messages 部分)。
  4. 部署撤消命令之后,重新设置变更管理脚本(使用主菜单中的 Change Management > Reset),重新开始变更流程。

如何在没有版本控制系统的情况下使用 Optim Database Administrator

如果没有版本控制系统,是否仍然可以使用 Optim Database Administrator?当然!但是,出于审计和跟踪的目的,可能仍然需要遵从某些控制,那么,如果 DB2 变更都存储在 Optim Database Administrator Workspace 中,则应该如何做呢?Data Project 信息存储在一开始就定义的 Optim Database Administrator Workspace 中。工作区是本地磁盘上的一组目录,因此可以将那些文件保存在一起,作为该版本的文件集。

我们使用本文中的示例,但是假设您没有版本控制系统。

使用储存库存储变更的一个好处是工作区可以使用大量的变更历史。审计或撤消变更可能需要这些历史。如果只处理项目文件本身,那么就需要由您来跟踪发生了什么变更,以及是谁做出的变更。

可以和其他用户共享整个工作区吗?

从技术上讲,可以共享整个工作区,例如在一个共享驱动器上。但是,如果在其他人已打开工作区的时候尝试打开工作区,就会收到一条错误消息,说该文件已经在使用。共享工作区的另一个缺点是所有设置也随之共享,所以如果其他人更改设置的话,就可能丢失定制。所以不建议共享工作区。

如何在多个 DBA 之间共享文件?

有一些方法可以共享项目文件。本文使用的、也是最简单的方法是将整个项目导出为一个归档文件(ZIP 文件),让其他用户将项目导入到他们的工作区中。遵循上述场景之后(Jaya 和 Eric 进行某些数据库变更),当生成所有变更命令之后,Jaya 现在处在第 1 部分的最后位置。Jaya 现在不是将文件签入到版本控制中,而是需要保留更改,这样,正在参与该项目的另一个 DBA 就可以使用它。Jaya 需要执行以下步骤:

  1. 选择项目,然后选择 File -> Export 打开 Export 对话框。
  2. 展开 General 文件夹,选择 Archive File 并单击 Next
  3. 在接下来的屏幕上,选择项目、输出文件位置、文件名和格式(ZIP 或 TAR),然后单击 Finish。这样将在磁盘上创建 ZIP 文件。
  4. Jaya 可以退出 Optim Database Administrator,使 Eric 能够使用导出的 ZIP 文件。

Eric 现在需要处理该项目。Eric 不是从 CVS 中签出它,而必须手动将那个项目导入他的工作区中。Eric 需要执行以下步骤:

  1. 在工作区中,选择 File -> Import
  2. 展开 General 文件夹并选择 Existing Projects into Workspace
  3. 使用 Select archive file 浏览至 Jaya 导出的归档文件的位置。该归档文件中的项目将出现在 Projects 列表框中。
  4. 选择项目并单击 Finish

现在,项目就处在 Eric 的工作区中,他可以继续第 3 部分中描述的变更。当 Eric 做出更改并生成 DDL 时,部署脚本同时包含来自 Jaya 和 Eric 的更高(Eric 可以删除或修改 Jaya 的更改,但在本示例中他没有这样做)。

在第 3 部分中,Eric 重新命名了一个列,但是后来改变了主意,并返回到 CVS 中项目的版本。如果不使用版本控制系统,如何能实现这一点?

在 Optim Database Administrator 中,有些本地历史存在于工作区中。在这个特定的场景中,Eric 可以继续 rename column PROD_NUMBER 更改规范,然后通过从 Data Project Explorer 视图中选择 Replace with Local History 来取消对目标模型和变更管理脚本的更改。Eric 可以撤销之前的更改。但并不是所有情况下都能这样,而是只有在工作区中才能这样。也就是说,Eric 和 Jaya 不能相互撤销对方的更改。

在第 4 部分中,当 Eric 将项目导出到一个归档文件(ZIP/TAR)之后,Jaya 可以将项目导回到工作区中。Jaya 应该从工作区中删除已有的项目,并导入 Eric 的新项目归档。这个项目将包含从第 1 部分到第 3 部分的所有变更。但是,Jaya 不能访问关于 Eric 做出的变更的任何本地历史,所以要恢复到之前的变更就变得更困难。

从这个场景可以看出,当进行团队协作时,版本控制系统是多么的重要。

通过整个项目文件共享变更的另一种方法是共享各个模型或部署脚本,并使用 Optim Database Administrator 的合并和迁移特性集成变更。这种方法要求更多地注意细节,但是当处理多个变更或者更复杂的变更时,可以提供更多的灵活性。不管使用何种方法,都不能像版本控制系统那样提供丰富的历史特性。


结束语

结合使用版本控制系统和 Optim Database Administrator 可以为管理业务需求提供可靠的资源。使用这两种工具有助于顺利跟踪应用程序开发周期中涉及到的所有变更。即使没有现成的版本控制系统,通过将 Optim Database Administrator 和您自己良好规划的系统结合起来,也可以达到上述的效果。希望您能进一步探索 Optim Database Administrator 如何才能满足您的要求。


下载

描述名字大小
本文的 GSDB 示例数据库GSDB_database.zip4.74KB

参考资料

学习

获得产品和技术

讨论

条评论

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=229193
ArticleTitle=使用 IBM Optim Database Administrator V2.2 进行数据库版本控制
publish-date=09072009