| 免费下载:IBM® Data Studio V3.1 免费版或者 IBM® Optim® Database Administrator 试用版 |
|---|
| 下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。 |
IBM Data Studio 3.1(本文简称为 DS3.1)是 IBM 开发的一个免费的综合工具平台,主要提供数据库管理开发,设计调优的一整套特性。DS3.1 的前身是 Optim Database Administrator(ODA),它不仅对 ODA 的很多数据库管理功能做了改进,同时还加入了 IBM Optim 家族中数据库开发工具 Optim Development Studio(简称 ODS)的所有功能和数据库 SQL 调优的工具 Optim Query Workload Tuner( 简称 OQT) 的部分功能。 在对数据库的管理方面,DS3.1 对 ODA 的功能进行了很大的提升,其中包含对任务助手 (Task Assitants) 的改进,对 Sql 编辑器的改进,对数据库对象管理编辑器的改进,对 PureScale 的支持,以及对其它主流的数据库的支持等等。在 DS3.1 对 ODA 的功能的提升中。对数据库对象进行管理的编辑器的改进可谓所有提升中最为重要的一项,这也就是本文以下即将探讨的话题 。
在之前的 ODA 版本中,提供两个编辑器来对数据库对象进行管理操作 , 一个是 CMSE( 称为更改管理脚本编辑器 ),一个是 DOE( 称为数据对象编辑器 )。 其中 DOE 一次只能对一个对象进行操作,并且操作不能被撤销 (undo)。CMSE 的功能稍微强大一些,可以一次对多个对象进行操作,并且产生 Undo 的脚本以便于用户进行恢复数据库的操作。但是在默认的情况下 ODA 不启用 CMSE, 若要启用 CMSE,在 ODA 的 Eclipse 工作台上点击 Window->Preferences->General->Capabilities, 然后勾选 Data 前面的复选框,保存设置。启用 CMSE 后,当用户想去创建 / 更改 / 删除一个数据库对象时,会先弹出一个对话框询问用户采用那一个编辑器进行操作。ODA 中提供的编辑器虽然可以满足管理数据库对象的要求。但是用户可能经历以下的问题:
- 用户会疑惑为什么要提供两个编辑器 ? 这两个编辑器在使用中到底有什么具体的区别 ?
- 有时当用户选择 DOE 只是对一个对象进行操作,但是当用户用 DOE 做完了所有的编辑去运行 ODA 生成的 SQL 脚本时,却得到提示说 :”产生的 DDL 包含对其它依赖对象的修改,你必须改用 CMSE 来完成这个操作”,此时 ODA 并不保存用户所有的编辑自动切换到 CMSE。用户不得不退出 DOE,然后再选择 CMSE 重新做编辑。这给用户带来了很大的不便。
- CMSE 虽然支持对多个对象进行复杂的操作,但是当编辑完成后,需要移除其中的某些操作时,CMSE 却并不提供支持。
- CMSE 没有采用 Eclipse 的标准的 UI 设计框架,不能带给用户更好的 UI 体验。
基于以上问题的考虑,在之后的 DS3.1 中引入了一个功能更加强大,用户界面更加友好的数据库对象管理编辑器 Unified Object Management Editor(简称为 UOM)来替代 ODA 中的 DOE 和 CMSE。
UOM 为 IBM Data Studio 的数据库工具(包括 DS/ODS/ODA)提供了一个全新的功能强大的编辑器。无论是对单一数据对象的简单操作,还是多个数据库对象的复杂操作 ,UOM 都提供统一的简单易用的用户接口。UOM 拥有 CMSE 和 DOE 的所有功能(除了某些在 DS3.1 中摒弃的功能,如 partial undo)。 像 CMSE 和 DOE 一样 ,UOM 支持以下 DB2 LUW 的数据库对象。
表 1. UOM 支持的数据库对象
| Alias | Packages | PLSQL Packages | Stored Procedures |
| User-Defined Funtions | User-Defined Types | Buffer Pools | Constraints |
| Federated Stored Procedures | Nicknames | Remote Servers | User Mappings |
| Wrappers | Indexes | MQTs | Partition Groups |
| Schemas | Sequences | Tables | Table Spaces |
| Triggers | Users | Roles | Groups |
| Views | XML Schemas | Columns | Database |
对于 DB2 非 LUW 的数据库对象,UOM 不提供对多个对象的同时管理操作的功能,此时它就像 DOE 一样,只能对单个对象进行操作。
UOM 基于 ODA 中已有的 Object List Editor( 简称 OLE) 和 Properties View(属性视图),同时提供了一个 UOM 工具条(Breadcrumb bar)对数据库对象进行便捷的操作。此外,在 UOM 中也引入了一个全新的概念 Change Plan。所有 UOM 中进行的编辑操作都记录在 Change Plan 中。通过部署 Change Plan 来执行用户的所有操作,以下是 UOM 结构图:
图 1. UOM 结构图
在 DS3.1 中,用户一次对某个或某些对象的操作都记录在 Change Plan 中,换句话说,Change Plan 中包含用户对数据库对象执行的一系列管理操作,用户还可以在 DS3.1 中点击 Edit->Undo 来取消最后的一次操作。在用户完成所有的数据库对象编辑之后,可以通过部署这个 Change Plan 来执行行由 DDL Generator 生成的 Sql 脚本以完成这些编辑操作。Change Plan 具有以下特性:
- 只有被激活的 Change Plan 才能被部署运行,并且一次只能有一个 Change Plan 被激活。
- 如果用户执行操作时事先不创建 Change Plan 而直接对数据库对象进行编辑,那么一个缺省的激活的 Change Plan 会被自动创建来记录用户的操作,并且它会被命令为“Default Change Plan 时间戳 ”,如 : Default Change Plan 2011-11-04 11-23-33。
- 可以撤销 (Undo)Change Plan 中的所有操作。
- Change Plan 有两个状态,如果一个 Change Plan 没有被部署运行,它处于 Pending 状态。当一个激活的 Change Plan 被部署运行之后 , 它会变成 Deployed 的状态。处于 Deployed 状态的 Change Plan 不能被编辑。
- 被激活的 Change Plan 的名字会出现在 Change Plan 的工具条的最左端,如果目前有一个激活的 Change Plan,而用户想执行其它处于 Pending 状态的 Change Plan,那么用户可以用鼠标右击目标 Change Plan,然后在弹出的菜单中选择 Edit 来激活这个 Change Plan。
- Change Plan 本身也可以看成一个对象,可以用 UOM 来进行编辑。像其它的数据库对象一样,Change Plan 有一个 OLE 和属性视图。此外还有一个 Change Plan 的工具条提供一些快键按钮以方便用户对 Change Plan 做操作,这个工具条只有当有激活的 Change Plan 时,才会显示出来。
- Change Plan 可以被保存,以便在需要的时候被执行。
从下图 2 中,读者可以对 Change Plan 有一个直观的认识。
图 2. Change Plan 概览
从上图中读者看以看到:Change Plan 也作为被操作的对象列在 DS3.1 的 Administrator Exploer 视图中,在 Change Plan 的 OLE 中列出了 4 个 Change Plan,其中有 3 个已被执行处于 Deployed 的状态,只有 myTestPlan3 没被执行处于 Pending 的状态,并且它显示在 Change Plan 工具条的最左端,是当前激活的 Change Plan。在 Change Plan 的 OLE 中有一列 User Change,它告诉用户每个 Change Plan 中有多少条操作。双击一个 Change Plan 可以在 OLE 中看到当前 Chang Plan 中包含的用户操作,例如:双击图 1. OLE 中的 myTestPlan3, 您将会看到 myTestPlan3 中所包含的 3 条操作(创建一个缓冲池 TestPool1,创建一个表空间 TestSpace1,创建一个表 TestTable1)如下图 3:
图 3. Change Plan 中的用户操作
当用户想返回到刚才的 Change Plan 列表的视图,点击 UOM 的 Breadcrumb 工具条上的左向箭头按钮。
即可,如果用户要部署运行当前激活的 Change Plan,点击 Change Plan 工具条上的部署按钮。
一个名为查阅和部署的对话框会弹出并显示用户操作所生成的 DDL,在此对话框上选择”运行”然后点击”完成”就可以执行用户的操作了。在本文后面的实例讲解中会给出查阅和部署对话框的截图供读者参考。
在执行一个 Change Plan 之前,用户可以从这个 Change Plan 的属性视图中(请参阅图 2)来定制 Change Plan 的一些参数,如:用户可以根据实际操作的需要和对数据库性能的考虑决定在执行操作中是否要对表执行 Reorg 和 Runstats,是否要为所做的操作产生撤销 (Undo) 的 DDL 以便以后可以将数据库恢复到操作前的状态等等。
当一个 Change Plan 被执行完毕后,为这个 Change Plan 所产生的执行 (Do) 和撤销 (Undo) 的 DDL 都可以在 Data Project Exploer 视图对应的项目中被看到。并且这些 DDL 被保存在 DS3.1 的工作空间中对应的数据库目录下。请参考下图中已被执行的 myTestPlan1。
图 4. Change Plan 操作所产生的 DDL 的自动保存
文中前面提到过,UOM 的 UI 基于之前 ODA 中的 OLE 和 Properties View(属性视图),另外提供了一个便捷的工具条 (Breadcrumb bar)。同时 UOM 采用了 Eclipse 的标准 UI 框架,对所有数据库对象的编辑都在对象的 OLE 和 Properties View 中进行,不再像之前的 ODA 版本,当编辑一个数据库对象时,会在 ODA 的 Eclipse 工作台中新开一个 CMSE 或 DOE 的编辑页来进行编辑。下图是 UOM 的概览图:
图 5. UOM 的概览图
在 UOM 的 Breadcrumb 工具条上提供了以下便捷的操作按钮。
同时,UOM 的工具条上还提供导向按钮进行以下操作:
图 6. 选择已创建的数据库连接
图 7. 在当前的连接上选择实例
图 8. 在当前的实例上选择数据库
图 9. 在当前的数据库上选择数据库对象类型
OLE 中列出的是当前选择的数据库对象类型的所有对象。
此外,UOM 还提供三个图标指示器以显示对数据库对象所进行的操作:
如下图,在 OLE 中显示了处于这三种操作状态的表。
图 10. 数据库对象的操作状态
属性视图中的内容对应于 OLE 中选择的具体对象。在 OLE 中选择不同的的对象,属性视图中的内容也会随着改变以反映选中对象的属性。不同于 ODA 中数据库对象的属性视图,当更改数据库对象时,DS3.1 在对象的属性视图中添加了一个比较按钮用于比较对象更改前后的状态,如下图:
图 11. 属性视图中的对象比较功能
细心的读者会发现,在图 5 的对象属性视图中并没有比较按钮,这是因为在图 5 的 OLE 中选中的对象没有处于更改状态。点击属性视图中的比较按钮,对象比较的对话框会被打开并列出对象更改前后的区别,用户还可以选择把比较的报告以不同的格式的文件导出,请参考下图。
图 12. 对象更改前后的比较对话框
在对象更改的比较对话框上还提供了一些其它的关于比较的操作按钮,当鼠标移到每个按钮上时都有一个按钮使用提示,本文在此就不再獒述了。以上对 UOM 和 Change Plan 都做了较为详尽的介绍,下面将用实例讲解如何使用 UOM 和 Change Plan 来帮助用户执行一系列的数据库管理操作。
用 UOM 和 ChangePlan 来管理数据库对象的实例讲解
在数据库管理员进行数据库管理时,经常会进行一系列相关和不相关的操作,比如:先创建一个表空间,然后在这个表空间中创建一个新表,然后再对这个新表创建索引,同时也对其它数据库对象进行创建 / 更改 / 删除的工作。本实例将讲解使用 UOM 和一个 Change Plan 来执行一个类似的操作,然后再把数据库恢复到执行前的状态,实例中将用安装在 Win2003EE Server 64bit 上的数据库 SAMPLE 作为管理的目标数据库,数据库的实例是 DB2_04,数据库版本为 DB2V9.5。
在 DS3.1 的 Administrator Explorer 视图中点击 New 右边的黑色小箭头,在下拉列表中选择 New Connection to a database,然后在弹出的创建数据库连接的对话框填写数据库连接信息,点击完成,如下图:
图 13. 创建数据库连接
此时,用户会在 Administrator Explorer 视图中看到一个数据库连接已经被建立。
在 Adminstrator Explorer 视图中展开数据库连接的所有节点,点击节点数据库 (SAMPLE) 下的文件夹 Change Plans,Change Plan 的 OLE 会在 DS3.1 的 Eclipse 工作台中打开,点击 UOM 工具条上绿色的 加号按钮,会弹出下图中创建 Change Plan 的对话框 :
图 14. 创建 Change Plan
给 Change Plan 输入一个名字 myPlan1,然后点击 OK。myPlan1 就会显示在 Change plan 的 OLE 中,此时 myPlan1 就是当前激活的 Change Plan,它的工具条也会出现在 OLE 的上方,如下图:
图 15. 新创建的 Change Plan
以下的一系列数据库对象的操作都会记录在这个 Change Plan 中。
在 Adminstrator Explorer 视图中点击数据库下的文件夹 Buffer Pools,Buffer Pools 的 OLE 会被打开,在 OLE 上方的 UOM 的工具条上点击 绿色的加号按钮,一个新的 Buffer Pool 会显示在 OLE 中,并且它的旁边有个创建对象的指示图标,同时它的属性视图也被打开,在属性视图中的 General 页面把 Bufferpool 的名字设为 SAMPLE_POOL1,把 Page Size 设为 8192,不改动属性视图中的其它选项的值。如下图:
图 16. 创建一个新的 Buffer Pool
4. 创建一个表空间并使用步骤 3 中的 BufferPool
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 Table Spaces,会打开表空间的 OLE,在 UOM 的工具条上点击绿色的加号按钮,在弹出的对话框中选择 Regula Table Space,一个新的表空间会显示在 OLE 中,同时它的属性视图也被打开,在属性视图中的 General 页面把表空间的名字设为 TEST_TBSAPCE1,在 Storage Options 页面中的 Buffer Pool 的下拉列表里选择 SAMPLE_POOL1,如下图:
图 17. 创建一个表空间
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 Schemas 会打开 Schemas 的 OLE,在 UOM 的工具条上点击绿色的加号按钮,一个新的 Schema 会显示在 OLE 中,同时它的属性视图也被打开,在属性视图中的 General 页面把 Schema 的名字设为 TEST_SCHEMA1,其它选项的值保持不变,如下图:
图 18. 创建一个 Schema
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 Tables 会打开 Tables 的 OLE,在 UOM 的工具条上点击绿色的加号按钮,然后在弹出的 Schema 选择对话框中选择 TEST_SCHEMA1,一个新的表会显示在 OLE 中,同时它的属性视图也被打开,在属性视图中的 General 页面把表的名字设为 TEST_TB1,在 Columns 页面点击 + 按钮 添加 4 个列 (ID INTEGER, NAME VARCHAR(20), AGE INTEGER, EMPNO INTEGER),并勾选 ID 列的 Primary key 的复选框。在属性视图的 Table Spaces 页面的 Regular 下拉列表中选择表空间 TEST_TBSAPCE1,其它选项的值保持不变,如下图:
图 19. 创建一个表
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 Indexes 会打开索引的 OLE,在 UOM 的工具条上点击绿色的加号 按钮,然后在弹出的索引类型选择对话框中选择 Index,点击 OK,然后再在弹出的表选择对话框中选择 TEST_SCHEMA1.TEST_TB1,一个新的命名为 TEST_TB1_IDX 的索引会显示在 OLE 中,同时它的属性视图也被打开,在属性视图中的 Columns 页面勾选 Unique 前面的复选框,并点击浏览按钮 在弹出的对话框中选择 ID 列和 EMPNO 列作为索引列,保持属性视图中其它选项的值不变,如下图:
图 20. 创建一个索引
以上步骤 3 至 7 是一系列相关的数据库对象的操作,我们接下来添加一个和它们无关的操作到当前的 Change Plan 中。
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 Tables 打开表的 OLE,在 OLE 中鼠标右键点击要删除的表,在弹出的菜单中选择 Drop(在这里本文选择随机删除一个名为 ADMINISTRATOR.TB0102 的测试表),然后再在弹出的确认删除对话框里选择 Yes,表 TB0102 的旁边就会被标上删除对象的图标,如下图 :
图 21. 删除一个表
此时读者可能会发现,随着我们不断的操作,在 ChangePlan 的工具条上的左端,当前激活的 myPlan1 的右边的数字也在随着增加,到目前是 6,代表 myPlan1 里有 6 条操作。
点击 Administrator Explorer 试图中数据库 SAMPLE 下的文件夹 ChangePlans 打开 Change Plan 的 OLE,点击 OLE 上方 Change Plan 工具条上的部署按钮,查阅和部署的对话框会被打开并显示以上所有操作生成的 DDL 供用户查阅,如下图:
图 22. 查阅运行 Change Plan 中操作生成的 DDL
检查图中产生的 DDL,以上所有的操作都包含在里面。对于要删除的表,会生成 SQl 语句先把数据导出,供以后恢复表用。点击 Finish 按钮,产生的 SQL 语句将按顺序执行。当然用户也可以在图 22 的场景中选择 Edit and Schedule,然后点击 Finish 打开 DS3.1 的 SQL Editor,在 SQL Editor 中对产生的 DDL 做需要的编辑后再执行,但这不属于本文讨论的范围。
当以上命令执行完毕,当前 Change Plan 会变成 Deployed 的状态。用户会在 SQL Results 视图中看到每条 SQL 执行的结果,如下图,除了有一条创建唯一索引的 SQL 的执行结果有警告,告诉用户可能某些统计信息不一致,其它所有的 SQL 语句顺利执行。这是正常的结果,因为对索引进行了更新后可能需要对表做 Runstats 操作来更新统计信息。
图 23. Change Plan 执行结果
UOM 为 Change Plan 提供了撤销执行的功能,以便用户可以撤销所做的操作。如果想撤销上述操:
图 24. 选择撤销 Change Plan 的执行
查阅和部署的对话框会被再次打开显示生成的撤销的 DDL,如下图:
图 25. 查阅执行 Undo 时生成的 DDL
从图 25 中的生成 DDl 可以发现,当恢复被删除的表时,又用 LOAD 工具把执行删除表操作时导出的表数据再导入到表中,这样保证恢复操作时数据不会丢失。选择 Run,点击 Finish 按钮,会显示 Undo 执行的结果如下图 :
图 26. 撤销 Change Plan 中的操作的执行结果
从 Undo 的执行结果看,除了有一个创建索引的 SQL 有 warning 之外,其他的全部成功执行,这个结果也是正常的,因为被删除的表 ADMINISTRATOR.TB0102 包含索引,当恢复这个表时要重建索引,可能会产生表统计信息不一致的警告。解决方法同样是对表执行 Runstats 操作。
前面讲 ChangePlan 时提到过,用户做的所有的操作被部署执行后,都会生成相应的 DDL 并保存在 DS3.1 的工作空间中对应的目录下。这里对这个”对应目录”解释一下。比如,当在 DS3.1 中创建了数据库连接后,读者可以从上面的截图中发现本例中的 SAMPLE 数据库在 DS3.1 的 Administrator Explorer 视图中显示为 SAMPLE2(因为 SAMPLE 这个名字已被之前建立的其它服务器上的 SAMPLE 数据库占用),那么对于所有在 SAMPLE2 上部署运行的 Change Plan,DS3.1 都会在工作空间中的生成一个目录 SAMPLE2 Change Plans\Change Plan Name 来保存这个 Change Plan 中所有操作生成的 DDL 以方便数据库管理员以后查阅。 本例中 DS 的工作空间为 D:\DS31GMworkspace。对于本例中的 DDL(包括 Do 和 Undo)的自动保存,可参考下图:
图 27. 在 DS 的工作空间中自动保存执行的 DDL
至此,本文的讲解全部结束。
本文向您详细介绍了 DS3.1 中的数据库对象编辑器 UOM 和引入的新概念 ChangePlan。无论您以前是否使用过之前的版本 ODA,你都可以使用 DS3.1 提供的丰富便捷的数据库对象操作功能轻松地实现数据库管理。
学习
- 在
Data Studio 3.1 信息中心了解 Data studio3.1 的更多信息
- 在 developerWorks 中国网站 Information Management 专区 了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
- 随时关注 developerWorks 技术活动 和 网络广播,了解各种 IBM 产品和 IT 行业话题。
- developerWorks 播客:聆听针对软件开发人员的有趣的访谈和讨论。
- developerWorks 演示中心:观看面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
获得产品和技术
- 下载
Data Studio 3.1,体验 UOM 强大的 数据库对象编辑功能。
- 使用可以直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目。
讨论
- 参与论坛讨论。
- 参与 developerWorks 博客 并加入 developerWorks 中文社区:查看开发人员推动的博客、论坛、群组和 wikis,并与其他 developerWorks 用户交流。
聂 睿,IBM CDL 软件工程师,2009 年加入 IBM Optim 产品的开发与测试团队从事 Optim Performance Manager 的测试工作,目前主要从事 IBM Data Studio 的 QA 工作。您可以通过 developerWorks 社区与 聂睿进行交流。