在访问 DB2 for z/OS 时使用 Data Studio 和 Optim Development Studio 的最佳实践

IBM Data Studio 和 Optim™ Development Studio 是集成数据管理工具的 Optim 工具组合中的相关产品。尽管已发布了许多关于这些工具的用法的资料,但很少有信息关注在访问 DB2® for z/OS® 数据库时使用这两个产品。本文将解答一些常见问题,并介绍一些最佳实践,这些最佳实践是本文的一位作者处理客户问题和问题记录的工作结晶。

Marichu Scanlon, 顾问软件工程师, IBM

Marichu Scanlon 的照片Marichu Scanlon 是 IBM Information Management Application Development Tooling 部门的顾问软件工程师,在加利福尼亚 San Jose 的 IBM 硅谷实验室工作。


developerWorks 投稿作者

Kathryn Zeidenstein, 资深软件工程师, IBM  

Kathryn Zeidenstein 的照片Kathy Zeidenstein 在 1987 年加入 IBM 硅谷实验室。她最初加入的是 DB2 for OS/390 组织,在这里,她首次接触了对象关系。当她开始在 SQL 标准团队工作之后,她了解了 DB2 中许多更高级的对象关系特性,因为这项产品的许多语言设计都会提交给 SQL 标准委员会。



2010 年 11 月 10 日

简介

本小节将简要回顾本文介绍的产品的历史。

Data Studio

IBM Data Studio 是一个免费的可下载产品,提供以下基本数据库管理和数据库开发功能:

  • 连接到子系统;
  • 查看数据服务器对象;
  • 创建对象;
  • 开发和调试存储过程和 UDFs;
  • 运行 Visual Explain;
  • 调优单个查询。

IBM Data Studio 是 Developer Workbench 的替代产品,而后者此前替代了 Development Center。

要了解关于 Data Studio for DB2 for z/OS 的功能的更多信息,请参阅 附录

Data Studio 的全面支持基于您对以下 IBM 数据库服务器的权利:

  • DB2 for Linux®, UNIX®, and Windows®
  • DB2 for i®
  • DB2 for z/OS
  • Informix®

目前,Data Studio 有以下两个打包选项方式可用:

独立包;
独立包是一个小内存单元的独立产品,非常适合数据库管理员。对于执行标准数据库管理或数据库例程开发的多数用户而言,这个包就足够了。它包括基本的单个查询(single-query)调优功能,该功能此前包含在 Optimization Service Center 中。这个独立包不包括 SQLJ、Data Web Services 和 XML 开发功能。
集成开发环境(IDE)包
IDE 包更适于需要与其他 Eclipse 产品进行共享的开发人员。这个包包括大多数管理功能,以及一个针对 Java、XML(针对 DB2 for Linux, UNIX, and Windows)以及 Web 服务开发的集成 Eclipse 开发环境。目前不包括单个查询调优功能。

除非特别声明,本文中的最佳实践同时适用于上述两个包。

Optim Development Studio

就其针对 DBAs、数据开发人员和数据访问开发人员的附加功能而言,Optim Development Studio 是 Data Studio 的一个自然升级产品。它包含许多与 Data Studio 相同的功能,还包含一组丰富的 pureQuery 功能。

表 1. Optim Development Studio 和 pureQuery 中的附加功能
功能Data StudioOptim Development Studio
集成的 Query Editor(SQL 和 XQuery)XX
SQL BuilderXX
针对 IBM 数据库的 Visual ExplainXX
针对 Oracle 数据库的 Visual ExplainX
基本的单个查询调优(访问计划图、查询格式化程序、统计数据建议程序、环境采集)X
SQL Routine DebuggerXX
针对 DB2 for Linux, UNIX, and Windows 数据库的 PL/SQL Routine DebuggersXX
针对 Oracle 数据库的 PL/SQL Routine DebuggerX
Java Routine Debugger*X
XML Editor*X
Data Web Services*X
创建、修改、删除 IBM 数据库对象XX
创建、修改、删除 Oracle 数据库对象X
管理 IBM 数据库对象的安全特权XX
管理 Oracle 数据库对象的安全特权X
在 DataPower 设备 & JMS 上部署 Web ServicesX
创建工具来构建 pureQuery 代码和绑定 pureQuery 包X
将 SQL 关联到 Java 源代码X
针对 Java(对象、SQL 和源代码)的 Impact AnalysisX
SQL 执行统计数据X
执行 pureQuery 代码X

* 需要 Data Studio 的 IDE 包

参见本文 参考资料 部分了解关于 pureQuery 功能的更多信息。

由于 Optim Development Studio 和 Data Studio 共享一些组件,且一些最佳实践对这两个产品均适用,因此本文包含了这两个产品。除非特别声明,本文介绍的最佳实践同时适用这两个产品。

确保 DB2 for z/OS 正确设置

即使 Data Studio 和 Optim Development Studio(工具)可以轻松安装和运行,但如果您的服务器没有正确设置来处理来自这些工具的调用,那么您也不能成功使用它们。例如,有些作业必须在服务器端运行,以便编录支持检索在填充 Data Source Explorer 中使用的元数据的存储过程。其他一些作业设置环境是为了确保成功部署和调试存储过程。在很多情况下,不正确的环境设置是使用这些工具时导致问题出现的根源。

尽管在 DB2 安装之后,许多必要作业很可能已经在您的环境中运行,但也有一些情况,比如从一个较旧的发布迁移,适当的存储过程可能还没有部署。本小节将充当一个检查列表,您和您的系统程序员可以使用这个列表来确保您的服务器被正确配置来使用这些工具。

请参阅 参考资料 中列举的存储过程 IBM Redbooks® 出版物来了解关于以下几个小节的细节。

确保 DB2 提供的存储过程已安装

验证 DB2 提供的必要存储过程已安装且它们正在使用有效的 WLM 应用程序环境。以下 DB2 for z/OS V8 和 V9 定制作业创建和绑定 DB2 提供的各种存储过程,工具使用这些存储过程填充 Data Source Explorer 中的文件夹。

DSNTIJRX
添加对 DB2 提供的存储过程 DSNTPSMP 的 REXX 支持,此存储过程支持创建外部存储过程。
DSNTIJTM
设置 DSNTWR 程序,该程序将在 DB2 提供的存储过程 WLM_REFRESH 被调用时执行。
DSNTIJSG
必要时编录和绑定以下存储过程:
  • DB2 提供的元数据存储过程;
  • DSNTPSMP、DSNTBIND 和 WLM_REFRESH 存储过程;
  • Java 处理存储过程;
  • ADMIN 存储过程。
DSNTIJMS
必要时编录和绑定 SQL 工具化使用的 DB2 提供的元数据存储过程。

如果这些存储过程都不存在,那么用户将看到一个异常,且当一个存储过程被部署或执行时,一个 sqlcode -440 将进入错误日志。另外,当您在 New Stored Procedure 向导中填充 SQL 生成器中的一些页面时,这个代码也将被添加到错误日志中。

验证您拥有适当的授权

当您开发和执行 SQL 语句和存储过程且您正在使用 Optim Development Studio 和 DB2 包时,这些工具将代表您执行一些查询和更新来编录一些表。如您所料,您需要适当的 DB2 授权才能执行这些操作。除此之外,您可能还需要 RACF 和 USS 授权来访问某些资源。

当目标是 DB2 for z/OS 时,Extract 和 Load 究竟意味着什么?

从这些工具提取和加载数据的 Data Source Explore 选项并不会调用任何 DB2 for z/OS 实用程序。Extract 可用于将一个相对较小的数据量放入一个文件中。Load 将一个 Windows 界定的文件作为输入。

常规授权
表 2 列示了用户在这些工具中创建和修改对象所需的常规授权。Data Source Explorer 中使用的 Data Object Editor 支持从 Data Source Explorer 中的大多数节点创建和修改对象,因此必须存在适当的授权来支持这项工作。示例授权包括样例内容、插入、更新、删除、提取和加载表数据。
表 2. 常规授权和特权
任务授权和特权
访问目标数据库CONNECT
在应用程序中使用 Data Object Editor 或嵌入式 SQL 来创建一个视图或表针对该架构的 CREATEIN
检索表中的多行(Sample Contents、Return All Rows 和 Extract)SELECT
在应用程序中使用 Data Object Editor 或嵌入式 SQL 来将一个条目插入表或视图中或更新一个条目。INSERT 或 UPDATE
在应用程序中使用 Data Object Editor 或嵌入式 SQL 来从一个表或视图中删除多行。DELETE
在应用程序中使用 Data Object Editor 或嵌入式 SQL 来删除任意对象。您必须拥有对象所有权且至少拥有以下一个特权或授权:
  • 针对该架构或所有架构的 DROPIN 特权;
  • SYSADM 或 SYSCTRL 授权。
在应用程序中 ALTER 来自 Data Source Explorer 或嵌入式 SQL 的任意对象。您必须拥有对象所有权且至少拥有以下一个特权或授权:
  • 针对该架构或所有架构的 ALTERIN 特权
  • SYSADM 或 SYSCTRL 授权。
将存储过程注册到一个数据库服务器以下任一 CREATE PROCEDURE 授权或特权:
  • SYSADM 或 DBADM;
  • 针对该架构的 CREATEIN;
  • IMPLICIT_SCHEMA
  • 集合 ID 上的 CREATEIN 特权。
在工具中调试一个存储过程DEBUGSESSION
运行或调用一个存储过程SYSADM 或 DBADM,或者与此存储过程关联的包的 EXECUTE 或 CONTROL(针对 SQL 存储过程或带嵌入式 SQL 的 Java 存储过程)
目录授权
当您浏览一个对象的属性或者在 Data Source Explorer 中创建或更新(修改)大量对象时,这些工具将访问几个 DB2 系统目录表。您至少需要 SELECT 特权才能从这些目录收集信息。通常,针对这些目录的 SELECT 特权被授予 PUBLIC。
DB2 提供的存储过程上的执行特权
登录到此连接的授权 ID 应该在这些工具使用的 DB2 提供的存储过程上拥有必要的执行特权。当系统程序员或管理员运行安装 DB2 提供的存储过程的作业时,作业的最后一步是将那些存储过程上的执行特权授予 PUBLIC。但是,某些管理员可能已经定制了该步骤,以使用户默认不拥有正确的特权。
RACF 授权
在部署 DB2 for z/OS 存储过程时,这个工具需要某些 RACF 授权来远程刷新 WLM 环境并与 JES2 接口。系统程序员可以定制和执行以下 SDSNSAMP 成员来实现这一点:
  • DSNTEJ6W,步骤 PH06WS01:定制这个步骤,以创建和填充资源类 DSNR 中的一个 RACF 资源概要文件,从而允许用户调用 WLM_REFRESH。如果这个步骤没有完成,那么在使用这些工具来部署一个存储过程时,当 WLM_REFRESH 被调用时将显示一个警告。
  • DSNTIJRA,步骤 DSNADSR:确保注册 Program Control ,即实现以下存储过程的 DB2 管理支持模块:
    • SYSPROC.ADMIN_JOB_FETCH
    • SYSPROC.ADMIN_JOB_CANCEL
    • SYSPROC.ADMIN_JOB_QUERY
    • SYSPROC.ADMIN_JOB_SUBMIT
    • SYSPROC.ADMIN_COMMAND_UNIX
  • 对于 Unified Debugger 设置,当 Session Manager 被设置为 z/OS 中的一个启动任务时,必须定义一个名为 DB2UDSMD 的 RACF 资源概要文件。请参阅 参考资料 部分中的存储过程 IBM Redbooks 出版物,了解创建这个概要文件的有关细节。
UNIX System Services 授权
尽管用户似乎显然需要拥有对一个特定文件结构的读/写(RW)授权,但也有一些情况这种需求不那么明显。系统程序员必须确保用户在以下情形下拥有 RW 授权。
  • 当 Session Manager(针对 Unified Debugger)作为 z/OS 中的一个启动任务启动时,一个 HFS 文件将在 USS 中创建,以保存 DB2UDSMD 概要文件环境设置。调用 Session Manager 的用户需要这个 HFS 文件和目录上的 RW 授权。请参阅 参考资料 部分中的 Redbook 了解创建这个 HFS 文件的相关细节。
  • 当 z/OS 服务器上有多个 JDK 版本可用时,用户需要这些工具支持的所有版本上的 RW 授权。这是因为客户端 JDK 可能与服务器处于不同的级别。执行一个 Java 存储过程将使用的 JDK 的位置可以通过与这个 JCL 对应的 WLM 应用程序环境过程中的 JAVAENV 数据集控制。

验证 Unified Debugger 设置(仅适用于例程调试)

上一小节提到了使用统一调试需要的一些授权。本小节将介绍一些附加设置步骤。

首先,我们将简要回顾一下 Unified Debugger。Unified Debugger 是最新的调试器技术。Unified Debugger 同时支持 DB2 for z/OS V8(包含与 DB2 for Linux, UNIX, and Windows V9 FP2 同时发布的PTF UK25860)和 DB2 for z/OS V9。对于 DB2 for z/OS V9,Unified Debugger 支持调试 Java 存储过程、原生 SQL 过程、以及外部 SQL 存储过程。您可以参阅 参考资料 部分中的 developerWorks 文章系列,了解使用 Unified Debugger 和设置选项的更多信息。

完成以下步骤,以确保服务器已针对调试正确配置。

  1. 通过查询 SYSPROC.SYSROUTINES 目录并定位以下存储过程来确保样例作业 DSNTIJSD 已定制为在 DB2 for z/OS 上成功运行:
    • SYSPROC.DBG_INITIALIZECLIENT
    • SYSPROC.DBG_TERMINATECLIENT
    • SYSPROC.DBG_SENDCLIENTREQUESTS
    • SYSPROC.DBG_SENDCLIENTCOMMANDS
    • SYSPROC.DBG_RECVCLIENTREPORTS
    • SYSPROC.DBG_ENDSESSIONMANAGER
    • SYSPROC.DBG_PINGSESSIONMANAGER
    • SYSPROC.DBG_LOOKUPSESSIONMANAGER
    • SYSPROC.DBG_RUNSESSIONMANAGER
  2. 确保对于上述每个过程,WLM 应用程序环境已使用正确的 NUMTCBs 设置。IBM Redbooks 出版物(参见 参考资料)列示了 DB2 提供的存储过程的推荐 NUMTCBs 值。
  3. 如果您已经设置好了 Data Studio 或 Optim Development Studio,则可以使用 Data Source Explorer 来验证这些 NUMTCBs。打开 DB2 for z/OS 连接文件夹,单击 Schemas > SYSPROC > Stored Procedures,如图 1 所示。
图 1. Data Source Explorer 中显示的调试器存储过程
在工具化界面中显示的上述存储过程

如存储过程 IBM Redbooks 出版物和 developerWorks 文章系列(参见 参考资料)所述,存储过程调试的一个关键组件是 Session Manager,该组件可以在 z/OS 服务器或客户机上运行。完成以下步骤以启动 Session Manager。

  1. 在 z/OS 上启动 Session Manager 之前,需要验证以下事项:
    • RACF 授权已按照 验证您拥有适当的授权 小节的前言部分所述进行设置。
    • DB2UDSMD 环境概要文件被分配到一个您对其拥有 RW 访问权限的目录中。
    • 启动任务 DB2UDSMD JCL 已在 SYS1.PROCLIB 中注册。通过在 z/OS 控制台中发出 S DB2UDSMD 命令来测试这一点。
  2. 要在客户机上启动 Session Manager,运行 db2dbgm.bat 脚本。
  3. 捕获 IP 地址和端口号。
  4. 通过在这些工具中访问 Window > Preferences > Run/Debug > Unified Debugger 来验证 Unified Debugger 的 Preferences 设置已设置为那些值。
  5. 单击 Already running,在适当的文本框中输入 IP 地址和端口号。
  6. 如果您的环境在 DB2 for z/OS 服务器和安装这些工具的工作站之间有防火墙,且您的 Session Manager 位于客户机上,那么在您的防火墙中设置一个例外,以允许客户机 Session Manager 对 DB2 for z/OS 服务器进行 ping 和通信。
  7. 启动 z/OS 服务器上的 Session Manager。

设置 Visual Explain 和查询调优(仅适用 Data Studio 独立包)

从 Data Studio v2.2.0.2 开始,这个独立包中就提供了一些单一查询调优功能,以及 Visual Explain。 但是,要使用这些功能,DB2 for z/OS 服务器必须正确配置。

要配置您的 DB2 for z/OS 子系统来使用 Data Studio 2.2.0.2 独立包,系统程序员需要完成以下步骤:

  1. 安装 PTF PK58941(DSN5OFM)。
  2. 修改您的 DB2 for z/OS 系统的 DSNTESC 和 DSNTIJOS,然后运行它们。这些 JCL 文件位于 DB2 样例库中。
  3. 安装 dbrm_dsrcp.zip 文件中包含的 DBRMs,如图 2 所示。参见 参考资料 获取这个文件的下载地址。
图 2. Data Studio 独立包下载站点提供用于查询调优的更新后的 DBRMs
突出显示 dbrm zip 文件的下载站点

当您运行上述 JCL 文件时,注意,除了调优在 DB2 for z/OS 上运行的单个查询所需的表和包之外,这些 JCL 文件将创建类似的对象来调优查询工作负载。Data Studio 目前不支持调优工作负载。因此,不必为调优工作负载而在这些对象上授予特权。

应用 PTF 之后,通过完成以下步骤来绑定用于单一查询调优的包:

  1. 在 Data Source Explorer 中,右键单击数据库,单击 Query Tuner > Configure Database for Tuning。这将打开一个向导。由于这个向导也用于 Optim Query Tuner 和 Optim Query Workload Tuner,因此有些 UI 项目与绑定这些包无关。例如,可以跳过与建议器和工作负载相关的页面,因为这些页面不适用 Data Studio 独立包。

    Data Studio 检查所有用于配置的先决条件,并在首页中报告它们。如果您的系统程序员没有在应用 PTF 后代表您绑定 DBRMs,那么包状态字段将显示 Package Not Found,如图 3 所示。

图 3. 配置向导检查查询调优先决条件
一个错误表明一个没有发现
  1. 单击 Next。下一个页面允许您绑定您的系统程序员安装的 DBRMs。
  2. 单击 Bind 以绑定这些 DBRMs,如图 4 所示。
图 4. 绑定用于基本的、单个调优的包
绑定按钮突出显示
  1. 绑定之后,创建您的 Explain 表,如图 5 所示。如果您正在重用表,比如当几个团队共享现有 Explain 表时,可以跳过这个步骤。如果您的 Explain 表是 V8 格式且您已经迁移到 V9,那么您可以迁移到 Explain 表并保留这些表中的信息。定制 SDSNSAMP 成员 DSNTESC 以为您执行迁移。
图 5. 创建 Explain 表的选项
Explain 表
  1. 如果 DB2 for z/OS 服务器此前配置为使用 Visual Explain for DB2 for z/OS 或使用 Optimization Service Center (OSC),那么应将更新后的 DBRMs 安装到您的服务器中并重新绑定这些包。OSC 的这些包版本与独立 Data Studio 的那些包版本不同,尽管它们共享相同的表集合。为使 OSC 和 Data Studio 共存,您需要为每个产品绑定一个版本。注意,只有 OSC FP7 或更高版本与 Data Studio 兼容。请参见 参考资料 中的链接,获取包含更多细节的技术说明。

优化集成数据管理的数据源解决方案

本小节介绍使用 Data Source Explorer 时的一些生产力和性能技巧。

在 Data Source Explorer 上使用过滤

验证 Unified Debugger 设置(仅适用于例程调试) 小节中,您使用过滤器来限制显示的对象的数量,当您管理大量对象时,这能够极大地改善性能和生产力。要激活一个过滤器,需要完成以下步骤:

  1. 右键单击文件夹(比如 Schemas),然后选择 Filter
  2. 在 Filter 窗口中,取消复选 Disable Filter

有两种过滤方法:

  • 通过指定一个过滤器谓词,比如 Starts with the characters DBG
  • 通过选择正在被过滤的一列值。例如,在图 6 中,过滤应用于 Schemas 文件夹上,只有 SYSPROC 架构中的对象将被显示。这将协调您在 图 1 中看到的过滤。
图 6. 连接过滤器属性
SYSPROC 对象被复选并突出显示

使用配置知识库(仅在 Optim Development Studio 和其他 Optim 工具中可用)

如果您的团队成员连接到一组公共数据服务器,那么您的团队可能会受益于 Optim Development Studio 指定配置知识库的功能,该功能避免了将连接信息手动传递给所有团队成员的麻烦。这个配置知识库只在附有定价的、基于 Eclipse 的 Optim 产品中可用,这些产品包括 Optim Development Studio、Optim Database Administrator 和 InfoSphere™ Data Architect。

配置知识库是在数据库服务器中创建的一组表,团队或项目成员均可访问。配置知识库(需要一次设置)存储团队成员要使用的数据库连接的信息。

例如,假设在一个项目上工作的团队需要到以下数据服务器的连通性:

  • DB2LUW1:LUW 数据服务器上的一个 DB2
  • DB2Z_V81:z/OS V8 服务器上,模式为 New Function Mode 的一个 DB2
  • DB2Z_V91:z/OS V8 服务器上,模式为 New Function Mode 的一个 DB2

作为管理员,应选择一个所有团队成员均能访问的数据库,并在那里配置一个知识库。这个知识库包含连接信息,其中包括数据库名称、数据库位置、主机、以及上述服务器的 JDBC 驱动程序位置。当这个知识库被创建或访问时,不需要已创建或激活到这些服务器的连接。

当一个团队成员启动 Optim Development Studio 时,他只是创建了一个到包含这个知识库的数据库服务器的连接,他将能够访问上述三个服务器的连接信息 ,即使连接没有激活。文章 “Using common connections with Optim solutions”(参见 参考资料)详细讨论了这个主题。

使用 “导出/导入” 共享概要文件

如果您正在使用 IBM Data Studio,那么配置知识库不是您的一个好选择。共享公共连接的另一种方法是导出特定的连接概要文件,以便团队成员将其导入他们的工作空间。与配置知识库相比,使用连接概要文件有一些限制,包括:

  • 连接必须处于已连接状态才能被导出。
  • 用户 ID 和密码将被导出,除非最初创建连接时没有保存连接。建议不要让需要与他人共享的连接包含此信息。
  • 导出连接概要文件不能被逻辑分组。
  • 基于一个 DB2 别名的导入连接概要文件要求它们即将导入的工具中存在相同的别名名称。
  • 需要告知团队成员导出的连接文件在文件系统上的驻留位置。

要导出一个或多个连接概要文件,需要完成以下步骤:

  1. 单击 Data Source Explorer 右上角的 Export 图标 Data Source Explorer 右上角的图标的位置
  2. 选择要导出的连接概要文件,并指定概要文件将保存到的文件。在本例中,EC184V9 和 EC218V9 的概要文件被选中并保存到 ConnProfile 文件中,如图 7 所示。这个位置可能是一个共享文件知识库的一部分,这个知识库位于一个良好定义的位置,并与其他团队成员共享。还要注意一点:指定的信息是加密的。
图 7. 选择要导出的连接概要文件
两个文件被选中,文件名文本框中包含一个文件名。

现在,当其他用户启动他们的工作空间时,就可以导入这些连接概要文件了。

  1. 单击 Import 图标,如图 8 所示。
单击已标记的图标,从文件系统导入连接概要文件
Import 图标位于 Data Source Explorer 的右上角
  1. 在 Import Connection Profiles 对话框中,指定包含导出的连接概要文件的文件的位置。

设置您的 DB2 Connect 别名的子集

有些组织维护了一个 DB2 Connect 连接概要文件,它包含他们的系统中可用的所有 DB2 服务器的 DB2 别名。这个概要文件通常被导入每个团队或项目的 DB2 Connect。但许多团队实际上只需访问那些服务器别名的一个子集。使用这些工具,团队可以过滤 DB2 Connect 使用的整个别名列表。

要过滤您的 DB2 Connect 别名,需要完成以下步骤:

  1. 使用默认设置启动此工具,这将加载所有 DB2 别名。
  2. 删除不需要的 DB2 别名。例如,您可能只需要针对 DB2 for z/OS V9 的那些 DB2 别名。当您重新启动工具时,已删除的 DB2 别名将不再列示在 Database Connections 文件夹中,如图 9 所示。
图 9. DB2 别名删除前后
屏幕快照左边显示列示了一个较长 DB2 别名的 Data Source Explorer。右边显示,在删除了一些别名后,只留下少数别名。

要恢复已删除的 DB2 别名,需要完成以下步骤:

  1. 单击 Window > Preferences > Data Management > DB2 Options
  2. 复选 Restore deleted DB2 aliases on startup,如图 10 所示。
图 10. 将别名恢复到视图
选中上述选项的首选项。

如果根本不想使用 DB2 别名,而是愿意使用您自己的 JDBC 驱动程序集,则需要完成以下步骤:

  1. 单击 Window > Preferences > Data Management > DB2 Options
  2. 取消复选 Load DB2 alias connections on startup
  3. 单击 File > Restart 重新启动工作空间。

DB2 别名将不再出现在 Database Connections 文件夹中。注意,如果 DB2 别名是工作空间中的数据开发项目的目标服务器,那么取消复选 Load DB2 alias connections on startup不会 从下一次启动中移除这个 DB2 别名。这是因为这些工具检测到其中一个项目需要这个连接。

离线工作

这些工具支持离线工作,即没有连接到数据库。这在开发 SQL 语句和例程逻辑时很有用,您不需要检查执行该语句或例程返回的输出,比如结果集和输出参数。

要离线工作,需要完成以下步骤:

  1. 右键单击 Data Source Explorer 中的连接概要文件并选择 Save Offline 保存元数据模型,如图 11 所示。
图 11. 保存当前工作元数据和离线工作的选项
在 Data Source Explorer 中右键单击。save offline 和 work offline 都突出显示。
  1. 选择 Work Offline。这个操作将使您断开与数据库服务器的连接。

使用对象的平面视图

如果您想查看与 DB2 Control Center 的显示类似的对象视图,可以单击视图切换图标,将 Data Source Explorer 从层级(树状)视图切换到平面视图,如图 12 所示。

图 12. 突出显示的图标在平面和层级视图之间切换
此图标是 Data Source Explorer 左上方第三个图标

当您请求平面视图时,这些工具将刷新您的 Database Connections 文件夹并按类型显示文件夹。当您单击一个节点时,该节点的元素将以表格格式显示在编辑器中。例如,图 13 展示选中了 Table Spaces 节点,所有表空间均被列示。

图 13. 平面视图按类型列示对象
文件夹被列示为数据库、架构、表,等等。Table spaces 文件夹突出显示。屏幕右侧显示当前数据库连接中的所有表空间。

使用 SQLJ/JDBC 驱动程序和 JRE/JDK 的公共版本

这些工具附带了一组 JDBC 驱动程序 jar 文件和一组 Java Runtime Environment 文件。Optim Development Studio 还附带了一个 Java Development Kit。由于这些工具能够与其他基于 Eclipse 的产品共存或共享 shell,因此有时会发生一些与要使用的 JDBC 或 JRE/JDK 版本相关的问题。

有些客户喜欢为他们的所有产品使用一个版本的 IBM Database Server Driver for JDBC and SQLJ(通常称为 JCC 驱动程序)和 JRE/JDK 文件。另一些客户则喜欢使用由 DB2 Connect 提供的 JCC 驱动程序版本,对他们所有的 Java 应用程序开发使用一个特定的 Java 级别。这样做可以避免在生产中出现已编译或已部署代码的兼容性问题。

通过修改这些 jars 的位置来更改默认 jars,具体步骤如下:

  1. 右键单击 Connection Profile > Properties > Driver Properties
  2. 单击 Edit Driver Definition 图标 Driver Definition 字段右边的一个三角形图标.
  3. 在 Driver Definition 对话框中,单击 Jar List 标签。
  4. 选择一个 jar 文件,然后选择 Edit Jar/Zip,如图 14 所示。
图 14. 选择这个按钮来更改 SQLJ/JDBC 驱动程序 jars 的位置
edit 按钮突出显示
  1. 选择您的公共 JDBC jar 文件的位置。

类似地,您可以在 Optim Development Studio 中设置一个公共 JRE/JDK 版本,具体步骤如下:

  1. 单击 Window > Preferences > Java > Installed JREs
  2. 单击 Add 添加另一个版本,如图 15 所示。
图 15. 添加一个 JRE/JDK 新版本
显示一个 JDK,选中 JDK 的右边突出显示 ADD 按钮。
  1. 单击 Remove 移除当前版本或通过取消复选来禁用一个版本。

要设置 JDK,需要完成以下步骤:

  1. 在 Preferences 窗口中,单击 Data Management > SQL Development > Stored Procedures and User Defined Functions > Deploy Options
  2. 在 Java Home 区域中,单击 Browse 启动文件浏览器,如图 16 所示。
图 16. 在 Preferences 下面的 Deploy Options 中设置 JDK
Deploy preferences 页面的 Java home 区域突出显示
  1. 转到公共 JDK 所在的目录。

使用 SQL 工具优化生产力

本小节介绍一些有用的 SQL 开发技巧。

设置首选项限制结果集和数据大小

查询可能会返回几十万条记录和非常大的数据量,这样,执行可能会非常耗时并降低开发期间的性能。应用程序开发人员通常不需要查看所有记录,因此,通过使用 FETCH FIRST x ROWS ONLY 子句限制获取的记录有助于改善结果集检索的性能。

这些工具支持限制从查询或存储过程结果集返回的记录的数量。要限制从查询或存储过程结果集返回的记录的显示数量,单击 Windows > Preferences > Data Management > SQL Development > SQL Results View Options。这还限制在 SQL Results 视图中显示的记录的数量。

例如,图 17 展示从一个查询返回的记录的数量(限制为 500)和在这个工具的 SQL Results 视图中显示的记录的数量(也限制为 500)。

图 17. 在 Preferences 的 SQL development 区域中设置 SQL 结果限制
maxrowcount 字段包含 500 且 maxdisplayrowcount 为 500

使用 SQL 模板

在以下任一环境中,SQL 模板都能极大地提高生产力:

  • 开发反复访问相同表的 SQL 语句时;
  • SQL 语句遵循某种模式时;
  • 需要促进某种 SQL 编码标准的使用时。

使用 SQL 模板,部分语句已经被预编码。尽管这些工具为 SQL 和 XQuery 提供了几个公共模板,您也可以修改那些模板并创建自己的模板,并与其他团队成员共享您的模板。

要使用 Template Editor 创建您自己的模板,需要完成以下步骤:

  1. 单击 Window > Preferences > Data Management > SQL Development > SQL and XQuery Editor > Templates 启动 Templates 对话框,如图 18 所示。
图 18. Templates 对话框允许编辑现有模板或创建新模板
INSERT 模板突出显示,下面显示 template text/syntax。
  1. 从列表中选择一个模板以查看该模板的预览。
  2. 选择 Edit 按钮编辑模板以满足您的需求,或者单击 New 创建一个新模板。

可以将创建的模板导出到一个文件并与其他团队成员共享。文章 “Building efficiencies into a DBA’s day”(参见 参考资料)详细介绍了如何在 Optim Database Administrator 中使用命令模板。但是,其中的原理也适用于 SQL 和其他工具。

导入预定义的 SQL 语句

有些组织有一个或一组开发人员专门负责确保应用程序中嵌入的 SQL 语句已适当调优。这些语句然后被交给应用程序开发人员。存储过程开发人员可以将预定义的 SQL 语句从一个文件系统导入 scripts 文件夹,稍后将它们导入他们的存储过程。

要导入预定义 SQL 语句,右键单击您的项目的 scripts 文件夹,然后选择 Import。将文件浏览器转到预定义 SQL 语句的位置。这些预定义 SQL 语句可以在您的存储过程或 pureQuery 应用程序中使用。

使用内容助手

除模板之外,还可以在创建和修改 SQL 语句时使用内容助手。这个特性支持验证以下项目:

  • 数据库中的架构;
  • 架构中的表;
  • 表中的字段或列。

这个特性在修改现有 SQL 语句时尤其有用。

如果您应用了一个过滤器,那么您不会看到过滤掉的对象,解析器将这些对象报告为错误(即没有找到)。您无须禁用您的过滤器来消除这些错误。右键单击该语句,然后选择 Validate Table References。这将对您的 SQL 语句中使用的表执行一个快速查询,并在那些表在已连接的数据库服务器上发现时清除错误。

关闭语句验证直到您准备好

有些 DBAs 或开发人员喜欢在编辑时进行语句验证,但另一些则喜欢在语句编码完全完成后才让这个工具验证语法。如果您在 SQL 编码时对左边边缘处出现的那些红色标记感到厌烦,那么您可以通过右键单击 SQL 编辑器并取消选中菜单选项 Validate Statement Syntax 来关闭验证。

语句编辑结束后,再次右键单击编辑器并打开验证,如图 19 所示。

图 19. 右键单击编辑器选择或取消选择语句验证
在 sql script editing 窗口中,右键单击菜单显示,validate statement syntax 选项被选中。

优化例程开发

本小节重点介绍开发存储过程或用户定义函数的一些最佳实践。

设置部署例程的首选项

与 SQL 语句一样,可以在存储过程的 Deploy Options 首选项中设置您的例程的部署选项的默认值。要设置这些选项,单击 Window > Preferences > Data Management > SQL Development > Stored Procedures and User Defined Functions > Deploy Options,设置 Java 和 SQL 例程的默认例程选项。

许多组织在 Preferences 中设置绑定选项和 WLM Environment,以便每个新存储过程都拥有这些值。

另一个技巧是为某些字段,比如 WLM Environment,创建一个掩码。这在每个开发人员都被分配一个特定的 WLM 应用程序环境但这个 WLM Environment 的前 6、7 个字符相同时尤其有用。在存储过程创建时,开发人员只需将最后的字符添加到这个 WLM Environment 名。

例如,假定所有 WLM Environment 名都以 DB2WLMD 开始,每个开发人员都被分配一个不同的 WLM 环境,从 DB2WLMD1 一直到 DB2WLMD9。每个开发人员都可以将这个 Preference 设置为 DB2WLMD,在新存储过程开发过程中,WLM ENVIRONMENT 字段将预先使用这个 WLM 环境名的前几个字符填充,如图 20 所示。

图 20. 将 deployment in preferences(左侧)设置为 prepopulate option at deploy time(右侧)
两个窗口显示。左侧窗口是 DB2WLMD 的首选项设置。右侧窗口展示开发人员只需附加 1 就可以在部署时获取 DB2WLMD1。

指定构建所有者、包所有者和限定符

对于存储过程,构建所有者实际上是 CREATE PROCEDURE 被调用时 CURRENT SQLID 的值。对于外部 SQL 存储过程,CREATE PROCEDURE 由构建实用程序 DSNTPSMP 而不是 Data Studio 本身调用。因此,要正确指定这个值,Deploy 向导中的 Build Owner 字段必须被设置。一个良好的实践是显式设置这些值,而不是假定 CURRENT SQLID 将在部署时正确设置。当您显式设置这些值时,这些工具将把 Build Owner 和 Package Owner 中的值传递给 DSNTPSMP,而不管 DSNTPSMP 被调用时 CURRENT SQLID 的值如何。

另外,有些组织将绑定授权赋予二级授权 IDs,而不是赋予主授权 ID。通过将构建所有者和包所有者显式设置为一个二级授权 ID,可以将对存储过程操作的对象的访问权赋予这个二级授权 ID,而不是用于登录到服务器的主授权 ID。

限制打开的 Routine Editor 窗口的数量

与 SQL 语句开发一样,您可以在存储过程开发过程中关闭语句验证。如果您保持语句验证打开,这些工具将持续验证在任一 Routine Editor 的 Source 选项卡中完成的每个修改的语法。通常,这种验证将很快完成。但是,当有许多 Routine Editor 窗口(选项卡)打开或当正被修改的存储过程包含数千个代码行时,就可能出现问题。因此,一个好的实践是只打开正在修改的 Routine 并关闭其他所有编辑器。

为外部和原生 SQL 存储过程显式指定适用选项

这个最佳实践适用于以下情况:有一些现有 V8 存储过程,您正在这些工具中修改它们,以便针对 V9 使用。在 V8 中,只有外部 SQL 存储过程可用。但是,对于 V9,由于添加了原生 SQL 存储过程,正在被指定的是哪种类型的存储过程可能会出现混淆。

要避免问题,良好的实践是总是对外部 SQL 存储过程编码 FENCED 和 EXTERNAL 关键字,对原生 SQL 存储过程编码 VERSION 关键字。当 New Stored Procedure 向导被用于创建外部 SQL 存储过程时,这些工具将自动添加 FENCED 关键字。当用于创建原生 SQL 存储过程时,这些工具还将添加 VERSION 关键字。但是,如果在 DB2 for z/OS V8 中创建的外部 SQL 存储过程被迁移到 DB2 for z/OS V9,那么该存储过程将不会拥有 FENCED 关键字。因此,这些工具假定这个存储过程是原生 SQL 存储过程,因为 VERSION 关键字对原生 SQL 存储过程是可选的。这可能会在重新部署和执行中导致问题。

使用代码片段进行代码重用

想要在其存储过程中标准化一些代码的组织能够受益于在这些工具中使用这一特性。公共代码示例包括:

  • SQL 例程中的公共数据声明;
  • 版权序言;
  • 公共异常处理程序;
  • 针对 Java 存储过程的公共导入、方法和 catch-try 块。

在 New Stored Procedure 向导中,Code Fragments 页面上,单击代码片段旁边的省略号启动文件浏览器。然后将其指向您的公共代码的位置,如图 21 所示。

图 21. 指定一个代码片段
三个窗口。第一个是 Code Fragments 页面上的省略号按钮。第二个是选择文件窗口。第三个是代码片段在记事本中的样子。

这个页面被定制为您的存储过程的语言类型,这些工具能够将这个公共代码插入到适当的区域,如图 22 所示。

图 22. 插入代码片段
sql 过程编辑器窗口,带有插入到正在进行的存储过程中的代码片段。还显示了一个插入到适当位置的变量声明片段。

在创建 SQLJ 例程之前连接到您的目标服务器

这些工具依赖从目标数据库服务器获取的信息来为 SQLJ 存储过程创建正确的迭代器。(注意,Data Studio 独立包不支持 SQLJ 过程开发。)New Stored Procedure 向导通过连接到数据库并查询参与查询的列的数据类型来生成迭代器。如果这个表没有创建,或者没有连接到数据库服务器,这些工具仍会生成迭代器。但是,您需要在部署该存储过程之前使用表列信息来编辑它。

将 SQL 语句导入您的存储过程

有些组织喜欢把将在应用程序中使用的 SQL 语句直接交给他们的应用程序开发人员。有时,应用程序开发人员不懂 SQL。使用 SQL 工具优化生产力 小节介绍了开发人员如何将这些语句导入他们的项目。通过以下步骤,您可以使用 New Stored Procedure 向导将那些语句导入或嵌入您的存储过程。

  1. 在向导的 SQL Statements 页面上,单击 Remove 移除 Statement Details 区域中的默认 SQL 语句。
  2. 单击 Import,如图 23 所示。
图 23. 移除现有默认值并导入想要的 SQL
图 23. 移除现有默认值并导入想要的 SQL

Import SQL Statements 对话框启动。

  1. 选择想要在您的存储过程中使用的 SQL 语句,单击 Import,这将启动一个对话框,如图 24 所示。
图 24. 选择要导入的脚本
脚本 1、2 和 3 突出显示,导入按钮突出显示。

选中的语句在 SQL Statements 页面的 Statements 窗口中显示。

  1. 单击每个语句,在 Statement Details 窗口中显示它。
  2. 如果向导的 SQL Statements 页面上有多个 SQL 语句,必须将 Result set 字段值更改为 Multiple,如图 25 所示。否则,将生成一个名为 whichQuery 的输入参数,且这些语句将被编码到一个 case 表达式中。
图 25. 对于多个 SQL 语句,指定多个结果集(除非您想要将所有语句放入一个 case 表达式中)
result set 字段突出显示,且包含值 multiple

优化查询调优和 Visual Explain

参阅 设置 Visual Explain 和查询调优 小节,确保您已正确配置为使用这些工具。

Visual Explain 提供了一个常见的访问计划图,如果喜欢,您可以继续使用它。通过查询调优,您可以获得更多功能。通过 Data Studio 独立包单个查询调优,您可以完成以下任务:

  • 捕获来自 Optimization Service Center for DB2 for z/OS 支持的所有数据源的查询和来自从 DB2 Query Monitor for z/OS 导出的 XML 文件的查询。
  • 通过折叠和展开查询各部分并通过查看每个查询部分的关联统计数据来查看格式化的查询。
  • 查看访问计划图。查询调优提供的访问计划图对您通过 Visual Explain 获取的信息进行了增强。例如,可以显示已解释查询的 PLAN_TABLE 记录(仅适用 DB2 for z/OS),但 Visual Explain 则不能。DB2 for z/OS 还能自动检查 Explain 表是否正确,并允许您根据需要迁移该表。但是,查询调优访问计划图目前仅包含在 Data Studio 独立包和 Query Tuner 产品集中。您可以在 Optim Development 这样的产品中使用 Visual Explain。(Visual Explain 还通过 ODS 支持 IDS 和 Oracle。)
  • 采集查询针对其运行的数据服务器的相关信息。这个功能称为查询环境采集,在 Optimization Service Center for DB2 for z/OS 中也称为服务 SQL
  • 生成查询性能报告。
  • 运行 Query Statistics Advisor 来分析查询访问的数据可用的统计数据。也可以分析冲突的统计数据。还可以寻找其他统计数据,它们可用于改善数据服务器处理查询的方式。

建议:如果您使用 Data Studio 独立包和 DB2 for z/OS or Linux, UNIX, and Windows,则可以使用 Data Studio 中的免费查询调优功能。

启动查询调优程序或 Visual Explain

人们往往对如何从 Data Studio 启动查询调优比较生疏。

在 Data Studio V2.2.0.2 独立包中,可以使用以下方法,从相同的启动点启动基本单个查询调优功能或 Visual Explain。

  • 在 SQL Editor 中,突出显示并右键单击 SQL 语句,然后选择 Open Visual Explain(针对 Visual Explain)或 Start Tuning(针对单个调优,包括访问计划图)。注意,如果您的语句是一个 XPATH 或 XQUERY 语句,则只能使用 Visual Explain。
  • 在 Data Project Explorer 中,右键单击一个包含一个 INSERT、UPDATE、SELECT、SQL 存储过程或 SQL 用户定义函数的 SQL 语句。选择 Open Visual ExplainStart Tuning
  • 在 Data Source Explorer 中,右键单击一个存储过程、视图或 SQL 用户定义函数,然后选择 Open Visual ExplainStart Tuning

注意:如果这些工具在一个 SQL 存储过程或 SQL 用户定义函数中发现多个 INSERT、UPDATE、SELECT 或 XQUERY 语句,那么只有第一个语句用于 Visual Explain 或查询调优。

当您使用基本单个查询调优时,您将被提示使用一个现有项目或创建一个新的 Query Tuner Project。编辑器打开,如图 26 所示。

图 26. 基本单个查询调优编辑器提供许多功能
Query Tuner 编辑器中 Choose Tuning Activities 链接突出显示

要在查询调优程序中创建一个访问计划图,选择 Choose Tuning Activities,然后选中 Access Plan Graph 复选框 Choose Query Tuning Activities 窗口截图中显示 Access Plan Graph 被选中。或者,如果您选择 Tune Query,Statistics Advisor 将运行,查询被良好格式化,并且 一个访问计划图生成。

共享 Explain 表

有些组织只使用一组 Explain 表,并将它们从一个版本迁移到另一个版本。可以指定启动 Visual Explain 时要使用的 Explain 表的架构,方法是在 Collect Explain Data 向导中指定 CURRENT SCHEMA,如图 27 所示。

图 27. 通过指定架构来共享一组公共 Explain 表
Current Schema 突出显示,包含值 ADMF001

设置 Visual Explain 和查询调优 小节介绍如何跳过创建 Explain 表,这允许各个项目使用相同的表。


结束语

本文包含的信息应该能够帮助您在访问 DB2 for z/OS 系统时成功设置并运行 Data Studio 和 Optim Development Studio。注意,developerWorks 上还有针对这两个产品的活动讨论论坛。订阅这些论坛,利用 IBM 和社区关于这两个产品的知识是个好主意。


致谢

本文作者特别感谢 Kendrick Ren 和 Paul Wirth 对本文的审阅。


附录:支持 DB2 for z/OS 的 Data Studio 中的特性

以下是支持 DB2 for z/OS 的 Data Studio 中的特性。

表 3. 支持 DB2 for z/OS 的 Data Studio 中的特性小结
功能分组细节
数据管理生成 DDL
管理和修改存储小组
分析影响
添加到概览图表
创建、打开(编辑数据)、查询、修改、删除
创建:索引、别名、触发器
管理特权
生成 DDL
值分发
添加到概览图表
视图管理创建、打开、查询、修改、删除
管理特权
抽取数据
分析影响
值分发
创建、打开(编辑数据)、查询、修改、删除
创建:索引、别名、触发器
管理特权
生成 DDL
值分发
Visual Explain
添加到概览图表
别名管理创建、打开(编辑数据)、查询、修改、删除
分析影响
值分发
触发器管理创建、修改、删除
分析影响
架构管理创建、修改、删除
管理特权
生成 DDL
索引管理创建和删除(仅使用删除或重建进行修改)
运行统计
表空间管理创建、修改、删除
管理特权
用户定义互异类型创建、修改、删除
分析影响
用户定义函数使用例程编辑器/SQL 编辑器创建和修改
删除
管理特权
分析影响
存储过程创建、使用例程编辑器/SQL 编辑器修改
删除
调试 SQL 和 Java(Java 需要 IDE 包)
管理特权
数据库用户添加或更改
分析影响
生成 DDL
角色创建、修改、删除
分析影响
查看成员
XML 管理生成 DDL
注册 XSR(需要 IDE)
删除(需要 IDE)
已注释的架构编辑器
XML 编辑器(需要 IDE)
XML Schema 编辑器(需要 IDE)
Data Web Services创建和部署 Data Web Services(需要 IDE)
连接管理集成 Kerberos 和 LDAP
导出连接概要文件
连接工作组
查询可用性和诊断SQL 和 XQuery 编辑器,带有内容助手和查询格式化
Explain 查询
高级查询格式化
单个查询状态建议程序
高级 Visual Explain(访问计划图)
针对服务能力的 z/OS 环境采集

参考资料

学习

获得产品和技术

讨论

条评论

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=577313
ArticleTitle=在访问 DB2 for z/OS 时使用 Data Studio 和 Optim Development Studio 的最佳实践
publish-date=11102010