目录发行说明 IBM(R) DB2(R) 通用数据库 发行说明 版本 7 — 修订包 7 (C) Copyright International Business Machines Corporation 2000 - 2002. All rights reserved. Note to U.S. government Users -- Documentation related ... 目录 前言 首先阅读 修订包 7 重点内容 产品说明 2.1 在 DB2 版本 7 Solaris 操作环境版上受支持的 CPU 2.2 在红旗 Linux 上的中文语言环境修订 2.3 日语和简体中文 Linux 环境中 DB2 Linux 版的附加语言环境设置 2.4 在 PTX 上对日语的限制 2.5 Microsoft Internet Explorer 的“控制中心”问题 2.6 控制中心功能丧失 2.7 Netscape CD 未与 DB2 UDB 一起交付 2.8 XML 自述文件中的错误 2.9 DB2 版本 7.2 中新的商业智能增强功能 2.10 修订包 2A 和更新版本在 IBM DB2 OLAP 服务器中造成问题 2.11 使用 WebSphere 3.5.5 时的分段违例 2.12 真实 AIX 卷管理器支持 2.13 AIX V4 上的 Java 应用程序必需的修订 联机文档(HTML、PDF 和搜索)注释 3.1 Windows 2000 操作系统上受支持的 Web 浏览器 3.2 在 Solaris 操作环境上搜索 DB2 联机信息 3.3 切换“NetQuestion OS/2 版”以使用 TCP/IP 3.4 试图启动 Netscape 时的错误消息 3.5 基于 UNIX 的系统上 Adobe Acrobat Reader 的配置需求 3.6 SQL Reference 是在一个 PDF 文件中提供的 安装与配置 安装、迁移和配置的一般信息 4.1 下载所有受支持 DB2 客户机的安装程序包 4.2 其它必需的 Solaris 操作环境补丁程序级别 4.3 在 AIX 上安装“DB2 扩充企业版” 4.4 AIX CICS 用户的附加安装步骤 4.5 Netscape LDAP 目录支持 4.5.1 扩展 Netscape LDAP 模式 4.6 对 Windows ME、Windows XP 和 Windows 2000 数据中心版平台的支持 4.6.1 Windows XP 4.6.1.1 限制 4.6.2 Windows ME 4.6.2.1 限制 4.6.3 Windows 2000 数据中心服务器 4.7 在 Windows 95 上安装 DB2 4.8 在 Windows 2000 上安装 DB2 4.9 在“Windows 2000 终端服务器的管理方式”下运行 DB2 4.10 Microsoft SNA Server 和 SNA 多站点更新(两阶段落实)支持 4.11 在“IBM 通信服务器 Windows NT 版”(CS/NT)中定义用户标识和密码 4.11.1 节点定义 4.12 如果未连接可更换驱动器的话,DB2 安装可能会挂起 4.13 在 Windows 2000 上使用 CLP 时发生错误 SQL1035N 4.14 有关使用专用寄存器定义的视图的迁移问题 4.15 Windows 2000 上的 IPX/SPX 协议支持 4.16 在升级 DB2 的先前版本前,停止 DB2 进程 4.17 在安装 DB2 之后运行 db2iupdt(如果已经安装了另一 DB2 产品的话) 4.18 设置要运行 DB2 控制中心的 Linux 环境 4.19 S/390 上的 DB2 通用数据库企业版和 DB2 Connect 企业版的 Linux 版 4.20 在 Linux S/390 版上可能出现的数据损失 4.21 在 Linux 上对 DB2 的 Gnome 和 KDE 桌面集成 4.22 Solaris 内核配置参数(建议值) 4.23 DB2 通用数据库扩充企业版 UNIX 版快速入门 4.24 HP-UX 的 shmseg 内核参数 4.25 迁移 IBM Visual Warehouse 控制数据库 4.26 使用 db2uiddl 命令来迁移唯一索引 4.27 64 位 AIX 版本安装错误 4.27.1 使用 SMIT 4.28 迁移期间的错误 4.29 IBM(R) DB2(R) Connect 许可证激活 4.29.1 使用许可证中心安装许可证密钥和设置许可证类型 4.29.2 使用 db2licm 命令来安装许可证密钥和设置许可证类型 4.29.3 分布式安装的许可证注意事项 4.30 存取仓库控制数据库 4.31 企业版 UNIX CD-ROM 上的试用产品 4.32 DB2 Connect 企业版 UNIX CD-ROM 上的试用产品 4.33 UNIX 上的“Merant 驱动程序管理器”和“DB2 UDB 版本 7 ODBC 驱动程序” 4.34 在为 Web 安装“信息目录中心”之前所需要的附加配置 4.35 代码页和语言支持信息 — 更正 《DB2 Data Links Manager 快速入门》 5.1 AIX 5.1 上的支持 5.2 Dlfm 启动失败,出现“获取前缀的 afsfid 时出错”这一消息 5.3 对压缩文档设置 Tivoli Storage Manager 类 5.4 DFS 客户机使能器的磁盘空间需求 5.5 在 AIX 上监视 Data Links File Manager 后端进程 5.6 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 环境中的其它安装注意事项 5.7 “dlfm add_prefix”命令失败 5.8 偶尔出现“复制守护程序”在 dlfm 停止时不能停止的情况 5.9 安装和配置 DB2 Data Links Manager AIX 版:使用 db2setup 实用程序在 AIX 上安装 DB2 Data Links Manager 5.10 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 后安装任务 5.11 安装和配置 DB2 Data Links Manager AIX 版:使用 Smit 手工安装 DB2 Data Links Manager 5.12 安装和配置 DB2 Data Links DFS 客户机使能器 5.13 安装和配置 DB2 Data Links Manager Solaris 操作系统版 5.14 Windows NT 上的 Data Links 中的管理员组特权 5.15 最小化 Data Links File System Filter(DLFF)安装的记录 5.15.1 安装后记录消息 5.15.2 最小化对 Sun Solaris 系统的记录 5.16 DATALINK 复原 5.17 删除 Data Links Manager 5.18 使用 SMIT 卸载 DLFM 组件时可能会除去附加文件集 5.19 开始之前/确定主机名之前 5.20 使用“DB2 Data Links 文件管理器”:在从 DB2 数据库中删除 DB2 Data Links Manager 之后进行清理 5.21 dlfm Client_conf 故障时的用户操作 5.22 DLFM1001E(新的错误消息) 5.23 DLFM 设置配置文件选项 5.24 复原文件时的潜在问题 5.25 当在 AIX 上运行 Data Links/DFS 脚本 dmapp_prestart 时出错 5.26 Tivoli Space Manager 与 Data Links 集成 5.26.1 约束与限制 5.27 第 4 章 安装和配置 DB2 Data Links Manager AIX 版 5.27.1 常见的安装注意事项 5.27.1.1 从 DB2 File Manager 版本 5.2 迁移至 DB2 Data Links Manager 版本 7 5.28 第 6 章 验证 AIX 上的安装 5.28.1 NFS 环境中的解决方法 《安装和配置补遗》 6.1 第 5 章 在 UNIX 操作系统上安装 DB2 客户机 6.1.1 HP-UX 内核配置参数 6.2 第 12 章 运行您自己的应用程序 6.2.1 使用运行时客户机绑定数据库实用程序 6.2.2 使用 ODBC 对 DB2 的 UNIX 客户机存取 6.3 第 24 章 设置联合系统以存取多个数据源 6.3.1 联合系统 6.3.2 限制 6.3.3 安装 DB2 Relational Connect 6.3.3.1 在 Windows NT 服务器上安装 DB2 Relational Connect 6.3.3.2 在 UNIX 服务器上安装 DB2 Relational Connect 6.3.4 第 24 章 设置联合系统以存取多个数据源 6.3.4.1 了解与别名配合使用的模式 6.3.4.2 将联合数据库复原到不同的联合服务器上时的问题 6.4 第 26 章 存取 Oracle 数据源 6.4.1 文档错误 6.5 避免在使用远程 LOB 时发生问题 6.6 存取 Sybase 数据源 6.6.1 将 Sybase 数据源添加至联合服务器 6.6.1.1 第 1 步:设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris) 6.6.1.2 第 2 步:将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris 操作环境) 6.6.1.3 第 3 步:回收 DB2 实例(仅 AIX 和 Solaris 操作环境) 6.6.1.4 第 4 步:创建并设置接口文件 6.6.1.5 第 5 步:创建包装器 6.6.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 6.6.1.7 第 7 步:创建服务器 6.6.1.8 第 8 步:可选:设置 CONNECTSTRING 服务器选项 6.6.1.9 第 9 步:创建用户映射 6.6.1.10 第 10 步:为表和视图创建别名 6.6.2 指定 Sybase 代码页 6.7 使用 ODBC 来存取 Microsoft SQL Server 数据源(新章节) 6.7.1 将 Microsoft SQL Server 数据源添加至联合服务器 6.7.1.1 第 1 步:设置环境变量(仅 AIX) 6.7.1.2 第 2 步:运行 shell 脚本(仅 AIX) 6.7.1.3 第 3 步:可选:设置 DB2_DJ_COMM 环境变量(仅 AIX) 6.7.1.4 第 4 步:回收 DB2 实例(仅 AIX) 6.7.1.5 第 5 步:创建包装器 6.7.1.6 第 6 步:创建服务器 6.7.1.7 第 7 步:创建用户映射 6.7.1.8 第 8 步:为表和视图创建别名 6.7.1.9 第 9 步:可选:获取 ODBC 跟踪 6.7.2 复查 Microsoft SQL Server 代码页(仅用于 Windows NT) 6.8 存取 Informix 数据源(新章节) 6.8.1 将 Informix 数据源添加至联合服务器 6.8.1.1 第 1 步:设置环境变量并更新概要文件注册表 6.8.1.2 第 2 步:将 DB2 链接至 Informix 客户机软件 6.8.1.3 第 3 步:回收 DB2 实例 6.8.1.4 第 4 步:创建 Informix sqlhosts 文件 6.8.1.5 第 5 步:创建包装器 6.8.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 6.8.1.7 第 7 步:创建服务器 6.8.1.8 第 8 步:创建用户映射 6.8.1.9 第 9 步:为表、视图和 Informix 同义词创建别名 管理 《管理指南》 7.1 提供的更新 《管理指南:计划》 8.1 第 8 章 物理数据库设计 8.1.1 表空间设计注意事项 8.1.1.1 当数据位于冗余独立磁盘阵列时优化表空间性能 8.1.2 分区键 8.2 附录 D 发行版之间的不兼容性 8.2.1 当检测到丢失连接时未返回错误 SQL30081N 8.2.2 导出实用程序要求修订包 7 或更新版本正确处理身份属性 8.3 附录 E 本地语言支持(NLS) 8.3.1 国家或地区代码和代码页支持 8.3.2 导入/导出/装入注意事项 — 对代码页 1394 和 5488 的限制 8.3.3 日期时间值 8.3.3.1 日期时间值的字符串表示法 8.3.3.2 日期字符串 8.3.3.3 时间字符串 8.3.3.4 时间戳记字符串 8.3.3.5 字符集注意事项 8.3.3.6 日期和时间格式 《管理指南:实现》 9.1 在 Windows 2000 和更新版本上指定 DMS 容器的新方法 9.2 “扩展控制中心”的示例 《管理指南:性能》 10.1 系统临时表模式 10.2 第 8 章 操作性能 10.2.1 基于块的缓冲池 10.2.1.1 基于块的缓冲池示例 10.3 第 10 章 通过添加处理器来调整配置 10.3.1 将节点添加至分区数据库时出现的问题 10.4 第 13 章 配置 DB2 10.4.1 日志归档完成情况现在检查得更频繁 10.5 DB2 注册表和环境变量 10.5.1 对性能变量的更正 10.5.2 注册表变量 DB2BPVARS 的新参数 10.5.3 对其它注册表变量的更正和补充 10.5.4 对常规注册表变量的更正和补充 《卫星管理指南和参考》 11.1 将版本 7.2 DB2 个人版和 DB2 工作组版设置为卫星 11.1.1 先决条件 11.1.1.1 安装注意事项 11.1.2 配置版本 7.2 系统以进行同步 11.1.3 在版本 6 企业版系统上安装修订包 2 或更高版本 11.1.3.1 升级版本 6 DB2 企业版以用作 DB2 控制服务器 11.1.4 升级版本 6 控制中心和卫星管理中心 命令参考 12.1 提供的更新 12.2 db2updv7 — 将数据库更新为版本 7 当前修正级别 12.3 ARCHIVE LOG 使用说明的附加上下文 12.4 REBIND Missing value 12.5 db2inidb — 初始化镜像数据库 12.5.1 使用信息 12.6 db2relocatedb(新命令) db2relocatedb — 重定位数据库 12.7 db2move 数据库移动工具 12.8 GET ROUTINE 命令中的附加选项 GET ROUTINE 12.9 CREATE DATABASE 《数据恢复和高可用性指南与参考》 13.1 联机提供的《数据恢复和高可用性指南与参考》 13.2 新的归档记录行为 13.3 如何使用暂挂的 I/O 来进行数据库恢复 13.4 LOGRETAIN=CAPTURE 时的新备份与复原行为 13.5 增量备份与恢复 — 附加信息 13.6 NEWLOGPATH2 现在称为 DB2_NEWLOGPATH2 13.7 为 AIX 或 Solaris 操作环境上的 DB2 Data Links Manager 选择备份方法 13.8 Tivoli Storage Manager — LAN 自由数据传送 Data Movement Utilities Guide and Reference 14.1 导出实用程序现在完全支持扩展的身份值 14.2 导出、导入和装入对 LOB 文件处理的更改 14.2.1 IXF 注意事项 14.3 对导入、导出和装入实用程序的代码页支持 14.4 Chapter 2. Import 14.4.1 Using Import with Buffered Inserts 14.5 Chapter 3. Load 14.5.1 Pending States After a Load Operation 14.5.2 装入局限性与限制 14.5.3 totalfreespace 文件类型修饰符 14.6 Chapter 4. AutoLoader 14.6.1 认证设置为 YES 时,运行 AutoLoader 需要 rexecd 14.7 在 4.3.3 之前的 AIX 系统上,AutoLoader 在派生期间可能会挂起 14.8 Appendix C. Export/Import/Load Utility File Formats Replication Guide and Reference 15.1 复制和非 IBM 服务器 15.2 在 Windows 2000 上进行复制 15.3 保存 SQL 文件时的已知错误 15.4 DB2 维护 15.5 Web 上的数据差异实用程序 15.6 Chapter 3. Data Replication Scenario 15.6.1 复制方案 15.7 Chapter 5. Planning for Replication 15.7.1 表和列名 15.7.2 DATALINK 复制 15.7.3 LOB 局限性 15.7.4 Planning for Replication 15.8 Chapter 6. Setting up Your Replication Environment 15.8.1 随处更新先决条件 15.8.2 设置复制环境 15.9 Chapter 8. Problem Determination 15.10 Chapter 9. Capture and Apply for AS/400 15.11 Chapter 10. Capture and Apply for OS/390 15.11.1 Prerequisites for DB2 DataPropagator for OS/390 15.11.2 UNICODE and ASCII Encoding Schemes on OS/390 15.11.2.1 Choosing an Encoding Scheme 15.11.2.2 Setting Encoding Schemes 15.12 Chapter 11. Capture and Apply for UNIX platforms 15.12.1 为 UNIX 和 Windows 上的 Capture 和 Apply 设置环境变量 15.13 Chapter 14. Table Structures 15.14 Chapter 15. Capture and Apply Messages 15.15 Appendix A. Starting the Capture and Apply Programs from Within an Application System Monitor Guide and Reference 16.1 db2ConvMonStream Troubleshooting Guide 17.1 在用户未登录的情况下在 Windows 95、Windows 98 和 Windows ME 上启动 DB2 17.2 Chapter 1. Good Troubleshooting Practices 17.2.1 问题分析和环境收集工具 17.2.1.1 收集输出 17.2.1.2 查看 detailed_system_info.html 17.2.1.3 一次一页地查看“DB2 支持工具”语法 17.3 Chapter 2. Troubleshooting the DB2 Universal Database Server 17.4 Chapter 8. Troubleshooting DB2 Data Links Manager 17.5 Chapter 15. Logged Information 17.5.1 收集基于 UNIX 的系统上的堆栈回溯信息 在 64 位的平台上使用“DB2 通用数据库” 18.1 第 5 章 配置 18.1.1 LOCKLIST 18.1.2 shmsys:shminfo_shmmax 18.2 第 6 章 限制 XML Extender 管理和编程 MQSeries 20.1 “DB2 MQSeries 函数”的安装和配置 20.1.1 安装 MQSeries 20.1.2 安装 MQSeries AMI 20.1.3 启用 DB2 MQSeries 函数 20.2 MQSeries 消息传递样式 20.3 消息结构 20.4 MQSeries 函数概述 20.4.1 限制 20.4.2 错误代码 20.5 使用方案 20.5.1 基本消息传递 20.5.2 发送消息 20.5.3 检索消息 20.5.4 应用程序间的连接 20.5.4.1 请求/应答通信 20.5.4.2 发布/预订 20.6 enable_MQFunctions enable_MQFunctions 20.7 disable_MQFunctions disable_MQFunctions 管理工具 运行工具之前的附加设置 21.1 在 Linux 上禁用浮点堆栈 21.2 日语版 Linux 环境中所需的特定 Java 级别 控制中心 22.1 选择重定向的复原落实来复原数据库 22.2 管理 DB2 服务器 VSE 版和 VM 版服务器的能力 22.3 Java 1.2 支持“控制中心” 22.4 在 Windows 操作系统上使用联机帮助时发生“快捷方式无效”错误 22.5 键盘快捷方式不起作用 22.6 OS/2 上的 Java 控制中心 22.7 试图在 Windows 操作系统上的日志中查看已完成作业时发生“拒绝存取文件”错误 22.8 多站点更新测试连接 22.9 “DB2 OS/390 版”的“控制中心” 22.10 对“控制中心 OS/390 版”的必需修正 22.11 对“创建空间层”对话框的更改 22.12 “DB2 控制中心”的故障诊断信息 22.13 基于 UNIX 的系统上的控制中心故障诊断 22.14 OS/2 上可能的 Infopops 问题 22.15 jdk11_path 配置参数的帮助 22.16 在使用“脚本中心”或“日志”时出现的 Solaris 系统错误(SQL10012N) 22.17 DPREPL.DFT 文件的帮助 22.18 启动多个控制中心小应用程序 22.19 关于作为小应用程序运行的“控制中心”的联机帮助 22.20 以小应用程序方式运行“控制中心”(Windows 95) 22.21 使用大型查询结果 命令中心 23.1 命令中心交互式页面现在识别语句终止符 信息中心 24.1 对 Java 样本文档的更正 24.2 在 Windows 操作系统上出现“快捷方式无效”错误 24.3 当 Netscape 已打开时,打开 Netscape Navigator 中的外部 Web 链接(基于 UNIX 的系统) 24.4 启动“信息中心”时的问题 存储过程构建器 25.1 对 z/OS 或 OS/390 的 Java 存储过程的支持 25.2 对 z/OS 或 OS/390 的 SQL 存储过程的支持 25.3 对 z/OS 或 OS/390 文档的“存储过程构建器”参考更新 25.4 对设置结果集特性的支持 25.5 删除 Windows NT 上的 DB2 数据库中的过程 向导 26.1 在创建数据库向导中设置范围大小 26.2 “MQSeries 辅助程序”向导 26.3 “OLE DB 辅助程序”向导 商业智能 商业智能教程 27.1 修正商业智能教程 DB2 通用数据库快速导览 数据仓库中心 《管理指南》 29.1 提供的更新 29.2 仓库服务器增强功能 29.3 使用 OS/390 代理程序来运行 Trillium 批处理系统 JCL 29.4 数据仓库中心中的两个新样本程序 29.5 已更新了“利用“DB2 仓库管理器”来管理 ETI.Extract(R) 转换程序” 29.6 使用“公共仓库元数据交换”(CWMI)导入和导出元数据 29.6.1 介绍 29.6.2 导入元数据 29.6.3 运行导入实用程序之后更新元数据 29.6.4 导出元数据 29.7 标记语言元数据导入/导出实用程序 29.7.1 键定义 29.7.2 步骤和进程调度 29.8 SAP 步骤信息 29.8.1 创建在逻辑上不一致的表的可能性 29.9 SAP 连接器信息 29.9.1 SAP 连接器安装限制 29.9.2 GetDetail BAPI 的性能 DB2 OLAP Starter Kit 30.1 OLAP 服务器 Web 站点 30.2 受支持的操作系统服务级别 30.3 在 UNIX 上完成 DB2 OLAP Starter Kit 设置 30.4 “Solaris 操作环境”的附加配置 30.5 所有操作系统的附加配置 30.6 为 OLAP Starter Kit 配置 ODBC 30.6.1 在 UNIX 系统上配置数据源 30.6.1.1 配置 ODBC 环境变量 30.6.1.2 编辑 odbc.ini 文件 30.6.1.3 将数据源添加至 odbc.ini 文件 30.6.1.4 DB2 的 ODBC 设置的示例 30.6.1.5 Oracle 的 ODBC 设置的示例 30.6.2 在 UNIX 系统上配置“OLAP 元数据目录” 30.6.3 在 Windows 系统上配置数据源 30.6.4 在 Windows 系统上配置“OLAP 元数据目录” 30.6.5 在配置数据源之后 30.7 从“OLAP Starter Kit 桌面”进行登录 30.7.1 Starter Kit 登录示例 30.8 手工创建和配置 OLAP Starter Kit 的样本数据库 30.9 将应用程序迁移至 OLAP Starter Kit 版本 7.2 30.10 已知问题和限制 30.11 缺少 OLAP Spreadsheet Add-in EQD 文件 Information Catalog Manager Administration Guide 31.1 信息目录管理器初始化实用程序 31.1.1 31.1.2 许可证发放问题 31.1.3 安装问题 31.2 “信息目录管理器”的增强功能 31.3 Windows 环境中的信息目录管理器与 Sybase 的不兼容性 31.4 使用 DB2 版本 7 信息目录管理器来存取 DB2 版本 5 信息目录 31.5 设置信息目录 31.6 Exchanging Metadata with Other Products 31.7 使用 flgnxoln 命令来交换元数据 31.8 使用 MDISDGC 命令来交换元数据 31.9 调用程序 Information Catalog Manager Programming Guide and Reference 32.1 信息目录管理器原因码 《信息目录管理器用户指南》 信息目录管理器:联机消息 34.1 对 FLG 消息的更正 34.1.1 消息 FLG0260E 34.1.2 消息 FLG0051E 34.1.3 消息 FLG0003E 34.1.4 消息 FLG0372E 34.1.5 消息 FLG0615E 信息目录管理器:联机帮助 35.1 用于 Web 的“信息目录管理器” 《DB2 仓库管理器安装指南》 36.1 提供的《DB2 仓库管理器安装指南》更新 36.2 仓库变换器的软件需求 36.3 iSeries 代理程序的后安装注意事项 36.4 在对 iSeries 仓库代理程序使用转换程序之前 Query Patroller Administration Guide 37.1 DB2 Query Patroller 客户机是一个独立组件 37.2 更改节点状态 37.3 使用 dqpmigrate 从 DB2 Query Patroller 的版本 6 迁移 37.4 Enabling Query Management 37.5 控制表的表空间的位置 37.6 dqpstart 命令的新参数 37.7 iwm_cmd 命令的新参数 37.8 新的注册表变量:DQP_RECOVERY_INTERVAL 37.9 启动 Query Administrator 37.10 用户管理 37.11 数据源管理 37.12 创建作业队列 37.13 作业记帐表 37.14 使用“命令行界面” 37.15 “查询使能器”注释 37.16 DB2 Query Patroller Tracker 可能会返回空白列页 37.17 有关 DB2 Query Patroller Tracker GUI 工具的附加信息 37.18 Query Patroller 和复制工具 37.19 改进 Query Patroller 性能 37.20 版本 6 中创建的 Query Patroller 用户的 EXECUTE 特权丢失 37.21 Query Patroller 限制 37.22 Appendix B. Troubleshooting DB2 Query Patroller Clients 应用程序开发 Administrative API Reference 38.1 db2ArchiveLog(新 API) db2ArchiveLog 38.2 db2ConvMonStream 38.3 db2DatabasePing(新 API) db2DatabasePing — Ping 数据库 38.4 db2HistData 38.5 db2HistoryOpenScan 38.6 db2XaGetInfo(新 API) db2XaGetInfo — 获取资源管理器的信息 38.7 db2XaListIndTrans(取代 sqlxphqr 的新 API) db2XaListIndTrans — 列示不确定事务 38.8 db2GetSnapshot — 获取快照 38.9 忘记日志记录 38.10 sqlaintp — 获取错误消息 38.11 sqlbctcq — 关闭表空间容器查询 38.12 sqleseti — 设置客户机信息 38.13 sqlubkp — 备份数据库 38.14 sqlureot — 重组表 38.15 sqlurestore — 复原数据库 38.16 关于“AIX 扩展共享内存支持”(EXTSHM)的文档错误 38.17 SQLFUPD 38.17.1 锁定列表 38.18 SQLEDBDESC 构建 OS/2 和 Windows 应用程序 39.1 提供的更新 39.2 S/390 和 zSeries 上的 Linux 支持 39.3 Linux Rexx 支持 39.4 关于分发已编译的 SQL 过程的附加注释 Application Development Guide 40.1 提供的更新 40.2 对“调试 Java 存储过程”的更正 40.3 executeQuery 和 executeUpdate 的新要求 40.4 其它方法的 JDBC 驱动程序支持 40.5 用于 DB2 UDB 的 IBM OLE DB 供应商 CLI 指南与参考 41.1 使用运行时客户机绑定数据库实用程序 41.2 在 CLI 应用程序中使用静态 SQL 41.3 创建静态 JDBC/ODBC/CLI 概要文件的限制 41.4 ADT 变换 41.5 Chapter 1. Introduction to CLI 41.5.1 Differences Between DB2 CLI and Embedded SQL 41.6 Chapter 3. Using Advanced Features 41.6.1 Writing Multi-Threaded Applications 41.6.2 Writing a DB2 CLI Unicode Application 41.6.2.1 Unicode Functions 41.6.2.2 New datatypes and Valid Conversions 41.6.2.3 Obsolete Keyword/Patch Value 41.6.2.4 Literals in Unicode Databases 41.6.2.5 New CLI Configuration Keywords 41.6.3 Microsoft Transaction Server (MTS) as Transaction Monitor 41.6.4 Scrollable Cursors 41.6.4.1 Server-side Scrollable Cursor Support for OS/390 41.6.5 Using Compound SQL 41.6.6 Using Stored Procedures 41.6.6.1 用于构建和调试 SQL 和 Java 存储过程的特权 41.6.6.2 Writing a Stored Procedure in CLI 41.6.6.3 CLI Stored Procedures and Autobinding 41.7 Chapter 4. Configuring CLI/ODBC and Running Sample Applications 41.7.1 Configuration Keywords 41.7.1.1 CURRENTFUNCTIONPATH 41.7.1.2 SKIPTRACE 41.8 Chapter 5. DB2 CLI Functions 41.8.1 SQLBindFileToParam - Bind LOB File Reference to LOB Parameter 41.8.2 SQLColAttribute -- Return a Column Attribute 41.8.3 SQLGetData - Get Data From a Column 41.8.4 SQLGetInfo - Get General Information 41.8.5 SQLGetLength - Retrieve Length of A String Value 41.8.6 SQLNextResult - Associate Next Result Set with Another Statement Handle 41.8.6.1 Purpose 41.8.6.2 Syntax 41.8.6.3 Function Arguments 41.8.6.4 Usage 41.8.6.5 Return Codes 41.8.6.6 Diagnostics 41.8.6.7 Restrictions 41.8.6.8 References 41.8.7 SQLSetEnvAttr - Set Environment Attribute 41.8.8 SQLSetStmtAttr — 设置与语句相关的选项 41.9 Appendix C. DB2 CLI and ODBC 41.9.1 ODBC Unicode Applications 41.9.1.1 ODBC Unicode Versus Non-Unicode Applications 41.10 Appendix D. Extended Scalar Functions 41.10.1 Date and Time Functions 41.11 Appendix K. Using the DB2 CLI/ODBC/JDBC Trace Facility 《消息参考》 42.1 提供的更新 42.2 消息更新 42.3 联机阅读消息文本 SQL Reference 43.1 提供的 SQL Reference 更新 43.2 Enabling the New Functions and Procedures 43.3 SET SERVER OPTION — 文档错误 43.4 对“创建表空间容器”子句和“容器”字符串信息的更正 Information 43.5 GRANT(表、视图或别名特权)— 文档错误 43.6 MQSeries Information 43.6.1 Scalar Functions 43.6.1.1 MQPUBLISH 43.6.1.2 MQREADCLOB 43.6.1.3 MQRECEIVECLOB 43.6.1.4 MQSEND 43.6.2 Table Functions 43.6.2.1 MQREADALLCLOB 43.6.2.2 MQRECEIVEALLCLOB 43.6.3 MQSeries 函数中现在支持 CLOB 数据 43.7 Data Type Information 43.7.1 Promotion of Data Types 43.7.2 Casting between Data Types 43.7.3 Assignments and Comparisons 43.7.3.1 String Assignments 43.7.3.2 String Comparisons 43.7.4 Rules for Result Data Types 43.7.4.1 Character and Graphic Strings in a Unicode Database 43.7.5 Rules for String Conversions 43.7.6 Expressions 43.7.6.1 With the Concatenation Operator 43.7.7 Predicates 43.8 Unicode Information 43.8.1 Scalar Functions and Unicode 43.9 GRAPHIC 类型与 DATE/TIME/TIMESTAMP 的兼容性 43.9.1 日期时间值的字符串表示法 43.9.1.1 日期字符串、时间字符串和日期时间字符串 43.9.2 数据类型之间的转型 43.9.3 指定和比较 43.9.4 日期时间指定 43.9.5 DATE 43.9.6 GRAPHIC 43.9.7 TIME 43.9.8 TIMESTAMP 43.9.9 VARGRAPHIC 43.10 Unicode 数据库的大型索引键 43.10.1 ALTER TABLE 43.10.2 CREATE INDEX 43.10.3 CREATE TABLE 43.11 ALLOCATE CURSOR 语句注释部分不正确 43.12 GET DIAGNOSTICS 语句中的附加选项 GET DIAGNOSTICS 语句 43.13 Subselect 中的 ORDER BY 43.13.1 fullselect 43.13.2 subselect 43.13.3 order-by-clause 43.13.4 select-statement SELECT INTO 语句 43.13.5 OLAP 函数(window-order-clause) GET_ROUTINE_SAR 过程的新输入自变量 SET INTEGRITY 语句所需的权限 附录 N 异常表 Unicode 更新 47.1 介绍 47.1.1 DB2 Unicode 数据库和应用程序 47.1.2 文档更新 连接至主机系统 《DB2 Connect 用户指南》 48.1 提高 DB2 Connect 数据传送速率 48.1.1 额外查询块 48.1.2 RFC-1323 窗口缩放 48.2 松散耦合的事务的 DB2 Connect 支持 48.3 Kerberos 支持 Connectivity Supplement 49.1 在 VM 环境中设置应用程序服务器 49.2 CLI/ODBC/JDBC 配置 PATCH1 和 PATCH2 设置 附加信息 附加信息 50.1 DB2 Everywhere 现在更名为 DB2 Everyplace 50.2 DB2 UDB 版本 7 的易使用性功能部件 50.2.1 键盘输入和导航 50.2.1.1 键盘输入 50.2.1.2 键盘焦点 50.2.2 易用的显示功能部件 50.2.2.1 高对比度方式 50.2.2.2 字体设置 50.2.2.3 与颜色无关 50.2.3 可选警报提示 50.2.4 与辅助性技术的兼容性 50.2.5 可存取文档 50.3 需要鼠标 50.4 试图从“DB2 运行时客户机”进行绑定导致“绑定文件找不到”错误 50.5 Search Discovery 50.6 HP-UX 11 的内存窗口 50.7 卸载 DB2 DFS 客户机使能器 50.8 Windows NT 上的客户机认证 50.9 联合系统限制 50.10 对 MPP 分区表的联合限制 50.11 DataJoiner 的限制 50.12 希伯莱语版的“信息目录管理器 Windows NT 版” 50.13 DB2 的 SNA SPM 在引导 Windows 后无法启动 50.14 Windows NT 和 Windows 2000 上的 DB2 的服务帐户需求 50.15 需要落实将在“数据仓库中心”(DWC)中使用的所有用户定义程序 50.16 在 Windows NT 上进行客户机端高速缓存 50.17 Life Sciences Data Connect 50.17.1 新包装器 50.17.2 声明 — 50.18 SQL 辅助程序的增强功能 50.19 备份与复原命令的帮助 50.20 “仓库管理器”应为“DB2 仓库管理器” 附录及附属资料 附录 A. 声明 A.1 商标 索引 前言 欢迎使用 DB2 通用数据库版本 7 修订包 7! 注意: 当作为文本来查看时,将字体设置为等宽字体可以更好地查看这些《发行说明》。 “DB2 通用数据库和 DB2 Connect 支持”站点会定期更新。有关最新的信息,请参考 http://www.ibm.com/software/data/db2/udb/winos2unix/support。 此文件包含有关下列产品的信息,这些信息在打印 DB2 手册时并未提供: IBM DB2 通用数据库个人版的版本 7.2 IBM DB2 通用数据库工作组版的版本 7.2 IBM DB2 通用数据库企业版的版本 7.2 IBM DB2 Data Links Manager 版本 7.2 IBM DB2 通用数据库扩充企业版的版本 7.2 IBM DB2 Query Patroller 版本 7.2 IBM DB2 个人开发者版的版本 7.2 IBM DB2 通用开发者版的版本 7.2 IBM DB2 数据仓库管理器版本 7.2 IBM DB2 Relational Connect 版本 7.2 IBM DB2 Connect 个人版的版本 7.2 IBM DB2 Connect 企业版的版本 7.2 为下列产品提供了附加的《发行说明》文件(安装为 READCON.TXT): IBM DB2 Connect 个人版的版本 7.2 IBM DB2 Connect 企业版的版本 7.2 可以通过从以下 IBM 软件站点下载来获取有关 DB2 Life Sciences Data Connect 产品的文档:http://www.ibm.com/software/data/db2/lifesciencesdataconnect/library.html。有关此产品的信息,可以通过以下网址联机获得:http://www.ibm.com/software/data/db2/lifesciencesdataconnect。 已对“修订包 4”更新了下列书籍,可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获取最新的 PDF: 《管理指南》 构建 OS/2 和 Windows 应用程序 Application Development Guide 命令参考 《数据恢复和高可用性指南与参考》 数据仓库中心 《管理指南》 《消息参考》 SQL Reference 《DB2 仓库管理器安装指南》 此《发行说明》中的信息是对已更新的参考信息的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 《新增内容》一书包含了版本为 7.2 的某些主要 DB2 增强功能的概述。如果没有《新增内容》一书的 7.2 版,可以从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 来查看和下载它。 有关 DB2 系列产品的最新信息,可通过订阅“DB2 Magazine”免费获得。该杂志的联机版本是在 http://www.db2mag.com 提供的;有关申请订阅的指示信息也发布在此站点上。 注意: 在这些《发行说明》中,在提及 Windows NT 时也包括 Windows 2000。该发行版还在4.6, 对 Windows ME、Windows XP 和 Windows 2000 数据中心版平台的支持中列示的产品的上下文中包含了 Windows XP,除非另行声明。 注意: 页面上某些行的左边有修订条(|),表示自第一次发布《发行说明》之后,已添加了该行或对该行作了修改。 首先阅读 修订包 7 重点内容 已在此“修订包”中添加了下列新信息。此列表并不全面,而是将重点放在主要的文档更改上。一定要查看《发行说明》中与您的工作环境有关的所有小节,以确保您知道所有有关的更新。 2.12, 真实 AIX 卷管理器支持 4.4, AIX CICS 用户的附加安装步骤 4.33, UNIX 上的“Merant 驱动程序管理器”和“DB2 UDB 版本 7 ODBC 驱动程序” 将 Sybase 数据源添加至联合服务器 — 第 7 步 8.2.2, 导出实用程序要求修订包 7 或更新版本正确处理身份属性 8.3.1, 国家或地区代码和代码页支持 10.5.2, 注册表变量 DB2BPVARS 的新参数 12.3, ARCHIVE LOG 使用说明的附加上下文 13.2, 新的归档记录行为 13.3, 如何使用暂挂的 I/O 来进行数据库恢复 13.5, 增量备份与恢复 — 附加信息 14.1, 导出实用程序现在完全支持扩展的身份值 14.2, 导出、导入和装入对 LOB 文件处理的更改 17.5, Chapter 15. Logged Information 22.1, 选择重定向的复原落实来复原数据库 25.1, 对 z/OS 或 OS/390 的 Java 存储过程的支持 25.2, 对 z/OS 或 OS/390 的 SQL 存储过程的支持 25.3, 对 z/OS 或 OS/390 文档的“存储过程构建器”参考更新 25.4, 对设置结果集特性的支持 25.5, 删除 Windows NT 上的 DB2 数据库中的过程 39.2, S/390 和 zSeries 上的 Linux 支持 39.3, Linux Rexx 支持 40.2, 对“调试 Java 存储过程”的更正 41.8.4, SQLGetInfo - Get General Information 43.4, 对“创建表空间容器”子句和“容器”字符串信息的更正 Information 产品说明 2.1 在 DB2 版本 7 Solaris 操作环境版上受支持的 CPU UltraSparc 之前的 CPU 版本不受支持。 2.2 在红旗 Linux 上的中文语言环境修订 如果正在使用“简体中文版红旗 Linux 服务器版本 1.1”,则与开发红旗产品的公司联系以获得简体中文语言环境修订。如果没有版本 1.1 的简体中文语言环境修订,则 DB2 将不能识别简体中文的代码页是 1386。 2.3 日语和简体中文 Linux 环境中 DB2 Linux 版的附加语言环境设置 如果想要在日语或简体中文 Linux 系统上使用 Java GUI 工具(如“控制中心”),则附加语言环境设置是必需的。如果没有此设置的话,就不能正确显示日语或中文字符(汉字)。请将以下设置包括在您的用户概要文件中,或在每次调用“控制中心”之前从命令行运行它。 对于日语系统: export LC_ALL=ja_JP 对于简体中文系统: export LC_ALL=zh_CN 2.4 在 PTX 上对日语的限制 如果您正在 PTX 系统上用日语运行 DB2 UDB,则 DB2 使用的某些进程可能将不会继承正确的语言环境信息。为了避免发生这种情况,将 DB2CODEPAGE 和 DB2COUNTRY 注册表手工设置为与您的语言环境相对应。 2.5 Microsoft Internet Explorer 的“控制中心”问题 有一个问题是由 Internet Explorer(IE)安全性选项设置造成的。“控制中心”使用未签名的 jar,因此,对系统信息的存取被安全性管理器禁用。 要排除此问题,可重新配置 IE 安全性选项,如下所示: 在查看菜单(IE4)或工具菜单(IE5)上选择 Internet 选项。 在“安全性”页上,选择可信站点。 单击添加站点...。 将“控制中心”Web 服务器添加至可信站点列表。如果“控制中心”Web 服务器在同一域中,则只添加该 Web 服务器(而不带域名)会非常有用。例如: http://ccWebServer.ccWebServerDomain http://ccWebServer 注意: 输入 URL 时,必须使用 https:// 前缀,或者取消选择需要该区域中所有站点的服务器证书(https:)选项,以便添加站点。 单击确定。 单击设置...(IE4)或者定制级别...(IE5)。 向下滚动至 Java --> Java 权限并选择定制。 单击 Java 定制设置...。 选择“编辑权限”页面。 向下滚动至“未签名的内容 --> 运行未签名的内容 --> 附加的未签名许可权 --> 系统信息”,并选择启用。 在每个打开的窗口上单击确定。 2.6 控制中心功能丧失 在 DB2 版本 7.2 中, 在修订包 6 之前的版本 6“控制中心”客户机以及在修订包 2 之前的版本 7 客户机在与 DB2 版本 7.2 配合使用时几乎失去了所有功能。为了修正此问题,将版本 6 客户机升级为“修订包 6”或更新版本,而将版本 7 客户机升级为“修订包 2”或更新版本。 通过对 DB2 服务器应用修订包 2,就不会导致低级别的“控制中心”客户机出现问题。 2.7 Netscape CD 未与 DB2 UDB 一起交付 Netscape CD 不再与 DB2 UDB 一起交付。Netscape 产品可以从 http://www.netscape.com 处获得。 2.8 XML 自述文件中的错误 在 DB2 XML Extender 版本 7.1 的 README.TXT 文件的“注意事项”中作了如下描述: 3. DB2 UDB 的缺省版本是 DB2 UDB 版本 7.1。如果想要在 AIX 和 Solaris 系统上使用 DB2 UDB 版本 6.1,则应确保您正在运行的是 DB2 UDB V6.1 实例和 DB2 UDB V6.1 库。 这是不正确的。只有 DB2 版本 7.1 和 7.2 才支持 DB2 XML Extender。 文件 readme.aix、readme.nt 和 readme.sun 列示了下列产品的软件需求: 具有 FP1_U465423 或更高版本的 DB2 UDB 6.1(AIX) 安装了“修订包 3”的 DB2 通用数据库版本 6.1 或更高版本(NT) 具有“修订包 FP1_U465424”或更高版本的 DB2 UDB 版本 6.1(Sun) 这是不正确的。DB2 XML Extender 要求 DB2 版本 7.1 或 7.2。 2.9 DB2 版本 7.2 中新的商业智能增强功能 在《版本 7.2 新增内容》一书和其它某些文档中,引用了已经在版本 7.2 中添加的新的“商业智能”增强功能。以后将提供这些增强功能。 2.10 修订包 2A 和更新版本在 IBM DB2 OLAP 服务器中造成问题 如果在 UNIX 上使用“IBM DB2 OLAP 服务器”,在安装“DB2 通用数据库 V7”的修订包 2A 之后,可能会遇到与“DB2 OLAP 服务器”有关的问题。修订包 2A 以及更新版本的修订包安装支持 UNICODE 的新 ODBC 驱动程序,但“DB2 OLAP 服务器”不支持这些新驱动程序。“DB2 OLAP 服务器”的解决办法是将 ODBC 文件切换为指向非 UNICODE ODBC 驱动程序。 已经将非 UNICODE 驱动程序重命名以在它们的名称中添加“_36”。例如,对于 Solaris 操作环境,将驱动程序 libdb2.so 重命名为 libdb2_36.so。有关更改 ODBC 驱动程序的更多信息,参见《OLAP 设置和用户指南》一书的第 4 章『在 AIX、Solaris 操作环境和 HP-UX 上安装』中的『为 SQL 接口装入和配置 ODBC』。 2.11 使用 WebSphere 3.5.5 时的分段违例 如果在 Linux390 上将 WebSphere 3.5.5 用户概要文件样本与 DB2 V7.2 修订包 4 或更新版本一起运行,则可能会接收到 SIGSEGV 11 (*) 分段违例。此问题与 JDK 中的一个缺陷有关,且在 JDK 1.2.2 和 JDK 1.3 中都会出现。 该问题还可能会影响到其它 JDBC 应用程序。 JDK 1.2.2 的 11 月服务发行版会修正此问题。JDK 1.3 将在 1 月服务发行版中进行修正。 此问题的解决方案是使用下列命令关闭 JIT: export JAVA_COMPILER=NONE 2.12 真实 AIX 卷管理器支持 DB2 UDB 企业版修订包 7 或更新版本可以与 AIX 5.1 ML 2 或更新版本上的“真实 AIX 卷管理器版本 3.2”配合使用。此时不支持将“真实 AIX 卷管理器”与 DB2 UDB 的其它任何版本(包括扩充企业版)配合使用。 2.13 AIX V4 上的 Java 应用程序必需的修订 如果内核文件集 bos.mp 或 bos.up 位于 4.3.3.77,则在 AIX 4.3.3 上运行的 Java 应用程序可能会异常终止。 运行命令 lslpp -l bos.ip bos.mp 以确定内核修订级别。 建议把在 AIX 4.3.3 上运行的所有 Java 客户升级到 4.3.3.78。提供了将把内核更新为建议级别的修订。将需要获取对“已授权的问题分析报告”(APAR)IY25282 的修订。 通过安装 IY25282 的修订,将更正 Java 终止条件。在 2002 年第一季度将使用 APAR 号 IY26149 来发布进一步的修订。 注意,随 IY25377 一起交付的 AIX 5.1C 中包含了相同的修订。 有关更进一步的信息和建议,请与“AIX 支持机构”联系。 联机文档(HTML、PDF 和搜索)注释 3.1 Windows 2000 操作系统上受支持的 Web 浏览器 我们建议您在 Windows 2000 上使用 Microsoft Internet Explorer。 如果使用的是 Netscape,请注意以下几点: 在 Windows 2000 上使用 Netscape,DB2 联机信息搜索可能会花很长时间才能完成。Netscape 将使用所有可用的 CPU 资源,且可能会运行不稳定。在等待搜索结果最终返回时,我们建议您在提交搜索后,单击另一窗口,更改鼠标焦点。搜索结果会在一段合理的时间范围内返回。 您可能注意到,在请求帮助时,它会正确显示在 Netscape 浏览器窗口中,但如果您让浏览器窗口保持打开状态,并在稍后从“控制中心”的另一部分请求帮助,则浏览器中的内容不会更改。如果关闭该浏览器窗口并再次请求帮助,这次会出现正确的帮助信息。通过遵循3.4, 试图启动 Netscape 时的错误消息中的步骤,可能可以修正该问题。通过在请求“控制中心”的其它帮助前,关闭该浏览器窗口,也可解决该问题。 在请求“控制中心”的帮助或“信息中心”的主题时,可能会看到错误消息。要修正该问题,应遵循3.4, 试图启动 Netscape 时的错误消息中的步骤。 3.2 在 Solaris 操作环境上搜索 DB2 联机信息 如果在 Solaris 操作环境上搜索 DB2 联机信息时产生任何问题,则应检查 /etc/system 中的系统内核参数。以下是 DB2 搜索系统 NetQuestion 所需的最小内核参数: semsys:seminfo_semmni 256 semsys:seminfo_semmap 258 semsys:seminfo_semmns 512 semsys:seminfo_semmnu 512 semsys:seminfo_semmsl 50 shmsys:shminfo_shmmax 6291456 shmsys:shminfo_shmseg 16 shmsys:shminfo_shmmni 300 要设置内核参数,在 /etc/system 末尾添加一行,如下所示: set = value 必须重新引导系统以使所有新的或更改过的值生效。 3.3 切换“NetQuestion OS/2 版”以使用 TCP/IP 有关将 NetQuestion 切换为在 OS/2 系统上使用 TCP/IP 的指示信息是不完整的。这些指示信息中所提及的 *.cfg 文件的位置是 NetQuestion 安装目录的数据子目录。您可通过输入下列其中一个命令来确定 NetQuestion 安装目录: echo %IMNINSTSRV% //对于 SBCS 安装 echo %IMQINSTSRV% //对于 DBCS 安装 3.4 试图启动 Netscape 时的错误消息 如果在试图启动 Netscape 时遇到以下错误消息: 找不到文件 <文件路径>(或其组件之一)。 进行检查以确保路径和文件名正确,且所有必需的库可用。 无法打开“D:\Program Files\SQLLIB\CC\..\doc\html\db2help\XXXXX.htm” 应遵循以下步骤,在 Windows NT、95 或 98 上更正此问题(有关应在 Windows 2000 上采取的措施,参见以下内容): 从“开始”菜单中,选择“程序”-->“Windows 资源管理器”。“Windows 资源管理器”打开。 在“Windows 资源管理器”中,选择“查看”-->“选项”。“选项笔记本”打开。 单击文件类型选项卡。“文件类型”页打开。 在已注册的文件类型字段中突出显示 Netscape Hypertext Document,然后单击编辑。“编辑文件类型”窗口打开。 在操作字段中突出显示“Open”。 单击编辑按钮。“编辑这种类型的操作”窗口打开。 取消对使用 DDE 复选框的选择。 在用来执行操作的应用程序字段中,确保 "%1" 出现在字符串(包括引号,且在第一个引号之前有一个空格)的最末尾。 如果在 Windows 2000 上遇到该错误消息,应遵循以下步骤: 从开始菜单中,选择 Windows 资源管理器。“Windows 资源管理器”打开。 在“Windows 资源管理器”中,选择工具 --> 文件夹选项。“文件夹选项笔记本”打开。 单击文件类型选项卡。 在“文件类型”页,已注册的文件类型字段中,突出显示:HTM Netscape Hypertext Document 然后单击高级。“编辑文件类型”窗口打开。 在操作字段中突出显示“open”。 单击编辑按钮。“编辑这种类型的操作”窗口打开。 取消对使用 DDE 复选框的选择。 在用来执行操作的应用程序字段中,确保 "%1" 出现在字符串(包括引号,且在第一个引号之前有一个空格)的最末尾。 单击确定。 对 HTML Netscape Hypertext Document 和 SHTML Netscape Hypertext Document 文件类型重复第 4 步至第 8 步。 3.5 基于 UNIX 的系统上 Adobe Acrobat Reader 的配置需求 在基于 UNIX 的平台上只提供了 Acrobat Reader 的英语版本,所以在试图打开非英语版本的其它语言环境的 PDF 文件时可能会返回错误。这些错误指示 PDF 文件存在字体存取或抽取问题,但实际上是因为英语版 Acrobat Reader 不能在 UNIX 非英语语言环境中正确工作。 要查看这样的 PDF 文件,可通过在启动英语版 Acrobat Reader 之前执行下列其中一个步骤,切换至英语语言环境: 通过在启动脚本文件中的 #!/bin/sh 语句后面添加以下行,编辑 Acrobat Reader 的启动脚本: LANG=C;export LANG 此方法将确保 Acrobat Reader 被其它应用程序(如 Netscape Navigator)或应用程序帮助菜单启动时能正确运行。 在命令提示处输入 LANG=C,以将 Acrobat Reader 的应用程序环境设置为英语。 要获取进一步的信息,请与 Adobe Systems(http://www.Adobe.com)联系。 3.6 SQL Reference 是在一个 PDF 文件中提供的 每本书中的『使用 DB2 资料库』附录都指示,提供了 PDF 格式的 SQL Reference(分为单独的两卷)。这是不正确的。 尽管打印书籍以两卷的形式出现,且相应的两个书号是正确的,但是仅有一个 PDF 文件,它包含有两卷。该 PDF 文件名为 db2s0x70。 安装与配置 部分目录 安装、迁移和配置的一般信息 4.1 下载所有受支持 DB2 客户机的安装程序包 4.2 其它必需的 Solaris 操作环境补丁程序级别 4.3 在 AIX 上安装“DB2 扩充企业版” 4.4 AIX CICS 用户的附加安装步骤 4.5 Netscape LDAP 目录支持 4.5.1 扩展 Netscape LDAP 模式 4.6 对 Windows ME、Windows XP 和 Windows 2000 数据中心版平台的支持 4.6.1 Windows XP 4.6.1.1 限制 4.6.2 Windows ME 4.6.2.1 限制 4.6.3 Windows 2000 数据中心服务器 4.7 在 Windows 95 上安装 DB2 4.8 在 Windows 2000 上安装 DB2 4.9 在“Windows 2000 终端服务器的管理方式”下运行 DB2 4.10 Microsoft SNA Server 和 SNA 多站点更新(两阶段落实)支持 4.11 在“IBM 通信服务器 Windows NT 版”(CS/NT)中定义用户标识和密码 4.11.1 节点定义 4.12 如果未连接可更换驱动器的话,DB2 安装可能会挂起 4.13 在 Windows 2000 上使用 CLP 时发生错误 SQL1035N 4.14 有关使用专用寄存器定义的视图的迁移问题 4.15 Windows 2000 上的 IPX/SPX 协议支持 4.16 在升级 DB2 的先前版本前,停止 DB2 进程 4.17 在安装 DB2 之后运行 db2iupdt(如果已经安装了另一 DB2 产品的话) 4.18 设置要运行 DB2 控制中心的 Linux 环境 4.19 S/390 上的 DB2 通用数据库企业版和 DB2 Connect 企业版的 Linux 版 4.20 在 Linux S/390 版上可能出现的数据损失 4.21 在 Linux 上对 DB2 的 Gnome 和 KDE 桌面集成 4.22 Solaris 内核配置参数(建议值) 4.23 DB2 通用数据库扩充企业版 UNIX 版快速入门 4.24 HP-UX 的 shmseg 内核参数 4.25 迁移 IBM Visual Warehouse 控制数据库 4.26 使用 db2uiddl 命令来迁移唯一索引 4.27 64 位 AIX 版本安装错误 4.27.1 使用 SMIT 4.28 迁移期间的错误 4.29 IBM(R) DB2(R) Connect 许可证激活 4.29.1 使用许可证中心安装许可证密钥和设置许可证类型 4.29.2 使用 db2licm 命令来安装许可证密钥和设置许可证类型 4.29.3 分布式安装的许可证注意事项 4.30 存取仓库控制数据库 4.31 企业版 UNIX CD-ROM 上的试用产品 4.32 DB2 Connect 企业版 UNIX CD-ROM 上的试用产品 4.33 UNIX 上的“Merant 驱动程序管理器”和“DB2 UDB 版本 7 ODBC 驱动程序” 4.34 在为 Web 安装“信息目录中心”之前所需要的附加配置 4.35 代码页和语言支持信息 — 更正 《DB2 Data Links Manager 快速入门》 5.1 AIX 5.1 上的支持 5.2 Dlfm 启动失败,出现“获取前缀的 afsfid 时出错”这一消息 5.3 对压缩文档设置 Tivoli Storage Manager 类 5.4 DFS 客户机使能器的磁盘空间需求 5.5 在 AIX 上监视 Data Links File Manager 后端进程 5.6 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 环境中的其它安装注意事项 5.7 “dlfm add_prefix”命令失败 5.8 偶尔出现“复制守护程序”在 dlfm 停止时不能停止的情况 5.9 安装和配置 DB2 Data Links Manager AIX 版:使用 db2setup 实用程序在 AIX 上安装 DB2 Data Links Manager 5.10 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 后安装任务 5.11 安装和配置 DB2 Data Links Manager AIX 版:使用 Smit 手工安装 DB2 Data Links Manager 5.12 安装和配置 DB2 Data Links DFS 客户机使能器 5.13 安装和配置 DB2 Data Links Manager Solaris 操作系统版 5.14 Windows NT 上的 Data Links 中的管理员组特权 5.15 最小化 Data Links File System Filter(DLFF)安装的记录 5.15.1 安装后记录消息 5.15.2 最小化对 Sun Solaris 系统的记录 5.16 DATALINK 复原 5.17 删除 Data Links Manager 5.18 使用 SMIT 卸载 DLFM 组件时可能会除去附加文件集 5.19 开始之前/确定主机名之前 5.20 使用“DB2 Data Links 文件管理器”:在从 DB2 数据库中删除 DB2 Data Links Manager 之后进行清理 5.21 dlfm Client_conf 故障时的用户操作 5.22 DLFM1001E(新的错误消息) 5.23 DLFM 设置配置文件选项 5.24 复原文件时的潜在问题 5.25 当在 AIX 上运行 Data Links/DFS 脚本 dmapp_prestart 时出错 5.26 Tivoli Space Manager 与 Data Links 集成 5.26.1 约束与限制 5.27 第 4 章 安装和配置 DB2 Data Links Manager AIX 版 5.27.1 常见的安装注意事项 5.27.1.1 从 DB2 File Manager 版本 5.2 迁移至 DB2 Data Links Manager 版本 7 5.28 第 6 章 验证 AIX 上的安装 5.28.1 NFS 环境中的解决方法 《安装和配置补遗》 6.1 第 5 章 在 UNIX 操作系统上安装 DB2 客户机 6.1.1 HP-UX 内核配置参数 6.2 第 12 章 运行您自己的应用程序 6.2.1 使用运行时客户机绑定数据库实用程序 6.2.2 使用 ODBC 对 DB2 的 UNIX 客户机存取 6.3 第 24 章 设置联合系统以存取多个数据源 6.3.1 联合系统 6.3.2 限制 6.3.3 安装 DB2 Relational Connect 6.3.3.1 在 Windows NT 服务器上安装 DB2 Relational Connect 6.3.3.2 在 UNIX 服务器上安装 DB2 Relational Connect 6.3.4 第 24 章 设置联合系统以存取多个数据源 6.3.4.1 了解与别名配合使用的模式 6.3.4.2 将联合数据库复原到不同的联合服务器上时的问题 6.4 第 26 章 存取 Oracle 数据源 6.4.1 文档错误 6.5 避免在使用远程 LOB 时发生问题 6.6 存取 Sybase 数据源 6.6.1 将 Sybase 数据源添加至联合服务器 6.6.1.1 第 1 步:设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris) 6.6.1.2 第 2 步:将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris 操作环境) 6.6.1.3 第 3 步:回收 DB2 实例(仅 AIX 和 Solaris 操作环境) 6.6.1.4 第 4 步:创建并设置接口文件 6.6.1.5 第 5 步:创建包装器 6.6.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 6.6.1.7 第 7 步:创建服务器 6.6.1.8 第 8 步:可选:设置 CONNECTSTRING 服务器选项 6.6.1.9 第 9 步:创建用户映射 6.6.1.10 第 10 步:为表和视图创建别名 6.6.2 指定 Sybase 代码页 6.7 使用 ODBC 来存取 Microsoft SQL Server 数据源(新章节) 6.7.1 将 Microsoft SQL Server 数据源添加至联合服务器 6.7.1.1 第 1 步:设置环境变量(仅 AIX) 6.7.1.2 第 2 步:运行 shell 脚本(仅 AIX) 6.7.1.3 第 3 步:可选:设置 DB2_DJ_COMM 环境变量(仅 AIX) 6.7.1.4 第 4 步:回收 DB2 实例(仅 AIX) 6.7.1.5 第 5 步:创建包装器 6.7.1.6 第 6 步:创建服务器 6.7.1.7 第 7 步:创建用户映射 6.7.1.8 第 8 步:为表和视图创建别名 6.7.1.9 第 9 步:可选:获取 ODBC 跟踪 6.7.2 复查 Microsoft SQL Server 代码页(仅用于 Windows NT) 6.8 存取 Informix 数据源(新章节) 6.8.1 将 Informix 数据源添加至联合服务器 6.8.1.1 第 1 步:设置环境变量并更新概要文件注册表 6.8.1.2 第 2 步:将 DB2 链接至 Informix 客户机软件 6.8.1.3 第 3 步:回收 DB2 实例 6.8.1.4 第 4 步:创建 Informix sqlhosts 文件 6.8.1.5 第 5 步:创建包装器 6.8.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 6.8.1.7 第 7 步:创建服务器 6.8.1.8 第 8 步:创建用户映射 6.8.1.9 第 9 步:为表、视图和 Informix 同义词创建别名 安装、迁移和配置的一般信息 4.1 下载所有受支持 DB2 客户机的安装程序包 要下载所有受支持 DB2 客户机(包括版本 7 之前的所有客户机)的安装程序包,连接至 IBM DB2 FixPaks and Clients Pack Web 站点,网址为 http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/download.d2w/report。 4.2 其它必需的 Solaris 操作环境补丁程序级别 除《DB2 UNIX 版快速入门》手册中列示的补丁程序外,“DB2 通用数据库版本 7 Solaris 操作环境版的版本 2.6”还需要补丁程序 106285-02 或更高版本。 4.3 在 AIX 上安装“DB2 扩充企业版” 在《DB2 扩充企业版的 UNIX 版快速入门》手册的“执行安装”一节的“步骤 4”中指出了,应该通过输入以下命令来分配 CD-ROM 文件系统: crfs -v cdrfs -p ro -d cd0 要成功完成此命令,还必须使用 --m 命令来指定安装点。 crfs -v cdrfs -p ro -d cd0 -m /cdrom “执行安装”一节中还缺少了一个步骤。在“步骤 5”之后,在控制工作站上安装 CD-ROM 文件系统,将参与分区数据库系统的每个节点都应该远程安装 CD-ROM 文件系统。假定参与的节点上尚不存在 /cdrom,则使用下列命令来导出 /cdrom 文件系统,并将它远程安装在控制工作台上: exportfs -i -o ro /cdrom dsh mkdir /cdrom dsh mount cws_hostname: /cdrom /cdrom 其中,cws_hostname 是控制工作站的主机名。 4.4 AIX CICS 用户的附加安装步骤 如果您正在 AIX CICS 系统上安装 DB2 UDB 或任何 DB2 UDB 修订包,则在安装之后必须执行下列附加步骤。在 CICS/6000 Administration Guide 的 "Configurarion steps for Database 2" 一节中详细描述了这些步骤: 从 libdb2.a 库中创建“DB2 UDB AIX 版”共享对象。 构建 DB2 switchload 文件,并将它放置在由数据库的 XA 定义指定的目录中。 如果正在您的环境中使用 COBOL,则重新运行 cocsmkcobol 工具。 4.5 Netscape LDAP 目录支持 DB2 支持使用 LDAP 目录来进行中央管理,并将数据库目录和节点目录进行合并。在 DB2 的先前发行版中,只支持“Microsoft 活动目录”和“IBM SecureWay 目录”。DB2 现在还支持下列 LDAP 服务器: Netscape 目录服务器 v4.12 或更新版本、iPlanet(TM) 目录服务器 5.0 或更新版本 4.5.1 扩展 Netscape LDAP 模式 下列指示信息是针对“Netscape 目录服务器 4.1”的: “Netscape 目录服务器”允许应用程序通过将属性和对象类定义添加至下列两个文件来扩展模式: slapd.user_oc.conf 和 slapd.user_at.conf。这两个文件位于 \slapd-\config 目录中。 必须将 DB2 属性添加到 slapd.user_at.conf 中,如下所示: 注意: 在此上下文中,bin、cis、ces 和 dn 分别代表二进制、不区分大小写的字符串、区分大小写的字符串和专有名称。 : ############################################################################ # # IBM DB2 Universal Database V7.2 # Attribute Definitions # ############################################################################ attribute binProperty 1.3.18.0.2.4.305 bin attribute binPropertyType 1.3.18.0.2.4.306 cis attribute cesProperty 1.3.18.0.2.4.307 ces attribute cesPropertyType 1.3.18.0.2.4.308 cis attribute cisProperty 1.3.18.0.2.4.309 cis attribute cisPropertyType 1.3.18.0.2.4.310 cis attribute propertyType 1.3.18.0.2.4.320 cis attribute systemName 1.3.18.0.2.4.329 cis attribute db2nodeName 1.3.18.0.2.4.419 cis attribute db2nodeAlias 1.3.18.0.2.4.420 cis attribute db2instanceName 1.3.18.0.2.4.428 cis attribute db2Type 1.3.18.0.2.4.418 cis attribute db2databaseName 1.3.18.0.2.4.421 cis attribute db2databaseAlias 1.3.18.0.2.4.422 cis attribute db2nodePtr 1.3.18.0.2.4.423 dn attribute db2gwPtr 1.3.18.0.2.4.424 dn attribute db2additionalParameters 1.3.18.0.2.4.426 cis attribute db2ARLibrary 1.3.18.0.2.4.427 cis attribute db2authenticationLocation 1.3.18.0.2.4.425 cis attribute db2databaseRelease 1.3.18.0.2.4.429 cis attribute DCEPrincipalName 1.3.18.0.2.4.443 cis 必须将 DB2 对象类添加到 slapd.user_oc.conf 文件中,如下所示: ############################################################################ # # IBM DB2 Universal Database V7.2 # Object Class Definitions # ############################################################################ objectclass eProperty oid 1.3.18.0.2.6.90 requires objectClass allows cn, propertyType, binProperty, binPropertyType, cesProperty, cesPropertyType, cisProperty, cisPropertyType objectclass eApplicationSystem oid 1.3.18.0.2.6.8 requires objectClass, systemName objectclass DB2Node oid 1.3.18.0.2.6.116 requires objectClass, db2nodeName allows db2nodeAlias, host, db2instanceName, db2Type, description, protocolInformation objectclass DB2Database oid 1.3.18.0.2.6.117 requires objectClass, db2databaseName, db2nodePtr allows db2databaseAlias, description, db2gwPtr, db2additionalParameters, db2authenticationLocation, DCEPrincipalName, db2databaseRelease, db2ARLibrary 添加 DB2 模式定义之后,必须重新启动“目录服务器”,才能使所有更改生效。 4.6 对 Windows ME、Windows XP 和 Windows 2000 数据中心版平台的支持 DB2 现在支持 Microsoft Windows ME、Windows XP 和“Windows 2000 数据中心版”平台。以下是附加的特定于平台的信息。 4.6.1 Windows XP 在与“修订包 4”或更新版本一起安装时,下列产品和版本支持 32 位 Windows XP: IBM DB2 UDB 个人版的版本 7.2 IBM DB2 个人开发者版的版本 7.2 IBM DB2 通用开发者版的版本 7.2 IBM DB2 Connect 个人版的版本 7.2 IBM DB2 Connect 企业版的版本 7.2 IBM DB2 UDB 工作组版的版本 7.2 IBM DB2 UDB 企业版的版本 7.2 IBM DB2 运行时客户机版本 7.2 IBM DB2 管理客户机版本 7.2 IBM DB2 应用程序开发客户机版本 7.2 DB2 支持在 Windows XP 系统上使用与在其它版本上使用的相同本地语言。 4.6.1.1 限制 在安装期间输入用户标识和密码时,可能会接收到一条消息,说明在安装屏面上输入的用户帐户无效,即使它是有效的。只有在机器上存在用户标识才会发生这种情况。如果输入还不存在的用户名,则不会有此问题。 如果选择使用 db2admin 之外的任何用户帐户安装 DB2,则必须确保该帐户名称符合 DB2 命名规则。最重要的一点是,该名称一定不能包含任何空格。例如,my_name 是可接受的,但 my name 是无法接受的。 如果在产品安装期间接收到错误 1052,则执行下列操作: 让错误窗口保持打开。 打开命令窗口。 运行命令 db2start.exe。 运行在错误窗口中指定的命令,使用对显示在命令行上的用户指定的密码。 返回到错误窗口,并单击确定。安装将继续进行。 如果在使用简体中文并发现“控制中心”中的字体显示得不正确,则修改 sqllib\java\java12\jdk\jre\lib\font.properties.zh,方法是将条目 filename.\u5b8b\u4f53=simsun.ttf 替换为 filename.\u5b8b\u4f53=simsun.ttc。 4.6.2 Windows ME 在与“修订包 2”或更新版本一起安装时,下列产品和版本支持 Windows ME: IBM DB2 UDB 个人版的版本 7.1 IBM DB2 个人开发者版的版本 7.1 IBM DB2 通用开发者版的版本 7.1 IBM DB2 Connect 个人版的版本 7.1 IBM DB2 运行时客户机版本 7.1 IBM DB2 管理客户机版本 7.1 IBM DB2 应用程序开发客户机版本 7.1 4.6.2.1 限制 此时,HTML Search Server 功能在 Window ME 上不受支持 在卸载 DB2 时,可能会接收到一条错误消息,指示找不到文件 MFC42U.DLL。要完全卸载 DB2,在卸载活动完成后手工删除 sqllib 目录。 4.6.3 Windows 2000 数据中心服务器 对于“Windows 2000 数据中心服务器”、“Windows 2000 高级服务器”和“Windows 2000 服务器”,下列 DB2 产品已已经过认证: IBM DB2 通用数据库扩充企业版的版本 7.2 IBM DB2 通用数据库企业版 7.2 IBM DB2 数据库工作组版的版本 7.2 IBM DB2 Connect 企业版的版本 7.2 4.7 在 Windows 95 上安装 DB2 如果您正在非英语版的 Windows 95 系统上安装 DB2,则在安装 DB2 UDB 之前,需要手工将 Winsock 的版本更新为 Winsock 2。Winsock 2 升级实用程序是由 Microsoft 提供的。 4.8 在 Windows 2000 上安装 DB2 在 Windows 2000 上,如果是在先前版本的 DB2 上进行安装或是重新安装当前版本,则要确保所有 DB2 服务的恢复选项都被设置为“不采取任何操作”。 4.9 在“Windows 2000 终端服务器的管理方式”下运行 DB2 对于 DB2 UDB 版本 7.1 修订包 3 和更新版本,DB2 可以在“Windows 2000 终端服务器的管理方式”下运行。在此之前,DB2 只支持“Windows 2000 终端服务器”的“应用程序服务器”方式。 4.10 Microsoft SNA Server 和 SNA 多站点更新(两阶段落实)支持 如果 Microsoft SNA Server 是正在使用的 SNA 产品,则主机和 AS/400 应用程序不能使用 SNA 两阶段落实来访问 DB2 UDB 服务器。指示这是受支持的所有 DB2 UDB 出版物都是不正确的。需要 IBM 通信服务器 Windows NT 版的版本 5.02 或更高版本。 注意: 使用 DB2 UDB Windows 版访问主机和 AS/400 数据库服务器的应用程序可使用 SNA 两阶段落实(通过使用“Microsoft SNA Server 版本 4 服务包 3”或更高版本)。 4.11 在“IBM 通信服务器 Windows NT 版”(CS/NT)中定义用户标识和密码 如果将 APPC 用作远程 DB2 客户机的通信协议以连接至 DB2 服务器,且将 CS/NT 用作 SNA 产品,则应确保在 CS/NT 配置文件中正确设置了下列关键字。此文件通常可在 x:\ibmcs\private 目录中找到。 4.11.1 节点定义 TG_SECURITY_BEHAVIOR 此参数允许用户确定节点处理 ATTACH 中存在的安全性信息的方式(若未为安全性配置 TP 的话) IGNORE_IF_NOT_DEFINED 此参数允许用户确定 ATTACH 中是否存在安全性参数,且若未为安全性配置 TP,则忽略这些参数。 如果使用 IGNORE_IF_NOT_DEFINED,则您不必在 CS/NT 中定义用户标识和密码。 VERIFY_EVEN_IF_NOT_DEFINED 此参数允许用户确定 ATTACH 中是否存在安全性参数并验证它们,即使并配置 TP 以确保安全性。这是缺省值。 如果使用 VERIFY_EVEN_IF_NOT_DEFINED,则必须在 CS/NT 中定义用户标识和密码。 要定义 CS/NT 用户标识和密码,执行下列步骤: 开始 --> 程序 --> IBM 通信服务器 --> SNA 节点配置。“欢迎使用通信服务器配置”窗口打开。 选择想要修改的配置文件。单击下一步。“选择配置方案”窗口打开。 突出显示 CPI-C、APPC 或 5250 模拟。单击完成。“通信服务器 SNA 节点”窗口打开。 单击 CPI-C 和 APPC 旁的 [+]。 单击“LU6.2 安全性”旁的 [+]。 右键单击“用户密码”并选择创建。“定义用户标识和密码”窗口打开。 填充用户标识和密码。单击确定。单击完成以接受更改。 4.12 如果未连接可更换驱动器的话,DB2 安装可能会挂起 在 DB2 安装期间,如果计算机的可更换驱动器未连接,则安装可能会在选择安装类型之后挂起。要解决此问题,应运行安装程序,并指定 -a 选项: setup.exe -a 4.13 在 Windows 2000 上使用 CLP 时发生错误 SQL1035N 如果 DB2 被安装到只有某些用户(例如,管理员)才具有写存取权的目录中,则当常规用户试图使用 DB2“命令行处理器”时可能会接收到错误 SQL1035N。 要解决此问题,应将 DB2 安装到一个所有用户都具有写存取权的目录中。 4.14 有关使用专用寄存器定义的视图的迁移问题 如果专用寄存器 USER 或 CURRENT SCHEMA 用来定义视图列的话,则视图将在数据库迁移之后变得不可用。例如: create view v1 (c1) as values user 在版本 5 中,USER 和 CURRENT SCHEMA 为数据类型 CHAR(8),但自版本 6 开始,它们已被定义为 VARCHAR(128)。在此示例中,如果视图是在版本 5 中创建的,则列 c1 的数据类型为 CHAR,且在数据库迁移之后它仍为 CHAR。如果是在迁移之后使用该视图,它将在运行时进行编译,但会失败,原因是数据类型不匹配。 解决方案是删除该视图,然后重新创建它。在删除该视图之前,通过查询 SYSCAT.VIEWS 目录视图来捕获用来创建该视图的语法。例如: select text from syscat.views where viewname='<>' 4.15 Windows 2000 上的 IPX/SPX 协议支持 此信息是指《快速入门》中的『安装规划』一章中称为『可能的客户机与服务器之间的连接方案』的一节。 所发布的协议支持图表不完全正确。不支持使用 IPX/SPX 与任何基于 OS/2 或 UNIX 的服务器连接的 Windows 2000 客户机。使用 IPX/SPX 与 Windows 2000 服务器连接的任何基于 OS/2 或 UNIX 的客户机也不受支持。 4.16 在升级 DB2 的先前版本前,停止 DB2 进程 此信息是指《DB2 Windows 版快速入门》一书中的迁移信息。 如果正在升级运行于 Windows 机器上的先前版本的 DB2,则安装程序会提供一个警告,该警告包含将 DB2 DLL 保存在内存中的进程的列表。此时,可选择手工停止出现在该列表中的进程,或可让安装程序自动关闭这些进程。建议您在进行安装之前手工停止所有的 DB2 进程,以避免数据丢失。确保 DB2 进程未在运行的最好方法是通过“Windows 服务”屏面查看系统的进程。在“Windows 服务”屏面中,确保没有任何 DB2 服务、OLAP 服务或“数据仓库中心服务”在运行。 注意: 一次仅可有一个版本的 DB2 运行于 Windows 平台上。例如,不能让 DB2 版本 7 和 DB2 版本 6 运行于同一 Windows 机器上。如果在安装有 DB2 版本 6 的机器上安装 DB2 版本 7,安装程序将在安装期间删除 DB2 版本 6。参考适当的《快速入门》手册以了解有关从先前版本的 DB2 进行迁移的更多信息。 4.17 在安装 DB2 之后运行 db2iupdt(如果已经安装了另一 DB2 产品的话) 在《快速入门》安装文档中已经提供了以下信息。 如果在基于 UNIX 的系统上安装 DB2 UDB 版本 7,而先前已经安装了一个 DB2 产品,您将需要运行 db2iupdt 命令以更新您打算将其与本产品的新功能部件配合使用的那些实例。在运行此命令之前,某些功能部件将不可用。 4.18 设置要运行 DB2 控制中心的 Linux 环境 此信息应该包括在《快速入门》中的『安装 DB2 控制中心』一章中。 在脱离 Linux 上的 DB2 安装程序并返回至终端窗口之后,输入下列命令以设置运行“DB2 控制中心”的正确环境: su -l export JAVA_HOME=/usr/jdk118 export DISPLAY=:0 然后,打开另一终端窗口,并输入: su root xhost + 关闭该终端窗口并返回至您以实例所有者标识登录的终端,并输入以下命令: db2cc 来启动“控制中心”。 4.19 S/390 上的 DB2 通用数据库企业版和 DB2 Connect 企业版的 Linux 版 现在,“DB2 通用数据库企业版”和“DB2 Connect 企业版”可供 S/390 上的 Linux 使用。在 S/390 机器上安装 Linux 之前,应了解软件和硬件需求: 硬件 S/390 9672 Generation 5 或更高版本 Multiprise 3000。 软件 SuSE Linux v7.0 S/390 版或者 Turbolinux Server 6 zSeries 版和 S/390 版 内核级别 2.2.16,带有用于 S/390 的补丁程序(如下所示) glibc 2.1.3 libstdc++ 6.1 下列补丁程序是 S/390 上的 Linux 所需的: 此时不需要任何补丁程序。 要获取最新的更新信息,可访问 Web 站点 http://www.software.ibm.com/data/db2/linux。 记录: 仅 32 位基于 Intel 的 Linux 和 S/390 上的 Linux 才是受支持的。 在“DB2 版本 7”中,下列各项在 Linux/390 上不可用: DB2 UDB 扩充企业版 DB2 Extender DB2 Data Links Manager DB2 管理客户机 更改密码支持 LDAP 支持 TSM 使用原始设备 4.20 在 Linux S/390 版上可能出现的数据损失 当在具有 2.2 系列内核的 Linux S/390 版上使用 DB2 时,应该将 Linux 机器上可用的 RAM 量限制为小于 1 GB。将 RAM 限制为 1 GB 将避免因 Linux 内核故障而导致 DB2 中可能的数据损失。 这只会影响 Linux S/390 版上的 DB2,而不会影响 Intel 上的 Linux。 在 IBM developerworks 站点提供了内核补丁程序,安装它之后就可以使用超过 1 GB 的 RAM。 4.21 在 Linux 上对 DB2 的 Gnome 和 KDE 桌面集成 DB2 现在包括一组实用程序,可以用来创建 DB2 桌面文件夹和图标,以便在 Gnome 和 KDE 桌面上启动最常用的 DB2 工具,从而进行受支持的基于 Intel 的 Linux 分发。缺省情况下,这些实用程序是由 DB2 版本 7.2 安装的,并且在安装之后可用来为一个或多个所选用户创建和除去桌面图标。 要为一个或多个用户添加一组桌面图标,使用以下命令: db2icons [ ...] 注意: 如果图标是在 Gnome 或 KDE 桌面环境正在运行时生成的,则用户可能需要强制手工刷新桌面才能查看新图标。 要为一个或多个用户除去一组桌面图标,使用以下命令: db2rmicons [ ...] 注意: 您必须具有足够的权限才能为其它用户生成或除去图标。通常,如果您是普通用户,则只能使用 db2icons 和 db2rmicons 来为您自己创建或除去图标,仅当您是 root 用户或者是有权写入指定用户的主目录的另一用户,您才能为其它用户创建或除去图标。 4.22 Solaris 内核配置参数(建议值) 在《DB2 UNIX 版快速入门》和《DB2 扩充企业版快速入门 UNIX 版》的『Solaris 系统』一章中的『开始之前』一节中提供了建议的 Solaris 内核配置参数。下表为实际内存超过 512 MB 的系统提供了附加内核配置参数建议值。 表 1. Solaris 内核配置参数(建议值) 内核参数 512 MB 至 1 GB 1 GB 至 4 GB 4 GB+ msgsys:msginfo_msgmax 65,535 65,535 65,535 msgsys:msginfo_msgmnb 65,535 65,535 65,535 msgsys:msginfo_msgmap 514 1,026 2,050 msgsys:msginfo_msgmni 512 1,024 2,048 msgsys:msginfo_msgssz 16 32 64 msgsys:msginfo_msgtql 1,024 2,048 4,096 msgsys:msginfo_msgseg 32,767 32,767 32,767 shmsys:shminfo_shmmax 483,183,820 至 966,367,641 966,367,641 至 3,865,470,566 3,865,470,566 至 4,294,967,296 shmsys:shminfo_shmseg 50 100 200 shmsys:shminfo_shmmni 300 1,024 2,048 semsys:seminfo_semmni 1,024 2,048 4,198 semsys:seminfo_semmap 1,026 2,050 4,096 semsys:seminfo_semmns 2,048 4,096 8,192 semsys:seminfo_semmnu 2,048 4,096 8,192 semsys:seminfo_semume 50 50 50 记录: 对于 32 位系统,shmsys:shminfo_shmmax 参数的最大值为 4 GB。 msgsys:msginfo_msgmnb 和 msgsys:msginfo_msgmax 参数必须设置为 65,535 或更大。 msgsys:msginfo_msgseg 参数一定不能设置得高于 32,767。 shmsys:shminfo_shmmax 参数应设置为上表中的建议值,或为物理内存的 90%(以字节计),这通常比较高。例如,系统中的物理内存为 196 MB,则将 shmsys:shminfo_shmmax 参数设置为 184,968,806(196*1024*1024*0.9)。 4.23 DB2 通用数据库扩充企业版 UNIX 版快速入门 『第 5 章 在 Linux 上安装和配置 DB2 通用数据库』应该指出,Linux EEE 群集中的每个物理节点都必须具有相同的内核、glibc 和 libstdc++ 级别。 可以从以下 Web 站点来下载“DB2 EEE Linux 版”的试用版: http://www6.software.ibm.com/dl/db2udbdl/db2udbdl-p 4.24 HP-UX 的 shmseg 内核参数 《快速入门》一书中提供的关于更新 HP-UX 内核配置参数的信息是不正确的。应该忽略 HP-UX 的 shmseg 内核参数的建议值。 而应该使用缺省的 HP-UX 值(120)。 4.25 迁移 IBM Visual Warehouse 控制数据库 《DB2 通用数据库快速入门 Windows 版》提供了有关在 Windows NT 和 Windows 2000 上进行“DB2 通用数据库版本 7”的典型安装期间如何迁移活动的仓库控制数据库的信息。如果要迁移多个仓库控制数据库,必须使用“仓库控制数据库管理”窗口来迁移其它数据库。一次只能有一个仓库控制数据库是活动的。如果迁移的上一个数据库并非您打算在下一次登录到“数据仓库中心”时使用的数据库,则必须使用“仓库控制数据库管理”窗口来注册您打算使用的数据库。 4.26 使用 db2uiddl 命令来迁移唯一索引 在《DB2 快速入门》手册的『DB2 后安装迁移任务』一章中的『可选后迁移任务』下面,说明必须使用 db2uiddl 命令才能从 DB2 版本 5.x 和 DB2 版本 6 迁移唯一索引。这是不正确的。仅当您从版本 5 之前的 DB2 版本进行迁移时,才需要使用 db2uiddl 命令来迁移唯一索引。 4.27 64 位 AIX 版本安装错误 当使用 db2setup 在现有的 AIX 操作系统上安装 64 位 AIX DB2 映象时,确保您正在使用兼容的 AIX 版本,否则安装将失败。不能将 AIX 版本 5 DB2 映象安装在现有的 AIX 版本 4 操作系统上。类似地,在现有的 AIX 版本 5 操作系统上安装 64 位 AIX 版本 4 DB2 映象也将导致安装错误。 试图安装不兼容的 64 位 AIX 版本时,db2setup 实用程序在进行先决条件检查时发现版本不匹配,从而导致产生如下所示的错误消息: DBI1009E 安装媒体和 AIX 版本不匹配。 要避免此错误,应确保您安装的是正确的 64 位 AIX 版本。 4.27.1 使用 SMIT 如果使用 SMIT,则在 AIX 版本 5 DB2 替换 AIX 版本 4 DB2 时,您将接收到错误,然而,逆向进行时却不会产生错误。因此,64 位 AIX 版本 5 的用户应确保他们安装的是正确的版本。如果可以启动 db2setup,且没有产生错误消息,则说明 AIX 版本兼容性的检查成功。 注意: 此兼容性错误不适用于 32 位 AIX 版本。 4.28 迁移期间的错误 在迁移期间,即使迁移成功,db2diag.log 文件中也会出现错误条目(数据库未迁移)。这些错误条目可忽略。 当使用“仓库控制数据库管理”时,错误将记录在 SQLLIB\LOGGING 目录中。IWH2RGn.LOG 文件中包含任何错误消息。如果有错误,则必须更正错误、删除控制数据库并再次启动。在现有控制数据库的情况下,这意味着需要使用备份副本。 4.29 IBM(R) DB2(R) Connect 许可证激活 “DB2 Connect 企业版”、“DB2 Connect 无限制版”和 DB2 Connect Web Starter Kit 的安装程序不会安装产品许可证。安装之后,这些产品将在“先试后买”方式下运行 90 天,原因是它们没有许可证文件。90 天之后,您所安装的产品将停止运行,除非您激活相应的许可证。 要激活产品的许可证,可以使用“DB2 许可证中心”或 db2licm 命令。 4.29.1 使用许可证中心安装许可证密钥和设置许可证类型 启动“DB2 控制中心”,并从工具菜单中选择许可证中心。 选择正为其安装许可证的系统。已安装的产品字段将显示您已经安装的产品的名称。 从许可证菜单中选择添加。 在“添加许可证”窗口中,选择通过文件单选按钮,并选择许可证文件: 在 Windows 服务器上,该文件为:x:\db2\license\connect\ license_filename 其中,x: 表示包含 DB2 Connect 产品 CD 的 CD-ROM 驱动器。 在 UNIX 服务器上,该文件为:/db2/license/connect/license_filename 其中,“DB2 Connect 企业版”和“DB2 Connect 无限制版”的 license_filename 为 db2conee.lic,而对于 DB2 Connect Web Starter Kit 则为 db2consk.lic。 单击应用以添加许可证密钥。 设置许可证类型。 对于“DB2 Connect 无限制版”和 DB2 Connect Web Starter Kit: 在“许可证中心”中,从许可证菜单中选择更改。在“更改许可证”窗口中,选择评测式用法复选框。单击确定以关闭“更改许可证”窗口,并返回到“许可证中心”。 注意: 对于 DB2 Connect Web Starter Kit,确保将失效日期设置为从安装产品之日起的 270 天。 对于“DB2 Connect 企业版”: 在“许可证中心”中,从许可证菜单中选择更改。在“更改许可证”窗口中,选择已经购买的许可证的类型。 如果购买了“并行用户”许可证,则选择并行 DB2 Connect 用户,并输入购买的用户许可证数目。 注意: “DB2 Connect 企业版”为一个用户提供许可证。其它 DB2 Connect 用户许可证必须单独购买。 如果购买了“注册用户”许可证,则选择注册 DB2 Connect 用户,并单击确定以关闭“更改许可证”窗口,并返回至“许可证中心”。单击用户选项卡,并添加为其购买了许可证的每个用户标识。 4.29.2 使用 db2licm 命令来安装许可证密钥和设置许可证类型 可以使用 db2licm 命令来添加许可证密钥,而不使用“许可证中心”。要使用 db2licm 命令来添加许可证密钥: 在 Windows 服务器上,输入以下命令: db2licm -a x:\db2\license\connect\license_filename 其中 x:表示包含 DB2 Connect 产品 CD 的 CD-ROM 驱动器。 在 UNIX 服务器上,输入以下命令: db2licm -a db2/license/connect/license_filename 其中,“DB2 Connect 企业版”和“DB2 Connect 无限制版”的 license_filename 为 db2conee.lic,而对于 DB2 Connect Web Starter Kit 则为 db2consk.lic。 注意: 对于 DB2 Connect Web Starter Kit,确保将失效日期设置为从安装产品之日起的 270 天。 设置许可证类型: 对于“DB2 Connect 无限制版”和 DB2 Connect Web Starter Kit: 输入以下命令: db2licm -p db2conee measured 对于“DB2 Connect 企业版”: 如果购买了“并行用户”许可证,则输入下列命令: db2licm -p db2conee concurrent db2licm -u N 其中,N 表示已购买的并行用户许可证的数目。 如果购买了“注册用户”许可证,则输入以下命令: db2licm -p db2conee registered 4.29.3 分布式安装的许可证注意事项 如果您正在为分布式安装创建映象,则需要进行特殊安排以便在安装之后安装许可证。将上面描述的 db2licm 命令添加至分布式安装脚本。 4.30 存取仓库控制数据库 在 Windows NT 上进行的 DB2 版本 7 典型安装中,DB2 版本 7 仓库控制数据库是随仓库服务器创建的。如果您有 Visual Warehouse 仓库控制数据库,则必须将包含该仓库控制数据库的 DB2 服务器升级为 DB2 版本 7,才能迁移仓库控制数据库中的元数据以供“DB2 版本 7 数据仓库中心”使用。必须将想要继续使用的所有仓库控制数据库迁移至版本 7。活动仓库控制数据库中的元数据会在 DB2 版本 7 安装过程期间迁移为版本 7。要迁移所有其它仓库控制数据库中的元数据,使用“仓库控制数据库迁移”实用程序,您可通过在 Windows NT 上选择开始 --> 程序 --> IBM DB2 --> 仓库控制数据库管理来启动该实用程序。有关迁移仓库控制数据库的信息,参见《DB2 通用数据库 Windows 版快速入门》。 4.31 企业版 UNIX CD-ROM 上的试用产品 用于 UNIX 平台的“DB2 通用数据库(UDB)企业版(EE)CD-ROM”版本 6 和版本 7 中包含“DB2 Connect 企业版(CEE)”的 90 天试用版本。因为 DB2 Connect 功能被构建到 DB2 UDB EE 产品中,所以,在安装了 DB2 UDB EE 的系统上不需要安装 DB2 CEE 产品就可以使用 DB2 Connect 功能。如果您安装了 DB2 CEE 的 90 天试用版本,并决定升级至发放了许可证的版本,则您必须购买 DB2 CEE 产品并安装 DB2 CEE 许可证密钥。您不需要重新安装该产品。在 DB2 EE 或 DB2 CEE UNIX 版《快速入门》一书中提供了关于安装许可证密钥的指示信息。 如果随 EE 安装一起安装了试用 CEE 产品,且您不想永久安装 CEE,则可以按照这些指示信息来除去 CEE 90 天试用版本。如果您除去 Connect EE 的试用版本,则 DB2 EE 仍将具有 DB2 Connect 功能。 要除去 DB2 Connect 版本 7,从各相应平台卸载下列文件集: 在 AIX 上,卸载 db2_07_01.clic 文件集。 在 NUMA-Q 和“Solaris 操作环境”中,卸载 db2clic71 程序包。 在 Linux 上,卸载 db2clic71-7.1.0-x RPM。 在 HP-UX 上,卸载 DB2V7CONN.clic 文件集。 要除去 DB2 Connect 版本 6,从各相应平台卸载下列文件集: 在 AIX 上,卸载 db2_06_01.clic 文件集。 在 NUMA-Q 和“Solaris 操作环境”中,卸载 db2cplic61 程序包。 在 Linux 上,卸载 db2cplic61-6.1.0-x RPM。 在 HP-UX 上,卸载 DB2V6CONN.clic 文件集。 4.32 DB2 Connect 企业版 UNIX CD-ROM 上的试用产品 “DB2 Connect 企业版(EE)”CD-ROM UNIX 版”平台的版本 6 和版本 7 中包含“DB2 通用数据库(UDB)企业版(EE)”的 90 天试用版本。DB2 UDB EE 90 天试用版的目的是供评估之用,而不为 DB2 Connect 所必需。 如果您安装了 DB2 UDB EE 的 90 天试用版本,并决定升级至发放了许可证的版本,则您必须购买 DB2 UDB EE 产品,并安装 DB2 UDB EE 许可证密钥。您不需要重新安装该产品。在 DB2 EE 或 DB2 CEE UNIX 版《快速入门》一书中提供了关于安装许可证密钥的指示信息。如果随 Connect EE 安装一起安装了试用 UDB EE 产品,并且您不想永久安装 UDB EE,则可以按照这些指示信息来除去 EE 90 天试用版本。如果您除去了 DB2 UDB EE 的试用版本,这不会影响 DB2 Connect EE 的功能。 要除去 DB2 UDB EE 版本 7,从各相应平台卸载下列文件集: 在 AIX 上,卸载 db2_07_01.elic 文件集。 在 NUMA-Q 和“Solaris 操作环境”中,卸载 db2elic71 程序包。 在 Linux 上,卸载 db2elic71-7.1.0-x RPM。 在 HP-UX 上,卸载 DB2V7ENTP.elic 文件集。 要除去 DB2 UDB EE 版本 6,从各相应平台卸载下列文件集: 在 AIX 上,卸载 db2_06_01.elic 文件集。 在 NUMA-Q 和“Solaris 操作环境”中,卸载 db2elic61 程序包。 在 Linux 上,卸载 db2elic61-6.1.0-x RPM。 在 HP-UX 上,卸载 DB2V6ENTP.elic 文件集。 4.33 UNIX 上的“Merant 驱动程序管理器”和“DB2 UDB 版本 7 ODBC 驱动程序” 在 UNIX 上,当“Merant 驱动程序管理器”存取 DB2 的 ODBC 驱动程序时,遇到了 Unicode 支持的不兼容。这些不兼容将导致无论应用程序是否请求了使用 Unicode,“Merant 驱动程序管理器”都会使用 Unicode。这可能会导致诸如“数据仓库中心”、“信息目录管理器”和 MQSI 等产品出现问题,因为这些产品要求“Merant 驱动程序管理器”支持非 IBM 的数据源。在获得永久解决方案之前,可以使用未启用 Unicode 支持的 DB2 ODBC 驱动程序库。受影响的 DB2 UDB 版本包括带有修订包 2 或更新版本的版本 7.1 以及处于任何修订包级别的版本 7.2。 DB2 版本 7.1 和 7.2 AIX 版、HP-UX 版和 Solaris 操作环境版中交付了未启用 Unicode 支持的备用 DB2 ODBC 驱动程序库。要使用此备用库,必须为它创建一个备份,并将该备份命名为初始 DB2 ODBC 驱动程序库的名称。 注意: 备用(_36)clibrary 包含 DB2 JDBC cdriver 所必需的 Unicode 功能。使用此库时将仍然允许 JDBC 应用程序(包括 WebSphere Application Server)成功使用 DB2。 要切换到 AIX、HP-UX 或 Solaris 操作环境上的非 Unicode ODBC 库,参见下列指示信息。因为这是一个手工过程,所以,每当您更新产品时(包括在连续的修订包的应用程序之后)就必须执行此过程。 AIX 要在 AIX 上创建必需的库: 作为实例所有者,使用 db2stop force 命令来关闭所有数据库实例。 作为管理实例标识,使用 db2admin stop force 命令来关闭管理服务器实例。 备份 /usr/lpp/db2__/lib 中的原始 db2.o。 作为 root 用户,发出 slibclean。 将 db2_36.o 复制到 db2.o 中,确保所有权和许可权保持一致。使用下列命令: cp db2_36.o db2.o -r--r--r-- bin:bin for db2.o 要切换回到原始对象,使用备份文件而不是 db2_36.o,并遵循相同的过程。 Solaris 操作环境 要创建必需的库: 作为实例所有者,使用 db2stop force 命令来关闭所有数据库实例。 作为管理实例标识,使用 db2admin stop force 命令来关闭管理服务器实例。 备份 /opt/IBMdb2/V./lib 中的原始 libdb2.so.1。 将 libdb2_36.so.1 复制到 libdb2.so.1 中,确保所有权和许可权保持一致。使用下列命令: cp libdb2_36.so.1 libdb2.so.1 -r-xr-xr-x bin:bin libdb2.so.1 对每个数据库实例发出 db2iupdt ,而对 DAS 实例发出 dasiupt 。 要切换回到原始对象,使用备份文件而不是 libdb2_36.so.1,并遵循相同的过程。 HP-UX — 只能用于修订包 4 或更新版本。 在尝试此变通方法之前,必须安装修订包 4 或更新版本。 要在 HP-UX 上创建必需的库: 使用 db2stop force 关闭所有数据库数据库实例。 使用 db2admin stop force 关闭管理服务器实例。 备份 /opt/IBMdb2/V./lib 中的原始 libdb2.sl。 将 libdb2_36.sl 复制到 libdb2.sl 中,确保所有权和许可权保持一致。使用以下命令来确保一致性: -r-xr-xr-x bin:bin for libdb2.sl 对每个数据库实例发出 db2iupdt ,对 DAS 实例发出 dasiupdt 。 要切换回到原始对象,使用备份文件而不是 libdb2_36.sl,并遵循相同的过程。 其它 UNIX 操作系统 如果需要关于其它 UNIX 操作系统上的 DB2 和“Merant 驱动程序管理器”的帮助,请与 IBM 支持机构联系。 4.34 在为 Web 安装“信息目录中心”之前所需要的附加配置 在为 Web 安装“信息目录中心”之前,必须为您正在安装的语言将 dg_strings.hti 文件复制到 /sqllib/icuweb/macro 目录中。可以在相应的语言目录中找到 dg_strings.hti 文件。可以在《快速入门》手册的 NLS 附录和其它大多数 DB2 文档中找到语言码的列表。 4.35 代码页和语言支持信息 — 更正 在《快速入门》手册的『本地语言支持(NLS)』附录中的“代码页和语言支持”表包含下列错误: 列标题“国家代码”应为“国家或地区代码” 列标题“语言”应为“语言/脚本” 斯洛文尼亚的代码是“sl”,而不是表中所指示的“si” 《DB2 Data Links Manager 快速入门》 5.1 AIX 5.1 上的支持 在 AIX 5.1 上,“DB2 Data Links 文件管理器”和 File Filter 组件现在是完全受支持的。与 Data Links 相关联以及在 AIX 的先前发行版上先前受支持的所有工具和指令在 AIX 5.1 上现在是完全受支持的并且适用。 5.2 Dlfm 启动失败,出现“获取前缀的 afsfid 时出错”这一消息 对于运行于 DCE-DFS 环境中的 Data Links Manager,如果 dlfm 启动因以下错误而失败,则与“IBM 服务中心”联系: 获取用于前缀的 afsfid 时出错 当使用“dlfm add_prefix”注册至 Data Links Manager 的 DFS 文件集被删除时,可能会出现该错误。 5.3 对压缩文档设置 Tivoli Storage Manager 类 要指定哪个 TSM 管理类将用于压缩文档,将 DLFM_TSM_MGMTCLASS DB2 注册表项设置为适当的管理类名。 5.4 DFS 客户机使能器的磁盘空间需求 “DFS 客户机使能器”是一个可选组件,可在“DB2 通用数据库”客户机或服务器安装期间选择它。不能在未安装“DB2 通用数据库”客户机或服务器产品的情况下安装“DFS 客户机使能器”,即使“DFS 客户机使能器”自行运行而不需要 DB2 UDB 客户机或服务器亦如此。除“DFS 客户机使能器”代码所需的 2 MB 磁盘空间之外,您还应再留出 40 MB(如果是将“DFS 客户机使能器”作为“DB2 运行时客户机”安装的一部分来安装的话)。如果将“DFS 客户机使能器”作为“DB2 管理客户机”或 DB2 服务器安装的一部分来安装,将需要更多的磁盘空间。有关“DB2 通用数据库”产品的磁盘空间需求的更多信息,参考《DB2 UNIX 版快速入门》手册。 5.5 在 AIX 上监视 Data Links File Manager 后端进程 已对 dlfm see 命令的输出作了更改。当发出了此命令以在 AIX 上监视 Data Links File Manager 后端进程时,所返回的输出将类似如下内容: PID PPID PGID RUNAME UNAME ETIME DAEMON NAME 17500 60182 40838 dlfm root 12:18 dlfm_copyd_(dlfm) 41228 60182 40838 dlfm root 12:18 dlfm_chownd_(dlfm) 49006 60182 40838 dlfm root 12:18 dlfm_upcalld_(dlfm) 51972 60182 40838 dlfm root 12:18 dlfm_gcd_(dlfm) 66850 60182 40838 dlfm root 12:18 dlfm_retrieved_(dlfm) 67216 60182 40838 dlfm dlfm 12:18 dlfm_delgrpd_(dlfm) 60182 1 40838 dlfm dlfm 12:18 dlfmd_(dlfm) DLFM SEE request was successful. 括在括号中的名称是 dlfm 实例的名称,在此例中为“dlfm”。 5.6 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 环境中的其它安装注意事项 在『安装先决条件』一节中,应添加以下新信息: 还必须安装 DFS 3.1 的电子修订或 PTF 集合 1(在它成为可用时)。电子修订可从以下网址处获取: http://www.transarc.com/Support/dfs/Data Links/efix_dfs31_main_page.html 而且: 必须先运行 dfs 客户机,才能安装 Data Links Manager。使用 db2setup 或 smitty。 在『键表文件』一节中有一个错误,应更正为如下内容: 包含主体和密码信息的键表文件应称为 datalink.ktb 且 .... 以下示例中使用正确名称:datalink.ktb。『键表文件』一节应移到“DCE-DFS 后安装任务”下面,因为在创建 DLMADMIN 实例之前不会创建此文件。 在『Data Links File Manager 服务器和客户机』一节中,应注意必须先安装 Data Links Manager 服务器,而后才安装任何 Data Links Manager 客户机。 应添加一个新节『备份目录』: 如果备份方法是用于本地文件系统的,则此处必须是 DFS 文件系统中的目录。应确保此 DFS 文件集是 DFS 管理员创建的。这不应是 DMLFS 文件集。 5.7 “dlfm add_prefix”命令失败 对于运行于 DCE/DFS 环境中的 Data Links Manager,dlfm add_prefix 命令可能会失败,且返回码为 -2061(备份失败)。如果发生这种情况,执行下列步骤: 通过发出 dlfm stop 命令来停止 Data Links Manager 守护程序。 通过发出 dlfm stopdbm 命令来停止 DB2 进程。 通过发出 dce_login root 命令来获取 dce root 用户凭证。 通过发出 dlfm startdbm 命令来启动 DB2 进程。 通过发出 dlfm add_prefix 命令来向 Data Links Manager 注册文件集。 通过发出 dlfm start 命令来启动 Data Links Manager 守护程序进程。 5.8 偶尔出现“复制守护程序”在 dlfm 停止时不能停止的情况 极少会出现用户发出 dlfm 停止命令时或发生异常关闭时 dlfm_copyd(复制守护程序)不能停止的情况。如果发生这种情况,则在尝试重新启动 dlfm 之前发出 dlfm 关闭命令。 5.9 安装和配置 DB2 Data Links Manager AIX 版:使用 db2setup 实用程序在 AIX 上安装 DB2 Data Links Manager 在『创建的 DB2 数据库 DLFM_DB』一节中,DLFM_DB 并非在 DCE_DFS 环境中创建的。这必须作为后安装步骤完成。 在『为 DMAPP 进行 DCE-DFS 预启动注册』一节中,第 2 步应更改为以下内容: 2. 命令被添加至 /opt/dcelocal/tcl/user_cmd.tcl 以便确保在启动 DFS 时将启动 DMAPP。 5.10 安装和配置 DB2 Data Links Manager AIX 版:DCE-DFS 后安装任务 应添加以下一个新节『完成 Data Links Manager 安装』: 在 Data Links Manager 服务器上,必须执行下列步骤来完成安装: 按『安装和配置 DB2 Data Links Manager AIX 版』一章的『DCE-DFS 环境中的附加安装说明』一节的『键表文件』中所述来创建键表文件。 作为 root 用户,输入下列命令来启动 DMAPP: stop.dfs all start.dfs all 使用 dce root 用户凭证来运行“dlfm setup”,如下所示: 作为 Data Links Manager 管理员 DLMADMIN 登录。 作为 root 用户,发出 dce_login。 输入命令:dlfm setup。 在 Data Links Manager 客户机上,必须执行下列步骤来完成安装: 按『安装和配置 DB2 Data Links Manager AIX 版』一章的『DCE-DFS 环境中的附加安装说明』一节的『键表文件』中所述来创建键表文件。 作为 root 用户,输入下列命令来启动 DMAPP: stop.dfs all start.dfs all 5.11 安装和配置 DB2 Data Links Manager AIX 版:使用 Smit 手工安装 DB2 Data Links Manager 在『SMIT 后安装任务』一节中,修改第 7 步来指示必须在发出“dlfm setup”之前先发出“dce_login root”命令。不需要第 11 步。此步骤是在第 6 步(dlfm server_conf)或第 8 步(dlfm client_conf)完成时自动执行的。还要除去第 12 步(dlfm start)。要完成安装,执行下列步骤: 按『安装和配置 DB2 Data Links Manager AIX 版』一章的『DCE-DFS 环境中的附加安装说明』一节的『键表文件』中所述来创建键表文件。 作为 root 用户,输入下列命令来启动 DMAPP: stop.dfs all start.dfs all 5.12 安装和配置 DB2 Data Links DFS 客户机使能器 在『配置 DFS 客户机使能器』一节中,将下列信息添加至第 2 步: 通常,执行“secval”命令将会完成配置。但是,可能还需要重新引导机器。若在存取 READ PERMISSION DB 文件时遇到问题,则重新引导刚刚安装了“DB2 DFS 客户机使能器”的机器。 5.13 安装和配置 DB2 Data Links Manager Solaris 操作系统版 在安装“DB2 Data Links Manager Solaris 操作系统版”之后必须执行下列操作: 将下列三行添加至 /etc/system 文件: set dlfsdrv:glob_mod_pri=0x100800 set dlfsdrv:glob_mesg_pri=0xff set dlfsdrv:ConfigDlfsUid=UID 其中,UID 表示 id dlfm 的用户标识。 重新引导机器以激活更改。 5.14 Windows NT 上的 Data Links 中的管理员组特权 在 Windows NT 上,对于大多数功能,用户 dlmadmin 对使用 DataLinks 链接的文件所具有的特权与 UNIX 上的 root 用户的特权相同。下表对两者进行了比较。 操作 Unix(Root 用户) Windows NT(dlmadmin) 重命名 是 是 在不需要令牌的情况下存取文件 是 是 删除 是 否(参见下面的注释) 更新 是 否(参见下面的注释) 注意: NTFS 不接受对只读文件执行这些操作。dlmadmin 用户可以通过对文件启用写许可权来成功地执行这些操作。 5.15 最小化 Data Links File System Filter(DLFF)安装的记录 可以通过更改 dlfs_cfg 文件来使 Data Links File System Filter(DLFF)安装的记录最小化。dlfs_cfg 文件被传送到 strload 例程,以装入驱动程序和配置参数。该文件位于 /usr/lpp/db2_07_01/cfg/ 目录中。通过符号链接,还可以在 /etc 目录中找到该文件。dlfs_cfg 文件具有如下格式: d - 0 1 其中: d d 参数指定要装入的驱动程序。 driver-name driver-name 是要装入的驱动程序的全路径。例如,“DB2 版本 7”的全路径是 /usr/lpp/db2_07_01/bin/dlfsdrv。驱动程序的名称为 dlfsdrv。 vfs number 这是 /etc/vfs 中的 DLFS 的 vfs 条目。 dlfm id 这是 Data Links Manager 管理员的用户标识。 global message priority 这是 DLFS 驱动程序中的可配置参数。它定义将记录到系统日志文件中的消息类别的列表。 global module priority 这是 DLFS 驱动程序中的可配置参数。它定义将记录到系统日志文件中的驱动程序例程、VFS 操作和 Vnode 操作的列表。 0 1 0 1 是用于为此驱动程序创建非克隆节点的子式数字。节点名是通过将子式数字追加至克隆的驱动程序节点名后创建的。最多可给定五个子式数字(0-4)。 现实示例可能如下所示: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,255,-1 - 0 1 所记录的消息取决于全局消息优先级和全局模块优先级的设置。要最小化记录,可以更改全局消息优先级的值。 有四个消息优先级值可用: #define LOG_EMERGENCY 0x01 #define LOG_TRACING 0x02 #define LOG_ERROR 0x04 #define LOG_TROUBLESHOOT 0x08 DLFF 中的大部分消息都将 LOG_TROUBLESHOOT 作为消息优先级。以下是一些备用配置示例: 如果您确实需要紧急情况消息和错误消息,则在 dlfs_cfg 配置文件中将全局消息优先级设置为 5(1+4): d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,5,-1 - 0 1 若只需要错误消息,则将全局消息优先级设置为 4: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,4,-1 - 0 1 若不需要对 DLFS 进行记录,则将全局消息优先级设置为 0: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,0,-1 - 0 1 5.15.1 安装后记录消息 安装后若需要记录紧急情况、错误和故障诊断消息,则必须修改 dlfs_cfg 文件。dlfs_cfg 文件位于 /usr/lpp/db2_07_01/cfg 目录中。全局消息优先级必须设置为 255(最大优先级)或 13(8+4+1)。将优先级设置为 13(8+4+1)将记录紧急情况、错误和故障诊断消息。 设置全局消息优先级之后,卸装 DLFS 过滤器文件系统,并重新装入 dlfsdrv 驱动程序,以便在装入时设置新的优先级值。在重新装入 dlfsdrv 驱动程序之后,必须重新安装 DLFS 过滤器文件系统。 注意: 对于 dlfsdrv 驱动程序的任何后续装入,在 dlfs_cfg 文件再次更改之前将保留对 dlfs_cfg 的设置。 5.15.2 最小化对 Sun Solaris 系统的记录 Sun(TM) Solaris(TM) 系统上并不存在文件 dlfs_cfg。而是系统文件 /etc/syslog.conf 包含系统日志守护程序(syslogd)用来向相应日志文件转发系统消息时所使用的信息。可在 /etc/syslog.conf 中注释掉表示 kern.notice 和 kern.debug 的条目,从而最小化“DLFF 安装”的记录。然后,还必须停止并启动 syslogd 来使更改生效。 要重新激活所有内核注意事项和错误的记录,必须在 /etc/syslog.conf 中取消对表示 kern.notice 和 kern.debug 的条目的注释,然后再次停止并启动 syslogd。 5.16 DATALINK 复原 在数据库复原之后进行的任何脱机备份的复原,不管有没有前滚,都将不会涉及快速协调处理。在这种情况下,其 DATALINK 列处于文件链路控制之下的所有表都将被置于“数据链路协调暂挂”(DRP)状态。 5.17 删除 Data Links Manager 现在可以删除指定数据库的 DB2 Data Links Manager 了。某些与 Data Links 相关的 SQL 请求的处理以及实用程序(如,备份/复原)涉及到与为数据库配置的所有 DLM 的通信。以前,DB2 不能删除已配置的 DLM,尽管它可能尚未运作。这在 SQL 和实用程序处理中导致了附加的开销。一旦添加了 DLM,引擎在处理请求时就会与它通信,这可能导致了某些 SQL 请求(例如,删除表/表空间/数据库)的故障。 5.18 使用 SMIT 卸载 DLFM 组件时可能会除去附加文件集 在从安装有 Data Links Manager 的 AIX 机器中卸载 DB2(版本 5、6 或 7)之前,应遵循下列步骤: 作为 root 用户,使用以下命令创建 /etc/vfs 的副本: cp -p /etc/vfs /etc/vfs.bak 卸载 DB2。 作为 root 用户,将 /etc/vfs 替换为在第 1 步中创建的备份副本: cp -p /etc/vfs.bak /etc/vfs 5.19 开始之前/确定主机名之前 必须确定每个 DB2 服务器和 Data Links 服务器的名称。您将需要知道这些主机名才能验证安装。当连接至 DB2 Data Links File Manager 时,DB2 UDB 服务器将在内部将下列信息发送至 DLFM: 数据库名 实例名 主机名 然后,DLFM 将此信息与它的内部表进行比较,以确定是否应该允许连接。仅当已使用 dlfm add_db 命令来将此数据库名、实例名和主机名组合向 DLFM 注册时,DLFM 才允许连接。dlfm add_db 命令中使用的主机名必须与 DB2 UDB 服务器在内部发送的主机名完全相同。 按如下所示使用所获得的精确主机名: 在 DB2 服务器上输入主机名命令。例如,此命令可能会返回 db2server。 根据您使用的平台不同,执行下列操作之一: 在 AIX 上,输入 host db2server 命令,其中 db2server 是在前一步骤中获得的名称。此命令应返回类似于以下内容的输出: db2server.services.com 为 9.11.302.341,别名:db2server 在 Windows NT 上,输入 nslookup db2server 命令,其中 db2server 是在前一步骤获得的名称。此命令应返回类似于以下内容的输出: Server: dnsserv.services.com Address: 9.21.14.135 Name: db2server.services.com Address: 9.21.51.178 在 Solaris 操作环境上,输入 cat /etc/hosts | grep 'hostname'。如果在 /etc/hosts 中指定了主机名但无域名,则会返回类似于以下内容的输出信息: 9.112.98.167 db2server loghost 如果指定主机名时带有域名,则该命令将返回类似于以下内容的输出信息: 9.112.98.167 db2server.services.com loghost 当使用 dlfm add_db 命令来注册 DB2 UDB 数据库时,对主机名使用 db2server.services.com。如果在 dlfm add_db 命令中使用了其它任何别名,则 DB2 服务器与 DLFM 的内部连接将失败。 Data Links 服务器是使用 DB2“使用节点主机名端口 port_number 来为数据库 database_alias 添加 Data Links Manager”命令来注册至 DB2 数据库的。 主机名是 Data Links 服务器的名称。在此命令中可以使用 Data Links 服务器的任何有效别名。引用此 Data Links 服务器的 DATALINK 值必须在 URL 值中指定主机名;即,当为 DATALINK 列指定 URL 值时,必须使用与在“添加 Data Links Manager”命令中所使用的名称完全一样的名称。使用不同的别名将导致 SQL 语句失败。 5.20 使用“DB2 Data Links 文件管理器”:在从 DB2 数据库中删除 DB2 Data Links Manager 之后进行清理 当使用 DROP DATALINKS MANAGER 命令从数据库中删除 DB2 Data Links Manager 时,该命令本身不会清理关于 DB2 Data Links Manager 的相应信息。用户可以显式地启动链接至数据库的任何文件的解链操作,以及启动备份信息的垃圾收集。可以使用 dlfm drop_dlm 命令来完成此任务。此命令将启动对特定数据库所有信息的异步删除操作。必须运行 DB2 Data Links Manager,此命令才能成功。仅在删除了 DB2 Data Links Manager 之后才可使用此命令,这一点相当重要;否则,将丢失有关 DB2 Data Links Manager 的重要信息,且不能恢复。 要启动特定数据库的解链处理和备份信息的垃圾收集: 向系统登录为 DB2 Data Links Manager Administrator。 发出以下命令: dlfm drop_dlm database instance hostname 其中: database 是远程 DB2 UDB 数据库的名称; instance 是数据库驻留其下的实例; hostname 是数据库驻留于其上的 DB2 UDB 服务器的主机名。 注销。 有关显示应在其中使用此命令的上下文的完整使用方案,参见 命令参考。 已为此命令创建了新的错误代码(参见 5.22, DLFM1001E(新的错误消息))。 5.21 dlfm Client_conf 故障时的用户操作 在 DLFM 客户机上,如果 dlfm client_conf 由于某种原因失败,则可能是由于 DB2 目录中的“stale”条目造成的。解决方案是发出下列命令: db2 uncatalog db db2 uncatalog node db2 terminate 然后再次尝试 dlfm client_conf。 5.22 DLFM1001E(新的错误消息) DLFM1001E:进行 drop_dlm 处理时出错。 原因: DB2 Data Links Manager 无法对指定的数据库启动解链和垃圾收集处理。这可能是由于下列任何原因造成的: DB2 Data Links Manager 未运行。 在命令中指定了数据库、实例和主机名的无效组合。 在 DB2 Data Links Manager 的其中一个组件服务中有故障。 操作: 执行下列步骤: 确保 DB2 Data Links Manager 正在运行。启动 DB2 Data Links Manager(如果它尚未运行的话)。 确保数据库、实例和主机名的组合标识已注册的数据库。可以在 DB2 Data Links Manager 上使用“dlfm 列示已注册的数据库”命令来执行此操作。 如果错误仍然存在,则参考 db2diag.log 文件中的信息,以便了解是否任何组件服务(例如,“连接管理服务”、“事务管理服务”等等)已失败。记下 db2diag.log 中的错误代码,并执行对于该错误代码而建议的正确操作。 5.23 DLFM 设置配置文件选项 已除去 dlfm setup dlfm.cfg 选项。应忽略在文档中对它的任何引用。 5.24 复原文件时的潜在问题 问题:如果同一文件的不同版本在不同时间链接至数据库,“Data Links File Manager(DLFM)检索”守护程序不会在复原数据库时从压缩文档检索文件的正确版本。 背景:从备份映象复原数据库时,备份映象中链接的文件还会在 Data Links Manager 文件系统(DLFS)中通过压缩文档得到复原。以下描述 DB2 Data Links Manager 检索与复原进程是如何工作的。 如果磁盘上的文件的当前版本的上次修改时间和大小属性不同于要通过压缩文档复原的文件的属性,则磁盘上的当前文件将被视作该文件的另一版本。磁盘上的当前文件另存为 filename.MOD,而该文件的原始版本则通过 DLFM 压缩文档获得复原。例如,如果当前文件名为 abc,则 abc 被复制为 abc.MOD。 如果磁盘上的当前文件的上次修改时间和大小属性与要通过压缩文档复原的文件的属性相同,则“Data Links 检索”守护程序假定该文件未经修改,且不会从压缩文档复原文件的该版本。 要点:可修改文件但不更改上次修改时间和大小属性。这种“隐藏修改”是通过进行不影响文件大小的更改,然后将上次修改时间属性复位为原始文件的上次修改时间属性来实现的。 示例:假定您有一个数据库 DBTEST,它包含带有 DATALINK 列的表。于是您按照以下列出的次序执行下列任务: 在安装了 DLFS 的卷中创建文件 fileA。这是文件的首个版本。 将 fileA 引用(URL)插入 DBTEST 数据库。 备份 DBTEST 数据库。 从 DBTEST 数据库删除 fileA 引用。 从安装了 DLFS 的卷中删除 fileA。 在安装了 DLFS 的卷中创建另一文件 fileA。这是文件的第二个版本。 将 fileA 引用(URL)插入 DBTEST 数据库。 从备份映象复原 DBTEST 数据库。 “DLFM 检索守护程序”将 fileA 的第二个版本复制至 fileA.MOD,然后将压缩文档中的 fileA 的第一个版本复制至安装了 DLFS 的卷中,作为 fileA 的工作版本。 但是,如果 fileA 的两个版本具有相同的上次修改时间和大小属性,则“DLFM 检索守护程序”不会执行任何操作,原因是它假定这些文件实际上是同一版本。 结果是该文件和第二个版本 — 而不是第一个版本 — 保留在安装了 DLFS 的卷上。您并未真地将文件系统复原至它在备份时所处的同一状态。 解决方案:确定应用程序未将文件替换为具有相同属性(上次修改时间和大小)的该文件的较新版本。 5.25 当在 AIX 上运行 Data Links/DFS 脚本 dmapp_prestart 时出错 如果当您运行 Data Links/DFS 脚本 dmapp_prestart 时,命令 /usr/sbin/cfgdmepi -a "/usr/lib/drivers/dmlfs.ext" 失败且返回码为 1,则应安装 DFS 3.1 ptfset1 以修正 cfgdmepi。 5.26 Tivoli Space Manager 与 Data Links 集成 DB2 Data Links Manager 现在将能够利用 Tivoli Space Manager 的功能。Tivoli Space Manager Hierarchical Storage Manager(HSM)客户机程序会自动将合格的文件迁移至存储器,以便在本地文件系统上维护特定级别的可用空间。在存取迁移的文件时,它会自动重新调用这些文件,并允许用户迁移和重新调用特定文件。 使用此功能的先决条件是 Tivoli Space Manager 版本 4.2。 对于具有需要定期移至第三级存储器的大型文件的文件系统的客户来说,此新功能部件很有用(在此情况下需要定期管理文件系统的空间)。对于许多客户,Tivoli Space Manager 当前提供了多种方法来管理它们的第三级存储器。Tivoli Space Manager 的新的 DB2 Data Links Manager 支持可以更灵活地管理 DATALINK 文件的空间。不必在 DB2 Data Links Manager 文件系统中为可能存储在文件系统中的所有文件预先分配足够的存储空间,Tivoli Space Manager 允许在一段时间之后调整由 Data Links 管理的文件系统的分配,以免在正常使用期间无意中填满了文件系统。 将 Data Links 和 HSM 支持添加至文件系统 当向“层次结构存储器管理”(HSM)注册文件系统时,首先向 HSM 注册它,然后向 Data Links File Manager 注册它。 使用命令“dsmmigfs add /fs”来向 HSM 注册。 使用命令“dlfmfsmd /fs”来向 DLM 注册。 文件系统的 Data Links 支持在 HSM 文件系统的 /etc/filesystems 的一节中是通过下列条目来反映的: vfs = dlfs mount = false options = rw,Basefs=fsm nodename = - 将 Data Links 支持添加至现有的 HSM 文件系统 使用命令“dlfmfsmd /fs”来向 DLM 注册。 将 HSM 支持添加至现有的 Data Links 文件系统 使用命令“dsmmigfs add /fs”来向 HSM 注册。 使用命令“dlfmfsmd /fs”来向 DLM 注册。 从 Data Links-HSM 文件系统中除去 Data Links 支持 使用命令“dlfmfsmd -j /fs”来除去 Data Links 支持。 从 Data Links-HSM 文件系统中除去 HSM 支持 使用命令“dsmmigfs remove /fs”来除去 HSM 支持。 使用命令“dlfmfsmd -j /fs”来除去 Data Links 支持。 使用命令“dlfmfsmd /fs”来向 DLM 注册。 从 Data Links-HSM 文件系统中除去 Data Links 和 HSM 支持 使用命令“dsmmigfs remove /fs”来除去 HSM 支持。 使用命令“dlfmfsmd -j /fs”来除去 Data Links 支持。 5.26.1 约束与限制 此功能当前仅在 AIX 上才受支持。 只能由 root 用户来执行选择性迁移(dsmmigrate)和重新调用 FC(读许可权 DB)链接的文件。 只能在“读许可权 DB”文件是“DataLink Manager 管理员”(dlfm)的情况下由文件所有者来执行选择性迁移。要存取这样的文件,主机数据库端需要令牌。唯一不需要令牌的用户是“root”用户。“root”用户较容易执行选择性迁移和重新调用“读许可权 DB”文件。dlfm 用户只有第一次才能使用有效令牌来迁移 FC 文件。(在重新调用之后)试图第二次进行迁移,但是该操作将失败,将出现错误消息“ANS1028S 内部程序错误。请与服务代表联系”。由非 root 用户在 FC 文件上运行 dsmmigrate 将失败。此限制是次要的,因为通常是管理员存取文件服务器上的文件。 stat 和 statfs 系统调用将把 Vfs 类型作为 fsm 而不是 dlfs 来显示,尽管 dlfs 是在 fsm 基础上安装的。 以上行为是针对 dsmrecalld 守护程序的正常功能的,它在文件系统上执行 statfs 来检查它的 Vfs 类型是不是 fsm。 如果具有最小 inode 号的文件是通过 FC(读许可权 DB)链接的,则命令“dsmls”不会显示任何输出 dsmls 命令类似于 ls 命令,并列示由 TSM 管理的文件。不需要用户操作。 5.27 第 4 章 安装和配置 DB2 Data Links Manager AIX 版 5.27.1 常见的安装注意事项 5.27.1.1 从 DB2 File Manager 版本 5.2 迁移至 DB2 Data Links Manager 版本 7 第 3 步中的信息是不正确的。第 3 步应为如下内容: 3. 作为 DLFM 管理员,运行 /usr/lpp/db2_07_01/adm/db2dlmmg 命令。 5.28 第 6 章 验证 AIX 上的安装 5.28.1 NFS 环境中的解决方法 本节描述在 NFS 环境中运行“DB2 Data Links Manager AIX 版”时的已知问题的解决方法,它们不会出现在当前文档中。这些问题是特定于 NFS 的,与 DB2 Data Links Manager 或“DB2 通用数据库”没有任何关系。 其它 NFS 高速缓存问题 在 AIX 的 NFS 客户机上维护了两个不同的高速缓存。NFS 客户机维护具有最近存取的文件和目录的属性的高速缓存。客户机还可以选择支持数据高速缓存对客户机上的文件内容进行高速缓存。 在链接了 READ PERMISSION DB 文件之后,属性高速缓存进程有时会在 NFS 客户机上产生特殊情况。如果链接 READ PERMISSION DB 文件之前用户就已连接至机器,则有时这些用户可以在没有存取控制令牌的情况下存取该文件。使用下列其中一个方法来降低未授权的文件存取的可能性: 在执行 SQL INSERT 语句来设置链接之前,对文件使用 touch 命令。 对包含文件的目录使用 touch 命令。 使用带有五个属性高速缓存配置参数(actimeo、acregmin、acregmax、acdirmin 和 acdirmax)之一的 mount 命令来使修改文件或目录之后保留高速缓存的属性的时间最短。 在 Data Links 功能测试期间最容易观察到 READ PERMISSION DB 文件的未授权存取,因为只链接了一个文件,并且 NFS 活动很少。在产品环境中就不太可能遇到这种情况,因为 NFS 活动很繁忙,并且 NFS 属性高速缓存通常不会保留所有链接文件的属性。 《安装和配置补遗》 6.1 第 5 章 在 UNIX 操作系统上安装 DB2 客户机 6.1.1 HP-UX 内核配置参数 关于设置 HP-UX 内核参数的建议中说明应该将 msgmbn 和 msgmax 设置为 65535 或更高,这是不正确的。必须将这两个参数都精确地设置为 65535。 6.2 第 12 章 运行您自己的应用程序 6.2.1 使用运行时客户机绑定数据库实用程序 在可将数据库实用程序(导入、导出、重组或命令行处理器)和 DB2 CLI 绑定文件与每个数据库配合使用之前,不能使用“DB2 运行时客户机”来将这些实用程序和文件与该数据库绑定。必须转而使用“DB2 管理客户机”或“DB2 应用程序开发客户机”。 必须将这些数据库实用程序和 DB2 CLI 绑定文件与每个数据库绑定,这些程序和文件才能与该数据库配合使用。在网络环境中,如果使用运行于不同操作系统之上的多个客户机,或这些客户机处于不同的 DB2 版本或服务级别,则必须对每个操作系统和 DB2 版本组合都绑定这些实用程序一次。 6.2.2 使用 ODBC 对 DB2 的 UNIX 客户机存取 第 12 章『运行您自己的应用程序』指出如果是使用 ODBC 客户机应用程序或 ODBC SDK 来安装“ODBC 驱动程序管理器”,则需要更新 odbcinst.ini。这并不完全正确。如果是安装“Merant ODBC 驱动程序管理器”产品,则不必更新 odbcinst.ini。 6.3 第 24 章 设置联合系统以存取多个数据源 6.3.1 联合系统 DB2 联合系统是一种特殊类型的分布式数据库管理系统(DBMS)。联合系统允许您查询和检索位于其它 DBMS 上的数据。单个 SQL 语句可以引用多个 DBMS 或个别数据库。例如,可以连接位于“DB2 通用数据库”表、Oracle 表和 Sybase 视图中的数据。 DB2 联合系统由具有 DB2 实例(将充当联合数据库的数据库)的服务器和一个或多个数据源组成。联合数据库包含用来标识数据源及其特征的目录条目。数据源由 DBMS 和数据组成。受支持的数据源包括: Oracle Sybase Microsoft SQL Server Informix “DB2 通用数据库”系列的成员(例如,DB2 OS/390 版、DB2 AS/4000 版和 DB2 Windows 版) “DB2 通用数据库”联合服务器通过使用称为包装器的协议来与数据源通信以及从数据源中检索数据。您使用的包装器取决于运行 DB2 实例的操作系统。使用别名来标识位于数据源中的表和视图。应用程序可以连接至联合数据库,就象连接其它任何 DB2 数据库一样,也可以使用别名来查询数据源,就好象它们是联合数据库中的表或视图一样。 设置联合系统之后,就可以存取数据源中的信息,即使数据在单个本地数据库中。用户和应用程序将查询发送至联合数据库,它会检索数据源中的数据。 DB2 联合系统的运行会受到一些限制。在 DB2 版本 7 中,分布式请求仅限于只读操作。另外,不能对别名执行实用程序操作(LOAD、REORG、REORGCHK、IMPORT 和 RUNSTATS 等等)。但可以使用联通设施,通过与数据源相关联的 SQL 方言将 DDL 和 DML 语句直接提交给 DBMS。 6.3.2 限制 此“修订包”中未提供版本 7.2 的新包装器(例如,AIX、HP 和 Solaris 操作环境上的 Informix;Linux、HP 和 Solaris 操作环境上的 Oracle;AIX 和 Solaris 操作环境上的 Sybase;AIX 和 NT 上的 Microsoft SQL Server);您必须购买 DB2 Relational Connect 版本 7.2。 6.3.3 安装 DB2 Relational Connect 本节提供了有关在将用作联合系统服务器的服务器上安装 DB2 Relational Connect 的指示信息。要存取 Oracle、Sybase、Microsoft SQL Server 和 Informix 数据源,必须要有 Relational Connect。存取“DB2 通用数据库”系列的成员不需要 DB2 Relational Connect。 在安装 DB2 Relational Connect 之前: 确保已在联合服务器上安装“DB2 通用数据库企业版”或“DB2 通用数据库扩充企业版”。 在“DB2 UNIX 版”服务器上: 如果打算在分布式请求中包括 DB2 系列数据库,则当您安装“DB2 通用数据库”时必须已经选择了 DB2 的分布式连接数据源选项。要验证是否实现了此选项,检查 FEDERATED 参数是否设置为 YES。可以通过发出 GET DATABASE MANAGER CONFIGURATION 命令来检查此设置,该命令将显示所有参数及其当前设置。 确保在联合服务器上安装了用于数据源的客户机软件。 6.3.3.1 在 Windows NT 服务器上安装 DB2 Relational Connect 利用您创建的用来执行“DB2 通用数据库”安装的用户帐户登录至联合服务器。 关闭正在运行的任何程序,以便安装程序可以根据需要来更新文件。 调用安装程序。可以自动或者手工调用安装程序。如果安装程序未能自动启动,或者如果您想以其它语言来运行安装程序,则手工调用安装程序。 要自动调用安装程序: 将 DB2 Relational Connect CD 插入驱动器中。 “自动运行”功能部件将自动启动安装程序。确定了系统语言,并启动了该语言的安装程序。 要手工调用安装程序: 单击开始,并选择运行选项。 在打开字段中,输入以下命令: x:\setup /i language 其中: x 表示 CD-ROM 驱动器。 language 表示您使用的语言的国家或地区代码(例如,EN 表示英语)。 单击确定。 安装启动板打开。 单击安装以开始安装过程。 遵循安装程序中的提示。 完成安装时,DB2 Relational Connect 将与其它 DB2 产品一起安装在目录中。例如,Oracle NET8 客户机软件(net8.dll)的包装器库将安装在 c:\Program Files\SQLLIB\bin 目录中。 6.3.3.2 在 UNIX 服务器上安装 DB2 Relational Connect 要在 UNIX 联合服务器上安装 DB2 Relational Connect,使用 db2setup 实用程序。 注意:使用 db2setup 实用程序时出现的屏幕取决于您已经在联合服务器上安装的系统。这些步骤假定尚未安装 Relational Connect。 作为具有 root 用户权限的用户登录。 插入并安装 DB2 产品 CD-ROM。有关如何安装 CD-ROM 的信息,参见《DB2 UNIX 版快速入门》。 通过输入 cd /cdrom 命令来切换至 CD-ROM 所安装在的目录,其中 cdrom 是产品 CD-ROM 的安装点。 输入 ./db2setup 命令。几分钟后“安装 DB2 V7”窗口打开。此窗口列示当前已经安装的项和可供您安装的项。 导航至想要安装的分布式连接(如 Informix 数据源的分布式连接),并按空格键来选择它。当选择了某个选项时,该选项旁将出现一个星号。 选择确定。“创建 DB2 服务”窗口打开。 由于联合服务器已经包含 DB2 实例,所以选择不创建 DB2 实例选项并选择确定。 如果已经选择了不创建“管理服务器”,则会出现警告。选择确定。 “DB2 安装实用程序”窗口将显示安装内容的“摘要报告”。由于以前未安装 Relational Connect,所以将列示下列两项: DB2 Relational Connect 的产品特征符 所选数据源的分布式连接 选择继续。出现一个窗口,指示这是您停止 Relational Connect 安装的最后机会。选择确定以便继续安装。可能要花几分钟才能完成安装。 “DB2 安装实用程序”窗口将显示“状态报告”,指示成功地安装了哪些组件。选择确定。“DB2 安装实用程序”窗口打开。选择关闭,然后选择确定以退出该实用程序。 当完成安装时,DB2 Relational Connect 将与其它 DB2 产品一起安装在目录中。 在“DB2 AIX 版”服务器上,该目录为 /usr/lpp/db2_07_01。 在“DB2 Solaris 操作环境版”服务器上,该目录为 /opt/IBMdb2/V7.1。 在“DB2 HP-UX 版”服务器上,该目录为 /opt/IBMdb2/V7.1。 在“DB2 Linux 版”服务器上,该目录为 /usr/IBMdb2/V7.1。 6.3.4 第 24 章 设置联合系统以存取多个数据源 6.3.4.1 了解与别名配合使用的模式 CREATE NICKNAME 语句中的别名参数是由两部分 — 模式和别名组成的名称。如果在创建别名时省略模式,则别名的模式将为创建该别名的用户的授权标识。在创建别名之后,有关别名的信息就存储在目录视图 SYSCAT.TABLES、SYSCAT.TABOPTIONS、SYSCAT.COLUMNS、SYSCAT.COLOPTIONS 和 SYSCAT.INDEXES 中。 6.3.4.2 将联合数据库复原到不同的联合服务器上时的问题 在将联合数据库备份复原到不同的联合服务器上时,数据库映象中不包含新数据库以及它存取 DB2 系列数据源所需要的节点目录信息。执行复原时必须编目此信息。 6.4 第 26 章 存取 Oracle 数据源 除了支持 AIX 和 Windows NT 上的包装器之外,“DB2 通用数据库”现在还支持 Linux、“Solaris 操作环境”和 HP-UX 上的 Oracle 包装器。此支持仅限于 Oracle 版本 8。要存取这些平台的包装器,需要插入 V7.2 DB2 Relational Connect CD,并选择“Oracle 数据源的分布式连接”。 一旦安装了 DB2 Relational Connect,就可以将 Oracle 数据源添加至联合服务器中: 在 DB2 联合服务器上安装和配置 Oracle 客户机软件。 对于 UNIX 上的 DB2 联合服务器,运行 djxlink 脚本以将 Oracle SQL*Net 或 Net8 库连接编辑至 DB2 联合数据库,并创建 DB2 联合包装器库以便与 Oracle 配合使用。 创建(或更新)db2dj.ini 文件以添加用于 Oracle 的环境变量。此文件必须包含 ORACLE_HOME 环境变量的定义。 (可选)设置 DB2_DJ_INI 和 DB2_DJ_COMM 概要文件注册表变量。 检查 DB2 联合服务器上的 Oracle tnsnames.ora 文件的位置和内容,并使用 Oracle sqlplus 测试与 Oracle 服务器的连接。 回收 DB2 实例。 创建包装器。 创建服务器定义。 创建用户映射。 使用 Set Passthru 测试配置。 为表和视图创建别名。 第 26 章中提供了有关这些步骤(包括设置环境变量)的详细指示信息。『设置联合系统以存取 Oracle 数据源』在《DB2 安装与配置补遗》中。此信息也可以从以下网址联机获得:http://www.ibm.com/software/data/db2/relconnect/。 6.4.1 文档错误 『将 Oracle 数据源添加至联合系统』一节存在下列错误: 本书中的第 2 步和第 3 步之间还需要一个步骤。前三步应该为如下所示: 使用由 Oracle 提供的文档来在 DB2 联合服务器上安装和配置 Oracle 客户机软件。 设置 ORACLE_HOME 环境变量: export ORACLE_HOME=。 对于在 UNIX 平台上运行的 DB2 联合服务器,运行 djxlink 脚本以将 Oracle SQL*Net 或 Net8 库链接编辑至 DB2 联合服务器。根据使用的平台,djxlink 脚本位于: /usr/lpp/db2_07_01/bin(在 AIX 上) /opt/IBMdb2/V7.1/bin(Solaris 操作环境) /opt/IBMdb2/V7.1/bin HP-UX /usr/IBMdb2/V7.1/bin(Linux) 仅当在 DB2 联合服务器上安装了 Oracle 的客户机软件之后,才应运行 djxlink 脚本。 通过修改 db2dj.ini 文件并发出 db2set 命令来设置数据源环境变量。db2set 命令使用您的设置来更新 DB2 概要文件注册表。 在第 26 章中提供了有关设置环境变量的详细指示信息。设置联合系统以存取《DB2 安装与配置补遗》中的 Oracle 数据源。 象本书中写的那样从第 3 步继续执行步骤: 文档指示要设置: DB2_DJ_INI = sqllib/cfg/db2dj.ini 这是不正确的,它应该设置为以下内容: DB2_DJ_INI = $INSTHOME/sqllib/cfg/db2dj.ini 6.5 避免在使用远程 LOB 时发生问题 当使用远程 LOB 时,可能会遇到内存不足的问题。例如,假定您运行一个查询,该查询从 Oracle 列中选择 LONG 数据,并将数据插入到 DB2 表中作为 CLOB。如果您未增大数据库应用程序堆大小,则将接收到一个 SQL 错误,指出“内存不够”。要解决此错误: 将所有应用程序与 DB2 实例断开连接。 使用以下命令更新应用程序堆大小: db2 udpate db cfg for dbname using APPLHEAPSZ 1024 其中,dbname 是联合数据库的名称,而 1024 是建议的堆大小。 重新初始化该数据库。 为了防止发生此问题,应增大数据库应用程序堆大小。要使此更改生效,必须重新初始化该数据库。例如: 使用以下命令更新应用程序堆大小: db2 udpate db cfg for dbname using APPLHEAPSZ 1024 其中,dbname 是联合数据库的名称,而 1024 是建议的堆大小。 将所有应用程序与 DB2 实例断开连接。 重新初始化该数据库。 6.6 存取 Sybase 数据源 在将 Sybase 数据源添加至联合服务器之前,需要在 DB2 联合服务器上安装和配置 Sybase Open Client 软件。有关如何安装 Open Client 软件的特定详细信息,参见随 Sybase 数据库软件提供的文档中的安装过程。作为安装的一部分,应确保在 Sybase 服务器上安装了 Sybase 目录存储过程,并且在 DB2 联合服务器上安装了 Sybase Open Client 库。 配置客户机软件与 Sybase 服务器的连接后,使用其中一个 Sybase 工具来测试连接。对 UNIX 使用 isql 工具,对 Windows 使用 SQL Advantage 工具。 要设置联合服务器以存取存储在 Sybase 数据源上的数据,您需要: 安装 DB2 Relational Connect 版本 7.2。参见6.3.3, 安装 DB2 Relational Connect。 将 Sybase 数据源添加至联合服务器。 指定 Sybase 代码页。 本章讨论第 2 步和第 3 步。 本章中的指示信息适用于 Windows NT、AIX 和“Solaris 操作环境”。特定于平台的区别在出现这些平台时作了注释。 6.6.1 将 Sybase 数据源添加至联合服务器 要将 Sybase 数据源添加至联合服务器,需要: 设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris)。 将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris)。 回收 DB2 实例(仅 AIX 和 Solaris)。 创建并设置接口文件。 创建包装器。 可选:设置 DB2_DJ_COMM 环境变量。 创建服务器。 可选:设置 CONNECTSTRING 服务器选项。 创建用户映射。 为表和视图创建别名。 本节中详细说明了这些步骤。 6.6.1.1 第 1 步:设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris) 通过修改 db2dj.ini 文件并发出 db2set 命令来设置数据源环境变量。db2dj.ini 文件包含关于安装在联合服务器上的 Sybase 客户机软件的配置信息。db2set 命令使用您的设置来更新 DB2 概要文件注册表。 在分区数据库系统中,可对特定实例中的所有节点使用单个 db2dj.ini 文件,也可以对特定实例中的一个或多个节点使用唯一的 db2dj.ini 文件。对于每个实例,非分区数据库系统只能有一个 db2dj.ini 文件。 要设置环境变量: 编辑位于 sqllib/cfg 中的 db2dj.ini 文件,并设置以下环境变量: SYBASE="" 其中 是安装 Sybase 客户机的目录。 发出 db2set 命令来使用您的更改来更新 DB2 概要文件注册表。db2set 命令的语法取决于数据库系统的结构。仅当在下列任何数据库系统结构中使用 db2dj.ini 文件时,才需要执行此步骤。 如果在非分区数据库系统中使用 db2dj.ini 文件,或者如果想要 db2dj.ini 文件仅应用于当前节点,则发出: db2set DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini 如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于此实例内的所有节点,则发出: db2set -g DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini 如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于特定节点,则发出: db2set -i INSTANCEX 3 DB2_DJ_INI=$HOME/sqllib/cfg/node3.ini 其中: INSTANCEX 是实例的名称。 3 是 db2nodes.cfg 文件中列示的节点号。 node3.ini 是 db2dj.ini 文件的已修改并且重命名的版本。 6.6.1.2 第 2 步:将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris 操作环境) 要允许存取 Sybase 数据源,DB2 联合服务器必须编辑为链接至客户机库。链接-编辑过程将为每个数据源创建一个包装器,联合服务器将与包装器进行通信。当运行 djxlink 脚本时,就创建了包装器库。要发出 djxlink 脚本,输入: djxlink 6.6.1.3 第 3 步:回收 DB2 实例(仅 AIX 和 Solaris 操作环境) 为确保在程序中设置了环境变量,应回收 DB2 实例。回收实例时,刷新 DB2 实例以接受您所作的更改。 发出下列命令来回收 DB2 实例: 在“DB2 Windows NT 版”服务器上: NET STOP instance_name NET START instance_name 在 DB2 AIX 版和 Solaris 版服务器上: db2stop db2start 6.6.1.4 第 4 步:创建并设置接口文件 要创建并设置接口文件,必须创建该文件并使其可供存取。 使用由 Sybase 提供的实用程序来创建包含想要存取的所有 Sybase Open Server 的数据的接口文件。有关使用此实用程序的更多信息,参见来自 Sybase 公司的安装文档。 Windows NT 通常将此文件称为 sql.ini。将您刚创建的文件从 sql.ini 重命名为 interfaces 以便为该文件在所有平台上命名。如果您选择不将 sql.ini 重命名为 interfaces,则必须使用 IFILE 参数或第 8 步中说明的 CONNECTSTRING 选项。 在 AIX 和 Solaris 系统上,此文件被命名为 /sqllib/interfaces。 使 DB2 可以存取接口文件。 在“DB2 Windows NT 版”服务器上: 将该文件放置在 DB2 实例的 %DB2PATH% 目录中。 在 DB2 AIX 版和 Solaris 版服务器上: 将该文件放置在 DB2 实例的 $HOME/sqllib 目录中。使用 ln 命令来从 DB2 实例的 $HOME/sqllib 目录链接至该文件。例如: ln -s -f /home/sybase/interfaces /home/db2djinst1/sqllib 6.6.1.5 第 5 步:创建包装器 使用 CREATE WRAPPER 语句来指定将用来存取 Sybase 数据源的包装器。包装器是联合系统用来与数据源进行通信以及从数据源中检索数据的机制。DB2 中包括用于 Sybase、CTLIB 和 DBLIB 的两个包装器。以下示例显示了 CREATE WRAPPER 语句: CREATE WRAPPER CTLIB 其中,CTLIB 是与 Sybase Open Client 软件配合使用的缺省包装器名。CTLIB 包装器可以在 Windows NT、AIX 和 Solaris 服务器上使用。 可以用您选择的名称来替代缺省包装器名。但是,如果这样做的话,则还必须在 CREATE WRAPPER 语句中包括 LIBRARY 参数以及联合服务器的包装器库的名称。有关包装器库名的更多信息,参见 DB2 SQL Reference 中的 CREATE WRAPPER 语句。 6.6.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 当存取 Sybase 数据源时,要提高性能,应设置 DB2_DJ_COMM 环境变量。此变量确定初始化联合服务器时是否装入包装器。将 DB2_DJ_COMM 环境变量设置为包括与您在先前步骤中指定的包装器相对应的包装器库;例如: 在“DB2 AIX 版”服务器上: db2set DB2_DJ_COMM='libctlib.a' 在“DB2 Solaris 版”服务器上: db2set DB2_DJ_COMM='libctlib.so' 必须确保等号(=)两边都没有空格。 有关包装器库名的更多信息,参考 DB2 SQL Reference。有关 DB2_DJ_COMM 环境变量的信息,参考《管理指南》。 6.6.1.7 第 7 步:创建服务器 使用 CREATE SERVER 语句来定义您想存取其数据源的每个 Sybase 服务器;例如: CREATE SERVER SYBSERVER TYPE SYBASE VERSION 12.0 WRAPPER CTLIB OPTIONS (NODE 'sybnode', DBNAME'sybdb') 其中: SYBSERVER 是为 Sybase 服务器指定的名称。此名称必须是唯一的。 SYBASE 是正在配置要存取的数据源的类型。Sybase 是唯一受支持的数据源。 12.0 是您正在存取的 Sybase 的版本。受支持的版本为 10.0、11.0、11.1、11.5, 11.9 和 12.0。 CTLIB 是您在 CREATE WRAPPER 语句中指定的包装器名。 'sybnode' 是 SYBSERVER 所驻留在的节点的名称。从接口文件中获取节点值。此值是区分大小写的。 尽管节点名被指定为一个选项,但是它是 Sybase 数据源必需的。有关其它选项的信息,参见 DB2 SQL Reference。 'sybdb' 是想要存取的 Sybase 数据库的名称。从 Sybase 服务器中获取此名称。 可以将 IGNORE_UDT 服务器选项与 CTLIB 和 DBLIB 协议配合使用来指定联合服务器是否应该确定以没有强类型的 UDT 为基础的内置类型。此服务器选项只适用于通过 CTLIB 和 DBLIB 协议存取的数据源。有效值为: 'Y' 忽略 UDT 是由用户定义的这一事实,并确定它们下面存在哪些内置类型。 'N' 不忽略 UDT 的用户定义的规范。这是缺省设置。 当 DB2 创建别名时,它查找有关别名指向的对象(表、视图和存储过程)的信息,并对这些信息进行编目。当它查找信息时,它可能会发现某些对象具有它不识别的数据类型(即,不映射至联合数据库中的对应数据类型的数据类型)。这些不识别的类型可以包括: 新的内置类型 具有强类型的 UDT 没有强类型的 UDT。这些是用户已简单重命名的内置类型。只有某些数据源(例如,Sybase 和 Microsoft SQL Server)才支持这些类型。 当联合服务器发现它不识别的数据类型时,它将返回错误消息 SQL3324N。然而,它可以将此实践作为例外。对于可以通过 CTLIB 或 DBLIB 协议来存取的数据源,可以设置 IGNORE_UDT 服务器选项,以便当联合数据库遇到不识别的没有强类型的 UDT 时,联合数据库可确定 UDT 的基本内置类型。然而,如果联合数据库识别此内置类型,联合数据库就会将有关该内置类型的信息返回到目录中。要让联合数据库确定没有强类型的 UDT 的基本内置类型,应将 IGNORE_UDT 设置为“Y”。 6.6.1.8 第 8 步:可选:设置 CONNECTSTRING 服务器选项 指定超时阈值、接口文件的路径和名称以及接口文件的信息包大小。Sybase Open Client 使用超时阈值来中断运行了太长时间的查询和响应。可以通过使用 CREATE SERVER OPTION DDL 语句的 CONNECTSTRING 选项来在 DB2 中设置这些阈值。使用 CONNECTSTRING 选项来指定: SQL 查询的超时持续时间。 登录响应的超时持续时间。 接口文件的路径和名称。 信息包大小。 .-;--------------------------------. V | >>---+------------------------------+-+------------------------>< +-TIMEOUT-- = -- seconds-------+ +-LOGIN_TIMEOUT-- = -- seconds-+ +-IFILE-- = --"string"---------+ +-PACKET_SIZE-- = --bytes------+ '-;----------------------------' TIMEOUT 指定“DB2 通用数据库”为任何 SQL 语句而等待来自 Sybase Open Client 的响应的秒数。seconds 的值是“DB2 通用数据库”的整数范围内的一个正整数。您指定的超时值取决于您正在使用的包装器。Windows NT、AIX 和 Solaris 服务器都能够利用 DBLIB 包装器。DBLIB 包装器的缺省值为 0。在 Windows NT、AIX 和 Solaris 服务器上,DBLIB 的缺省值将导致“DB2 通用数据库”无限期地等待响应。 LOGIN_TIMEOUT 指定“DB2 通用数据库”等待来自 Sybase Open Client 的对登录请求的响应的秒数。缺省值与 TIMEOUT 的缺省值相同。 IFILE 指定 Sybase Open Client 接口文件的路径和名称。必须用双引号(")将 string 中所标识的路径括起来。在 Windows NT 服务器上,缺省值为 %DB2PATH%。在 AIX 和 Solaris 服务器上,缺省值为“DB2 通用数据库”实例的主目录中的 sqllib/interfaces。 PACKET_SIZE 指定接口文件的信息包大小(以字节计)。如果数据源不支持所指定的信息包大小,则连接将失败。当每个记录都非常大时(例如,当在大型表中插入行时),通过增大信息包大小可以明显地提高性能。字节大小为数值。有关更多信息,参见 Sybase 参考手册。 示例: 在 Windows NT 服务器上,要将超时值设置为 60 秒,并将接口文件设置为 C:\etc\interfaces,使用: CREATE SERVER OPTION connectstring FOR SERVER sybase1 SETTING 'TIMEOUT=60;LOGIN_TIMEOUT=5;IFILE="C:\etc\interfaces"' 在 AIX 和 Solaris 服务器上,要将超时值设置为 60 秒,并将接口文件设置为 /etc/interfaces,使用: CREATE SERVER OPTION connectstring FOR SERVER sybase1 SETTING 'TIMEOUT=60;PACKET_SIZE=4096;IFILE="/etc/interfaces"' 6.6.1.9 第 9 步:创建用户映射 如果联合服务器上的用户标识和密码与 Sybase 数据源上的用户标识或密码不同,则使用 CREATE USER MAPPING 语句来将本地用户标识映射为在 Sybase 数据源中定义的用户标识和密码;例如: CREATE USER MAPPING FOR DB2USER SERVER SYBSERVER OPTIONS ( REMOTE_AUTHID 'sybuser', REMOTE_PASSWORD 'day2night') 其中: DB2USER 是您正在映射至 Sybase 数据源中定义的用户标识的本地用户标识。 SYBSERVER 是在 CREATE SERVER 语句中定义的 Sybase 数据源的名称。 'sybuser' 是您正在将 DB2USER 映射至的 Sybase 数据源的用户标识。此值是区分大小写的。 'day2night' 是与 'sybuser' 相关联的密码。此值是区分大小写的。 有关其它选项的更多信息,参见 DB2 SQL Reference。 6.6.1.10 第 10 步:为表和视图创建别名 对位于 Sybase 数据源中的每个视图或表指定别名。当您查询 Sybase 数据源时将使用这些别名。Sybase 别名是区分大小写的。将模式名和表名都用双引号(")括起来。以下示例显示了 CREATE NICKNAME 语句: CREATE NICKNAME SYBSALES FOR SYBSERVER."salesdata"."europe" 其中: SYBSALES 是 Sybase 表或视图的唯一别名。 SYBSERVER."salesdata"."europe" 三部分组成的标识符,遵循以下格式: data_source_name."remote_schema_name"."remote_table_name" 对您想为其创建别名的每个表或视图重复此步骤。创建别名时,DB2 将使用连接来查询数据源目录。此查询将测试您与数据源的连接。如果连接不工作,则将接收到错误消息。 有关 CREATE NICKNAME 语句的更多信息,参见 DB2 SQL Reference。有关一般别名和验证数据类型映射的更多信息,参见《DB2 管理指南》。 6.6.2 指定 Sybase 代码页 仅当 DB2 联合服务器和 Sybase 服务器正在运行不同的代码页时,才需要执行此步骤。使用与 DB2 使用的代码集相同的代码集的数据源不需要转换。下表提供了常见的“本地语言支持”(NLS)代码页的等效 Sybase 选项。必须将 Sybase 数据源配置为对应于这些等效选项,或者客户机代码必须能够检测不匹配的项,并将它标志为错误,或者使用它自己的语义来映射数据。如果找不到从源代码页至目标代码页的转换表,则 DB2 会发出错误消息。有关更多信息,参考 Sybase 文档。 表 2. Sybase 代码页选项 代码页 等效 Sybase 选项 850 cp850 897 sjis 819 iso_1 912 iso_2 1089 iso_6 813 iso_7 916 iso_8 920 iso_9 6.7 使用 ODBC 来存取 Microsoft SQL Server 数据源(新章节) 在将 Microsoft SQL Server 数据源添加至 DB2 联合服务器之前,需要在联合服务器上安装并配置 ODBC 驱动程序。有关如何安装 ODBC 驱动程序的特定详细信息,参见随 ODBC 驱动程序提供的文档中的安装过程。 要设置联合服务器以存取存储在 Microsoft SQL Server 数据源上的数据,需要: 在联合服务器上安装并配置 ODBC 驱动程序。有关如何安装 ODBC 驱动程序的特定详细信息,参见随 ODBC 驱动程序提供的文档中的安装过程。 在“DB2 Windows NT 版”服务器上: 使用 ODBC 设备管理器来配置系统 DSN。在“Windows ODBC 数据源管理器”中,指定 SQL Server 驱动程序并完成该对话框以添加新的“系统 DSN”。指定“使用由用户提供的“登录标识”和密码的 SQL Server 认证。” 在“DB2 AIX 版”服务器上: 安装由 MERANT 提供的库的线程版本,将 MERANT 库目录指定为 LIBPATH 中的第一个条目,并设置 .odbc.ini 文件。 安装 DB2 Relational Connect 版本 7.2。参见6.3.3, 安装 DB2 Relational Connect。 将 Microsoft SQL Server 数据源添加至联合服务器。 指定 Microsoft SQL Server 代码页。(仅用于 Windows NT) 本章讨论第 3 步和第 4 步。 本章中的指示信息适用于 Windows NT 和 AIX 平台。特定于平台的区别在出现这些平台时作了注释。 6.7.1 将 Microsoft SQL Server 数据源添加至联合服务器 在安装 ODBC 驱动程序和 DB2 Relational Connect 之后,使用下列步骤将 Microsoft SQL Server 数据源添加至联合服务器: 设置环境变量(仅 AIX)。 运行 shell 脚本(仅 AIX)。 可选:设置 DB2_DJ_COMM 环境变量。(仅 AIX) 回收 DB2 实例(仅 AIX)。 创建包装器。 创建服务器。 创建用户映射。 为表和视图创建别名。 可选:获取 ODBC 跟踪。 下列各节中详细说明了这些步骤。 6.7.1.1 第 1 步:设置环境变量(仅 AIX) 通过修改 db2dj.ini 文件并发出 db2set 命令来设置数据源环境变量。db2dj.ini 文件包含用来连接至 Microsoft SQL Server 数据源的配置信息。db2set 命令使用您的设置来更新 DB2 概要文件注册表。 在分区数据库系统中,可对特定实例中的所有节点使用单个 db2dj.ini 文件,也可以对特定实例中的一个或多个节点使用唯一的 db2dj.ini 文件。对于每个实例,非分区数据库系统只能有一个 db2dj.ini 文件。 要设置环境变量: 编辑位于 $HOME/sqllib/cfg/ 中的 db2dj.ini 文件,并设置下列环境变量: ODBCINI=$HOME/.odbc.ini DJX_ODBC_LIBRARY_PATH=/lib DB2ENVLIST=LIBPATH 发出 db2set 命令来使用您的更改来更新 DB2 概要文件注册表。db2set 的语法取决于数据库系统结构: 如果在非分区数据库系统中使用 db2dj.ini 文件,或者如果在分区数据库系统中使用 db2dj.ini 文件且想要将 db2dj.ini 文件中的值仅应用于当前节点,则发出以下命令: db2set DB2_DJ_INI=/db2dj.ini 如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于此实例内的所有节点,则发出以下命令: db2set -g DB2_DJ_INI=/db2dj.ini 如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于特定节点,则发出以下命令: db2set -i INSTANCEX 3 DB2_DJ_INI=$HOME/sqllib/cfg/node3.ini 其中: INSTANCEX 是实例的名称。 3 是 db2nodes.cfg 文件中列示的节点号。 node3.ini 是 db2dj.ini 文件的已修改并且重命名的版本。 要设置指向客户机库的路径,发出以下命令: db2set DB2LIBPATH= db2set DB2ENVLIST=LIBPATH 6.7.1.2 第 2 步:运行 shell 脚本(仅 AIX) djxlink.sh shell 脚本将客户机库链接至包装器库。要运行 shell 脚本: djxlink 6.7.1.3 第 3 步:可选:设置 DB2_DJ_COMM 环境变量(仅 AIX) 如果您发现花了过长的时间来存取 Microsoft SQL Server 数据源,则可以将 DB2_DJ_COMM 环境变量设置为在初始化联合系统时装入包装器,而不是在尝试存取数据源时才装入包装器,以提高性能。将 DB2_DJ_COMM 环境变量设置为包括与您在第 5 步中指定的包装器相对应的包装器库。例如: 在“DB2 Windows NT 版”服务器上: db2set DB2_DJ_COMM=djxmssql3.dll 在“DB2 AIX 版”服务器上: db2set DB2_DJ_COMM=libmssql3.a 必须确保等号(=)两边都没有空格。 有关包装器库名的更多信息,参见 DB2 SQL Reference。 6.7.1.4 第 4 步:回收 DB2 实例(仅 AIX) 为确保在程序中设置了环境变量,应回收 DB2 实例。回收实例时,刷新 DB2 实例以接受您所作的更改。通过发出下列命令来回收 DB2 实例: db2stop db2start 6.7.1.5 第 5 步:创建包装器 “DB2 通用数据库”具有两种不同的协议(称为包装器),可以用来存取 Microsoft SQL Server 数据源。包装器是联合服务器用来与数据源进行通信以及从数据源中检索数据的机制。您使用的包装器取决于运行“DB2 通用数据库”的平台。使用表 3来作为选择适当的包装器的指南。 表 3. ODBC 驱动程序 ODBC 驱动程序 平台 包装器名 ODBC 3.0(或更高级别)驱动程序 Windows NT DJXMSSQL3 MERANT DataDirect Connect ODBC 3.6 驱动程序 AIX MSSQLODBC3 使用 CREATE WRAPPER 语句来指定将用来存取 Microsoft SQL Server 数据源的包装器。以下示例显示了 CREATE WRAPPER 语句: CREATE WRAPPER DJXMSSQL3 其中,DJXMSSQL3 是在“DB2 Windows NT 版”服务器(使用 ODBC 3.0 驱动程序)上使用的缺省包装器名称。如果您具有“DB2 AIX 版”服务器,则将指定 MSSQLODBC3 包装器名。 可以用您选择的名称来替代缺省包装器名。但是,如果这样做的话,则必须在 CREATE WRAPPER 语句中包括 LIBRARY 参数以及联合服务器平台的包装器库的名称。例如: 在“DB2 Windows NT 版”服务器上: CREATE WRAPPER wrapper_name LIBRARY 'djxmssql3.dll' 其中,wrapper_name 是您想给予包装器的名称,而 'djxmssql3.dll' 是库名。 在“DB2 AIX 版”服务器上: CREATE WRAPPER wrapper_name LIBRARY 'libmssql3.a' 其中,wrapper_name 是您想给予包装器的名称,而 'libdjxmssql.a' 是库名。 有关包装器库名的更多信息,参见 DB2 SQL Reference 中的 CREATE WRAPPER 语句。 6.7.1.6 第 6 步:创建服务器 使用 CREATE SERVER 语句来定义您想连接的每个 Microsoft SQL Server 数据源。例如: CREATE SERVER sqlserver TYPE MSSQLSERVER VERSION 7.0 WRAPPER djxmssql3 OPTIONS (NODE 'sqlnode', DBNAME 'database_name') 其中: sqlserver 是为 Microsoft SQL Server 服务器指定的名称。此名称必须是唯一的。 MSSQLSERVER 是正在配置要存取的数据源的类型。 7.0 是您正在存取的 Microsoft SQL Server 的版本。“DB2 通用数据库”支持 Microsoft SQL Server 的版本 6.5 和 7.0。 DJXMSSQL3 是您在 CREATE WRAPPER 语句中定义的包装器名。 'sqlnode' 是引用您正在存取的 Microsoft SQL Server 的 Microsoft SQL Server 版本的系统 DSN 名。此值是区分大小写的。“DB2 通用数据库”支持 Microsoft SQL Server 的版本 6.5 和 7.0。 尽管节点名(系统 DNS 名)被指定为 CREATE SERVER 语句中的一个选项,但是它是 Microsoft SQL Server 数据源所必需的。在 Windows 上,从“Windows ODBC 数据源管理器”工具的“系统 DSN”选项卡获取 DSN。在 AIX 上,从 DB2 实例所有者主目录中的 .odbc.ini 文件获取 DSN。 有关可配合 CREATE WRAPPER 语句使用的其他选项,参见 DB2 SQL Reference。 'database_name' 是您正在连接的数据库的名称。 尽管数据库的名称被指定为 CREATE SERVER 语句中的一个选项,但是它是 Microsoft SQL Server 数据源所必需的。 6.7.1.7 第 7 步:创建用户映射 如果联合服务器上的用户标识和密码与 Microsoft SQL Server 数据源上的用户标识或密码不同,则使用 CREATE USER MAPPING 语句来将本地用户标识映射为在 Microsoft SQL Server 数据源中定义的用户标识和密码;例如: CREATE USER MAPPING FOR db2user SERVER server_name OPTIONS (REMOTE_AUTHID 'mssqluser', REMOTE_PASSWORD 'day2night') 其中: db2user 是您正在映射至在 Microsoft SQL Server 数据源中定义的用户标识的本地用户标识。 server_name 是在 CREATE SERVER 语句中定义的服务器的名称。 'mssqluser' 是将 db2user 映射至的 Microsoft SQL Server 数据源的登录标识。此值是区分大小写的。 'day2night' 是与 'mssqluser' 相关联的密码。此值是区分大小写的。 有关可配合 CREATE USER MAPPING 语句使用的其它选项,参见 DB2 SQL Reference。 6.7.1.8 第 8 步:为表和视图创建别名 对位于您想存取的 Microsoft SQL Server 数据源中的每个视图或表指定别名。当您查询 Microsoft SQL Server 数据源时将使用这些别名。使用 CREATE NICKNAME 语句来指定别名。别名是区分大小写的。以下示例显示了 CREATE NICKNAME 语句: CREATE NICKNAME mssqlsales FOR server_name.salesdata.europe 其中: mssqlsales 是 Microsoft SQL Server 表或视图的唯一别名。 server_name.salesdata.europe 三部分组成的标识符,遵循以下格式: data_source_server_name.remote_schema_name.remote_table_name 建议对别名的 remote_schema_name 和 remote_table_name 部分用双引号引起来。 当您创建别名时,DB2 试图存取数据源目录表(在 Microsoft SQL Server 中将它们称为系统表)。这会测试与数据源的连接。如果连接失败,则将接收到错误消息。 对您想为其创建别名的所有数据库表和视图重复此步骤。 有关 CREATE NICKNAME 语句的更多信息,参见 DB2 SQL Reference。有关一般别名和验证数据类型映射的更多信息,参见《DB2 管理指南》。 6.7.1.9 第 9 步:可选:获取 ODBC 跟踪 如果在存取数据源时遇到了问题,则可以获取 ODBC 跟踪信息以分析和解决这些问题。为了确保 ODBC 跟踪正常工作,应使用由“ODBC 数据源管理员”提供的跟踪工具。激活跟踪将影响系统的性能,因此,一旦解决了问题,就应该关闭跟踪。 6.7.2 复查 Microsoft SQL Server 代码页(仅用于 Windows NT) Microsoft SQL Server 支持 DB2 UDB 所支持的许多常见“本地语言支持”(NLS)代码页。使用与 DB2 使用的代码集相同的代码集的数据源不需要转换。表 3 中列示了“DB2 通用数据库”和 Microsoft SQL Server 都支持的代码页。 表 4. DB2 UDB 和 Microsoft SQL Server 代码页选项 代码页 受支持的语言 1252 ISO 字符集 850 多种语言 437 美国英语 874 泰国语 932 日语 936 简体中文 949 韩国语 950 繁体中文 1250 中欧语 1251 斯拉夫语 1253 希腊语 1254 土耳其语 1255 希伯莱语 1256 阿拉伯语 当 DB2 联合服务器和 Microsoft SQL Server 正在运行不同的“本地语言支持”(NLS)代码页时,必须将 Microsoft SQL Server 数据源配置为对应于这些等效选项,或者客户机代码必须能够检测不匹配项,并将它标志为错误,或者使用它自己的语义来映射数据。如果找不到从源代码页至目标代码页的转换表,则 DB2 会发出错误消息。有关更多信息,参考 Microsoft SQL Server 文档。 6.8 存取 Informix 数据源(新章节) 在将 Informix 数据源添加至 DB2 联合服务器之前,需要在联合服务器上安装和配置 Informix Client SDK 软件。有关如何安装 Client SDK 软件的特定详细信息,参见随 Informix 数据库软件提供的文档中的安装过程。确保包括了 Informix Client SDK 库,它是安装的一部分。 要设置联合服务器以存取存储在 Informix 数据源上的数据,您需要: 安装 DB2 Relational Connect。参见6.3.3, 安装 DB2 Relational Connect。 应用最新的“DB2 修订包”。 将 Informix 数据源添加至联合服务器。 本章讨论第 3 步。 本章中的指示信息适用于 AIX、“Solaris 操作环境”和 HP-UX 操作系统。特定操作系统的差别在出现时作了注释。 6.8.1 将 Informix 数据源添加至联合服务器 要将 Informix 数据源添加至联合服务器,需要: 设置环境变量并更新概要文件注册表。 将 DB2 链接至 Informix 客户机软件。 回收 DB2 实例。 创建 Informix sqlhosts 文件。 创建包装器。 可选:设置 DB2_DJ_COMM 环境变量。 创建服务器。 创建用户映射。 为表、视图和 Informix 同义词创建别名。 本节中详细说明了这些步骤。 6.8.1.1 第 1 步:设置环境变量并更新概要文件注册表 通过修改 db2dj.ini 文件并发出 db2set 命令来设置数据源环境变量。db2dj.ini 文件包含关于安装在联合服务器上的 Informix 客户机软件的配置信息。db2set 命令使用您的设置来更新 DB2 概要文件注册表。 在分区数据库系统中,可对特定实例中的所有节点使用单个 db2dj.ini 文件,也可以对特定实例中的一个或多个节点使用唯一的 db2dj.ini 文件。对于每个实例,非分区数据库系统只能有一个 db2dj.ini 文件。 要设置环境变量: 编辑位于 sqllib/cfg 目录中的 db2dj.ini 文件,并设置下列环境变量: 注意: 如果系统上还没有此文件,则您自己可以创建此文件。 INFORMIXDIR 将 INFORMIXDIR 环境变量设置为指向 Informix Client SDK 软件的安装目录的路径;例如: INFORMIXDIR=/informix/csdk INFORMIXSERVER 此变量标识缺省 Informix 服务器的名称。 INFORMIXSERVER=inf93 注意:尽管 Informix 包装器不使用此变量的值,但 Informix 客户机要求设置此变量。该包装器使用节点服务器选项的值,它指定您想要访问的 Informix 数据库服务器。 INFORMIXSQLHOSTS 如果您在使用 Informix sqlhosts 文件的缺省路径($INFORMIXDIR/etc/sqlhosts),则不需要设置此变量。然而,如果您对 Informix sqlhosts 文件使用不同于缺省路径的路径,则需要将此变量设置为 Informix sqlhosts 文件的全路径名。例如: INFORMIXSQLHOSTS=/informix/csdk/etc/my_sqlhosts 使用 Informix 环境变量来更新 DB2 实例的 .profile 文件。可以通过发出下列命令来设置和导出每个变量以完成此操作: PATH=$INFORMIXDIR/bin:$PATH export PATH INFORMIXDIR= export INFORMIXDIR 其中,informix_client_path 是联合服务器上表示 Informix 客户机的安装目录的路径。如果路径中的名称包含空白,则使用双引号(")将该路径引起来。 通过输入以下命令来执行 DB2 实例 .profile: . .profile 发出 db2set 命令来使用您的更改来更新 DB2 概要文件注册表。db2set 命令的语法取决于数据库系统的结构。仅当在下列任何数据库系统结构中使用 db2dj.ini 文件时,才需要执行此步骤。 如果在非分区数据库系统中使用 db2dj.ini 文件,或者如果想要 db2dj.ini 文件仅应用于当前节点,则发出: db2set DB2_DJ_INI=sqllib/cfg/db2dj.ini 注意: 本节中的路径名应该是全限定的。例如,my_home/my_instance/sqllib/cfg/db2dj.ini 如果您正在分区数据库系统中使用 db2dj.ini 文件,并且您想要 db2dj.ini 文件中的值适用于此实例中的所有节点,则应发出: db2set -g DB2_DJ_INI = sqllib/cfg/db2dj.ini 如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于特定节点,则发出: db2set -i INSTANCEX 3 DB2_DJ_INI=sqllib/cfg/node3.ini 其中: INSTANCEX 是实例的名称。 3 是 db2nodes.cfg 文件中列示的节点号。 node3.ini 是 db2dj.ini 文件的已修改并且重命名的版本。 6.8.1.2 第 2 步:将 DB2 链接至 Informix 客户机软件 要允许存取 Informix 数据源,DB2 联合服务器必须连接编辑至客户机库。连接编辑进程将为联合服务器将与之通信的每个数据源创建包装器库。在运行 djxlinkInformix 脚本时就创建了 Informix 包装器库。要发出 djxlinkInformix 脚本,输入: djxlinkInformix 注意: djxlinkInformix 脚本仅创建 Informix 包装器库。还有另一个脚本,即试图为“DB2 通用数据库”支持的每个数据源(Oracle 和 Microsoft SQL Server 等等)创建一个包装器库的 djxlink 脚本。如果只安装了其中一些数据源的客户机软件,则在发出 djxlink 脚本时,对于每个缺少的数据源,都将接收到一条错误消息。 您需要有 “UNIX 系统管理员”(root 用户)权限才能运行 djxlinkInformix 和 djxlink 脚本。 djxlinkInformix 和 djxlink 脚本将详细的错误和警告信息写至特定文件,这取决于操作系统。例如,在 AIX 上,djxlinkInformix 脚本会写至 /usr/lpp/db2_07_01/lib/djxlinkInformix.out,而 djxlink 脚本会写至 /usr/lpp/db2_07_01/lib/djxlink.out。 djxlinkInformix 和 djxlink 脚本会在特定目录中创建包装器库,这取决于操作系统。例如,在 AIX 上,会在 /usr/lpp/db2_07_01/lib 目录中创建 libinformix.a 包装器库。 在创建 libinformix.a 包装器库后检查它的许可权,以确保 DB2 实例所有者可读取和执行该库。如果 DB2 实例所有者不在“系统”组中,则对 libinformix.a 包装器库的许可权应为 -rwxr-xr-x root system ...libinformix.a。 6.8.1.3 第 3 步:回收 DB2 实例 为确保在程序中设置了环境变量,应回收 DB2 实例。回收实例时,刷新 DB2 实例以接受您所作的更改。 发出下列命令来回收 DB2 实例: 在“DB2 AIX 版、Solaris 操作环境版和 HP-UX 版服务器上: db2stop db2start 6.8.1.4 第 4 步:创建 Informix sqlhosts 文件 此文件指定每个 Informix 数据库服务器的位置以及该数据库服务器的连接类型(协议)。可有几种方式创建此文件。可从让 Informix Connect 或 Informix Client SDK 连接至 Informix 服务器的另一系统来复制它。还可在 DB2 服务器上配置 Informix Client SDK 以连接至 Informix 服务器,该服务器创建 sqlhosts 文件。 复制或创建 sqlhosts 文件之后,DB2 实例所有者应使用 Informix dbaccess (如果它在 DB2 服务器上)连接和查询 Informix 服务器。这允许在您尝试配置 DB2 Relational Connect 以使用 Informix Client SDK 之前,Informix Client SDK 能够连接至 Informix 服务器。 有关设置此文件的更多信息,参考 Informix 手册 Administrators Guide for Informix Dynamic Server。警告: 如果未在 sqlhosts 文件中定义 Informix 数据库服务器名,则当您执行的操作需要连接至 Informix 数据库服务器时,将接收到错误。 6.8.1.5 第 5 步:创建包装器 使用 CREATE WRAPPER 语句来指定将用来存取 Informix 数据源的包装器。包装器是联合系统用来与数据源进行通信以及从数据源中检索数据的机制。以下示例显示了 CREATE WRAPPER 语句: CREATE WRAPPER informix 其中,informix 是包装器名;informix 是与 Informix Client SDK 软件配合使用的缺省包装器名。 可以用您选择的名称来替代缺省包装器名。但是,如果这样做的话,则还必须在 CREATE WRAPPER 语句中包括 LIBRARY 参数以及联合服务器的包装器库的名称。有关包装器库名的更多信息,参见 DB2 SOL Reference 中的 CREATE WRAPPER 语句。 Informix 的包装器库名是: libinformix.a(AIX) libinformix.so(Solaris 操作环境) libinformix.sl(HP-UX) 6.8.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量 要在存取 Informix 数据源提高性能,应在联合服务器上设置 DB2_DJ_COMM 环境变量。此变量确定联合服务器初始化时是否装入包装器。将 DB2_DJ_COMM 环境变量设置为包括与您在先前步骤中指定的包装器相对应的包装器库。如果正在使用 Korn 外壳程序或 Bourne 外壳程序命令行界面,则使用下列导出命令: 在“DB2 AIX 版”服务器上: DB2_DJ_COMM='libinformix.a' export DB2_DJ_COMM 在“DB2 Solaris 操作环境版”服务器上: DB2_DJ_COMM='libinformix.so' export DB2_DJ_COMM 在“DB2 HP-UX 版”服务器上: DB2_DJ_COMM='libinformix.sl' export DB2_DJ_COMM 必须确保等号(=)两边都没有空格。 如果在使用 C 外壳程序命令行界面,则使用下列命令来设置环境变量: setenv DB2_DJ_COMM 'libinformix.a'(“DB2 AIX 版”服务器) setenv DB2_DJ_COMM 'libinformix.so'(“DB2 Solaris 操作环境版”服务器) setenv DB2_DJ_COMM 'libinformix.sl'(“DB2 HP--UX 版”服务器) 有关包装器库名和 DB2_DJ_COMM 环境变量的更多信息,参考 DB2 SQL Reference。 6.8.1.7 第 7 步:创建服务器 使用 CREATE SERVER 语句来定义想要存取其数据源的每个 Informix 服务器。此语句的语法为: CREATE SERVER server_name TYPE server_type VERSION server_version WRAPPER wrapper_name OPTIONS (NODE 'node_name', DBNAME 'database_name') 其中: server_name 是对 Informix 数据库服务器指定的名称。此名称必须是唯一的,并且不能与联合数据库中定义的任何其它服务器名重复。服务器名一定不能与联合数据库中的任何表空间的名称相同。 TYPE server_type 指定正在配置对它的存取的数据源的类型。 注意: 对于 Informix 包装器,server_type 必须是 informix。 VERSION server_version 是想要访问的 Informix 数据库服务器的版本。受支持的 Informix 版本有 5、7、8 和 9。 WRAPPER wrapper_name 是您在 CREATE WRAPPER 语句中指定的名称。 NODE 'node_name' 是 server_name 驻留的节点的名称。必须在 Informix sqlhosts 文件中定义 node_name(参见第 4 步)。尽管将 node_name 指定为 CREATE SERVER SQL 语句中的选项,但是它是 Informix 数据源所必需的。此值是区分大小写的。有关其它选项的信息,参见 DB2 SQL Reference。 DBNAME 'database_name' 是想要存取的 Informix 数据库的名称。 下面是 CREATE SERVER 语句的示例: CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix OPTIONS (NODE 'abc', DBNAME 'sales') FOLD_ID 和 FOLD_PW 服务器选项会影响包装器在将用户标识和密码发送至 Informix 之前是将它们转换为大写还是小写。带有 FOLD_ID 和 FOLD_PW 服务器选项的 CREATE SERVER 语句的示例为: CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix OPTIONS (NODE 'abc', DBNAME 'sales', FOLD_ID 'U', FOLD_PW 'U') 6.8.1.8 第 8 步:创建用户映射 如果 DB2 联合服务器上的用户标识或密码与 Informix 数据源上的用户标识或密码不同,则使用 CREATE USER MAPPING 语句来将本地用户标识映射为在 Informix 数据源中定义的用户标识和密码;例如: CREATE USER MAPPING FOR local_userid SERVER server_name OPTIONS (REMOTE_AUTHID 'remode_userid', REMOTE_PASSWORD 'remote_password') 其中: local_userid 是您正在映射为 Informix 数据源中定义的用户标识的本地用户标识。 SERVER server_name 在 CREATE SERVER 语句中定义的 Informix 数据源的名称。 REMOTE_AUTHID 'remote_userid' 是您正在将 local_userid 映射至的 Informix 数据库服务器上的用户标识。除非在 CREATE SERVER 语句中将 FOLD_ID 服务器选项设置为 'U' 或 'L',否则此值是区分大小写的。 REMOTE_PASSWORD 'remote_password' 是与 remote_userid 相关联的密码。除非在 CREATE SERVER 语句中将 FOLD_PW 服务器选项设置为 'U' 或 'L',否则,此值是区分大小写的。 下面是 CREATE USER MAPPING 语句的示例: CREATE USER MAPPING FOR robert SERVER asia OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night') 可以使用 DB2 专用寄存器 USER 来将发出 CREATE USER MAPPING 语句的人员的授权标识映射为在 REMOTE_AUTHID 用户选项中指定的数据源授权标识。下面是包括 USER 专用寄存器的 CREATE USER MAPPING 语句的示例: CREATE USER MAPPING FOR USER SERVER asia OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night') 有关其它选项的更多信息,参见 DB2 SQL Reference。 6.8.1.9 第 9 步:为表、视图和 Informix 同义词创建别名 为位于 Informix 数据源中的每个表、视图或 Informix 同义词指定别名。别名可长达 128 个字符。查询 Informix 数据源时将使用这些别名。除非用双引号(")将服务器、模式和表名引起来,否则,DB2 将把它们转换为大写。以下示例显示了 CREATE NICKNAME 语句: CREATE NICKNAME nickname FOR server_name."remote_schema_name"."remote_table_name" 其中: nickname 是用来标识 Informix 表、视图或同义词的唯一别名。 server_name."remote_schema_name"."remote_table_name" 是由三部分组成的表示远程对象的标识符。 server_name 是在 CREATE SERVER 语句中为 Informix 数据库服务器指定的名称。 remote_schema_name 是表、视图或同义词所属的远程模式的名称。 remote_table_name 是想要存取的远程表、视图或同义词的名称。 下面是 CREATE NICKNAME 语句的示例: CREATE NICKNAME salesjapan FOR asia."salesdata"."japan" 对想要为其创建别名的每个表或视图重复此步骤。创建别名时,DB2 将使用连接来查询数据源目录。此查询将测试您与数据源的连接。如果连接不工作,则将接收到错误消息。 有关 CREATE NICKNAME 语句的更多信息,参见 DB2 SQL Reference。有关一般别名和验证数据类型映射的更多信息,参见《DB2 管理指南》。 管理 部分目录 《管理指南》 7.1 提供的更新 《管理指南:计划》 8.1 第 8 章 物理数据库设计 8.1.1 表空间设计注意事项 8.1.1.1 当数据位于冗余独立磁盘阵列时优化表空间性能 8.1.2 分区键 8.2 附录 D 发行版之间的不兼容性 8.2.1 当检测到丢失连接时未返回错误 SQL30081N 8.2.2 导出实用程序要求修订包 7 或更新版本正确处理身份属性 8.3 附录 E 本地语言支持(NLS) 8.3.1 国家或地区代码和代码页支持 8.3.2 导入/导出/装入注意事项 — 对代码页 1394 和 5488 的限制 8.3.3 日期时间值 8.3.3.1 日期时间值的字符串表示法 8.3.3.2 日期字符串 8.3.3.3 时间字符串 8.3.3.4 时间戳记字符串 8.3.3.5 字符集注意事项 8.3.3.6 日期和时间格式 《管理指南:实现》 9.1 在 Windows 2000 和更新版本上指定 DMS 容器的新方法 9.2 “扩展控制中心”的示例 《管理指南:性能》 10.1 系统临时表模式 10.2 第 8 章 操作性能 10.2.1 基于块的缓冲池 10.2.1.1 基于块的缓冲池示例 10.3 第 10 章 通过添加处理器来调整配置 10.3.1 将节点添加至分区数据库时出现的问题 10.4 第 13 章 配置 DB2 10.4.1 日志归档完成情况现在检查得更频繁 10.5 DB2 注册表和环境变量 10.5.1 对性能变量的更正 10.5.2 注册表变量 DB2BPVARS 的新参数 10.5.3 对其它注册表变量的更正和补充 10.5.4 对常规注册表变量的更正和补充 《卫星管理指南和参考》 11.1 将版本 7.2 DB2 个人版和 DB2 工作组版设置为卫星 11.1.1 先决条件 11.1.1.1 安装注意事项 11.1.2 配置版本 7.2 系统以进行同步 11.1.3 在版本 6 企业版系统上安装修订包 2 或更高版本 11.1.3.1 升级版本 6 DB2 企业版以用作 DB2 控制服务器 11.1.4 升级版本 6 控制中心和卫星管理中心 命令参考 12.1 提供的更新 12.2 db2updv7 — 将数据库更新为版本 7 当前修正级别 12.3 ARCHIVE LOG 使用说明的附加上下文 12.4 REBIND Missing value 12.5 db2inidb — 初始化镜像数据库 12.5.1 使用信息 12.6 db2relocatedb(新命令) db2relocatedb — 重定位数据库 12.7 db2move 数据库移动工具 12.8 GET ROUTINE 命令中的附加选项 GET ROUTINE 12.9 CREATE DATABASE 《数据恢复和高可用性指南与参考》 13.1 联机提供的《数据恢复和高可用性指南与参考》 13.2 新的归档记录行为 13.3 如何使用暂挂的 I/O 来进行数据库恢复 13.4 LOGRETAIN=CAPTURE 时的新备份与复原行为 13.5 增量备份与恢复 — 附加信息 13.6 NEWLOGPATH2 现在称为 DB2_NEWLOGPATH2 13.7 为 AIX 或 Solaris 操作环境上的 DB2 Data Links Manager 选择备份方法 13.8 Tivoli Storage Manager — LAN 自由数据传送 Data Movement Utilities Guide and Reference 14.1 导出实用程序现在完全支持扩展的身份值 14.2 导出、导入和装入对 LOB 文件处理的更改 14.2.1 IXF 注意事项 14.3 对导入、导出和装入实用程序的代码页支持 14.4 Chapter 2. Import 14.4.1 Using Import with Buffered Inserts 14.5 Chapter 3. Load 14.5.1 Pending States After a Load Operation 14.5.2 装入局限性与限制 14.5.3 totalfreespace 文件类型修饰符 14.6 Chapter 4. AutoLoader 14.6.1 认证设置为 YES 时,运行 AutoLoader 需要 rexecd 14.7 在 4.3.3 之前的 AIX 系统上,AutoLoader 在派生期间可能会挂起 14.8 Appendix C. Export/Import/Load Utility File Formats Replication Guide and Reference 15.1 复制和非 IBM 服务器 15.2 在 Windows 2000 上进行复制 15.3 保存 SQL 文件时的已知错误 15.4 DB2 维护 15.5 Web 上的数据差异实用程序 15.6 Chapter 3. Data Replication Scenario 15.6.1 复制方案 15.7 Chapter 5. Planning for Replication 15.7.1 表和列名 15.7.2 DATALINK 复制 15.7.3 LOB 局限性 15.7.4 Planning for Replication 15.8 Chapter 6. Setting up Your Replication Environment 15.8.1 随处更新先决条件 15.8.2 设置复制环境 15.9 Chapter 8. Problem Determination 15.10 Chapter 9. Capture and Apply for AS/400 15.11 Chapter 10. Capture and Apply for OS/390 15.11.1 Prerequisites for DB2 DataPropagator for OS/390 15.11.2 UNICODE and ASCII Encoding Schemes on OS/390 15.11.2.1 Choosing an Encoding Scheme 15.11.2.2 Setting Encoding Schemes 15.12 Chapter 11. Capture and Apply for UNIX platforms 15.12.1 为 UNIX 和 Windows 上的 Capture 和 Apply 设置环境变量 15.13 Chapter 14. Table Structures 15.14 Chapter 15. Capture and Apply Messages 15.15 Appendix A. Starting the Capture and Apply Programs from Within an Application System Monitor Guide and Reference 16.1 db2ConvMonStream Troubleshooting Guide 17.1 在用户未登录的情况下在 Windows 95、Windows 98 和 Windows ME 上启动 DB2 17.2 Chapter 1. Good Troubleshooting Practices 17.2.1 问题分析和环境收集工具 17.2.1.1 收集输出 17.2.1.2 查看 detailed_system_info.html 17.2.1.3 一次一页地查看“DB2 支持工具”语法 17.3 Chapter 2. Troubleshooting the DB2 Universal Database Server 17.4 Chapter 8. Troubleshooting DB2 Data Links Manager 17.5 Chapter 15. Logged Information 17.5.1 收集基于 UNIX 的系统上的堆栈回溯信息 在 64 位的平台上使用“DB2 通用数据库” 18.1 第 5 章 配置 18.1.1 LOCKLIST 18.1.2 shmsys:shminfo_shmmax 18.2 第 6 章 限制 XML Extender 管理和编程 MQSeries 20.1 “DB2 MQSeries 函数”的安装和配置 20.1.1 安装 MQSeries 20.1.2 安装 MQSeries AMI 20.1.3 启用 DB2 MQSeries 函数 20.2 MQSeries 消息传递样式 20.3 消息结构 20.4 MQSeries 函数概述 20.4.1 限制 20.4.2 错误代码 20.5 使用方案 20.5.1 基本消息传递 20.5.2 发送消息 20.5.3 检索消息 20.5.4 应用程序间的连接 20.5.4.1 请求/应答通信 20.5.4.2 发布/预订 20.6 enable_MQFunctions enable_MQFunctions 20.7 disable_MQFunctions disable_MQFunctions 《管理指南》 7.1 提供的更新 在“修订包 4”中已对《管理指南》作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息:http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 《管理指南:计划》 8.1 第 8 章 物理数据库设计 8.1.1 表空间设计注意事项 8.1.1.1 当数据位于冗余独立磁盘阵列时优化表空间性能 DB2_PARALLEL_IO DB2_PARALLEL_IO 还会影响定义了多个容器的表空间。如果不设置注册表变量,则 I/O 并行度等于表空间中的容器数目。如果设置注册表变量,则 I/O 并行度等于预取装大小除以数据块大小得到的结果。如果表空间中的个别容器在多个物理磁盘中进行了条带化,则您可能想设置注册表变量。 例如,表空间中有两个容器,并且预取装大小是数据块大小的四倍。如果未设置注册表变量,则对此表空间的预取装请求将分为两个请求(每个请求将针对两个数据块)。假定这些预取装程序可用,则两个预取装程序可以并行处理这些请求。在设置了注册表变量的情况下,此表空间的预取装请求将分为四个请求(每个数据块一个请求),并且有可能四个预取装程序并行处理请求。 在此示例中,如果这两个容器中的每一个都有单个磁盘供它们专用,则对此表空间设置注册表变量可能会导致在这些磁盘上发生争用,原因是两个预取装程序将同时存取这两个磁盘中的每一个磁盘。然而,如果这两个容器在多个磁盘上进行了条带化,则设置注册表变量将潜在地允许同时存取四个不同的磁盘。 8.1.2 分区键 在『设计节点组』这一节的『节点组设计注意事项』这一小节中,『分区键』这一小节中的下列文本指出在定义仅当 DB2_UPDATE_PART_KEY=ON 时才应该删除的分区键时应考虑的事项: 注意: 如果 DB2_UPDATE_PART_KEY=OFF,则限制仍然适用。 注意: 在修订包 3 和更新版本中,缺省值为 OFF。 不能更新表中的行的分区键列值。 只能删除或插入分区键列值。 8.2 附录 D 发行版之间的不兼容性 8.2.1 当检测到丢失连接时未返回错误 SQL30081N 通过检查错误 SQL30081N 来检测是否与数据库服务器失去连接的应用程序在迁移到“DB2 通用数据库版本 6”或更高版本之后将不再检测失去的连接。 8.2.2 导出实用程序要求修订包 7 或更新版本正确处理身份属性 为了使导出实用程序支持所有身份属性(例如,最小值、最大值、周期、次序和注释),必须在最低级别(即,修订包 7)运行客户机和服务器。如果客户机或服务器不是至少处于此级别,则虽然导出实用程序将仍然起作用,但是它将不能解释这些属性。 8.3 附录 E 本地语言支持(NLS) 8.3.1 国家或地区代码和代码页支持 在“受支持的语言”和“代码集”表中,代码页 5488 也称为 GB 18030,而代码页 1394 也称为 ShiftJIS X0213。 不支持从 UTF-8(代码页 1208)客户机至非 Unicode 数据库的连接。 8.3.2 导入/导出/装入注意事项 — 对代码页 1394 和 5488 的限制 通过使用装入或导入实用程序,可以将代码页 1394(ShiftJIS X0213)和 5488(GB 18030)中的数据移到 Unicode 数据库中。可以使用导出实用程序来将数据从 Unicode 数据库移到代码页 1394 和 5488 中的数据文件中。 由于只支持 Unicode 客户机与 Unicode 服务器之间的连接,所以,在使用装入、导入或导出实用程序之前,需要使用 Unicode 客户机或将 DB2 注册表变量 DB2CODEPAGE 设置为 1208。 从代码页 1394 或 5488 转换为 Unicode 可能会导致扩充。例如,双字节字符在 GRAPHIC 列中可以存储为两个 16 位 Unicode 字符。需要确保 Unicode 数据库中的目标列足够宽,以包含任何扩充的 Unicode 字节。 8.3.3 日期时间值 8.3.3.1 日期时间值的字符串表示法 数据类型为 DATE、TIME 或 TIMESTAMP 的值是以对 SQL 用户透明的内部格式表示的。但也可以用字符串来表示日期、时间和时间戳记,并且这些表示法会直接影响到 SQL 用户,因为没有任何常量或变量的数据类型为 DATE、TIME 或 TIMESTAMP。因此,为了便于检索,必须为字符串变量指定日期时间值。与客户机的国家/地区代码关联的日期时间值的缺省格式通常为字符串表示法,除非它在程序进行预编译或者绑定至数据库时被 DATETIME 格式选项的规范所覆盖。 在对内部日期时间值的操作中使用了日期时间值的有效字符串表示法时,在执行该操作之前,字符串表示法被转换成日期、时间或时间戳记的内部格式。在下列各节中定义了日期时间值的有效字符串表示法。 注意: 仅在 Unicode 数据库中才支持日期时间值的图形字符串表示法。 8.3.3.2 日期字符串 日期的字符串表示法是以数字开头的字符串,其长度至少为 8 个字符。可以包含结尾空白;在日期的月份部分和日部分可以省略前导零。 表“日期的字符串表示法的格式”保持不变。 8.3.3.3 时间字符串 时间的字符串表示法是以数字开头的字符串,其长度至少为 4 个字符。可以包含结尾空白;在时间的小时部分可以省略前导零,并且可以省略整个秒部分。如果选择省略秒部分,则假定采用隐式规范,即,0 秒。因此,13:30 等价于 13:30:00。 表“时间的字符串表示法的格式”保持不变。 8.3.3.4 时间戳记字符串 时间戳记的字符串表示法是以数字开头的字符串,其长度至少为 16 个字符。时间戳记的完整字符串表示法的格式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。可以包含结尾空白;在时间戳记的月份、日、小时部分可以省略前导零,而毫秒部分可以截断或完全省略。如果选择省略毫秒部分的任何数字,则假定采用隐式规范,即,0。因此,1991-3-2-8.30.00 等价于 1991-03-02-08.30.00.000000。 8.3.3.5 字符集注意事项 日期和时间戳记字符串必须只包含数字和定界符。 8.3.3.6 日期和时间格式 与应用程序的国家/地区代码相关联的日期时间值的缺省格式是日期和时间格式的字符串表示法。在程序进行预编译或者绑定至数据库时可以通过指定 DATETIME 格式选项来覆盖此缺省格式。 《管理指南:实现》 9.1 在 Windows 2000 和更新版本上指定 DMS 容器的新方法 在 Windows 2000 和更新版本的系统上,DB2 现在使用新方法来指定 DMS 原始表空间。在创建时,为每个基本磁盘分区或动态卷都指定了全局唯一标识符(GUID)。当在表空间定义中指定容器时,可以将 GUID 用作设备标识符。因为 GUID 在系统中是唯一的,所以对于每个节点,多节点配置都具有唯一 GUID,即使磁盘分区定义是相同的。 已经提供了一个称为 db2listvolumes.exe 的工具来帮助显示在 Windows 系统上定义的所有磁盘卷的 GUID。该工具在当前目录中创建您正在运行的两个文件。一个文件 volumes.xml 中包含有关每个磁盘卷的信息。它是为了在任何启用了 XML 的浏览器中更容易查看而设计的。另一个文件 tablespace.ddl 包含指定表空间容器的必需语法。在使用 tablespace.ddl 之前,必须将它更新为包含表空间定义所需要的其余信息。 db2listvolumes 工具不需要任何命令行自变量。 9.2 “扩展控制中心”的示例 在“扩展控制中心”附录中显示的示例是不正确的,将不起作用。而是通过以下信息来使用 Java 示例: 样本程序 PluginEx.java 位于 samples/java 子目录中。PluginEx.java 是随“DB2 应用程序开发”客户机一起安装的。要编译 PluginEx.java,classpath 中必须包括下列内容: 在 Windows 平台上使用: DRIVE: \sqllib\java\swingall.jar DRIVE: \sqllib\cc\com.jar DRIVE: \sqllib\cc 其中,DRIVE 表示 DB2 所安装在的驱动器。 在 UNIX 平台上使用: /u/db2inst1/sqllib/java/swingall.jar /u/db2inst1/sqllib/cc 其中,/u/db2inst1 表示 DB2 的安装目录。 创建 db2plug.zip 来包括在编译 PluginEx.java 时所生成的所有类。不能压缩该文件。例如,发出以下命令: zip -r0 db2plug.zip PluginEx*.class 此命令将所有类文件都压缩到 db2plug.zip 文件中,并保留相对路径信息。 遵循 PluginEx.java 文件中的指示信息来编译和运行示例。 CCObject 接口中包含的静态常量比《管理指南》的『扩展控制中心』附录中列示的静态常量要多。以下是用于扩展“控制中心”的 Java 接口(CCExtension、CCObject、CCM enuAction 和 CCToolBarAction)。此处列示这些接口仅供参考。 CCExtension: // Licensed Materials -- Property of IBM // // (c) Copyright International Business Machines Corporation, 1999. // All Rights Reserved. // // US Government Users Restricted Rights - // Use, duplication or disclosure restricted by // GSA ADP Schedule Contract with IBM Corp. // package com.ibm.db2.tools.cc.navigator; /** * The CCExtension interface allows users to extend the Control Center user * interface by adding new toolbar buttons, new menu items and * remove some predefined set of existing menu actions. * * To do so, create a java file which imports the * com.ibm.db2.tools.cc.navigator package and implements this interface. * The new file provides the implementation of the getObjects() and * getToolbarActions() function. * * The getObjects() function returns an array of CCObjects which defines * the existing * objects which the user would like to add new menu actions or remove * the alter or configure menu actions. * * The getToolbarActions() function returns an array of CCToolbarActions * which is added to the Control Center main toolbar. * * A single CCExtension subclass file or multiple CCExtension subclass * files can be used to define the Control Center extensions. In order * for the Control Center to make use of these extensions, use the * following setup procedures: * (1) Create a "db2plug.zip" file which contains all the CCExtension * subclass files. The files should not be compressed. For example, * if the CCExtension files are in the plugin package and they are * located in the plugin directory, issue * zip -r0 db2plug.zip plugin\*.class * This command will put all the plugin package class files into the * db2plug.zip file and preserve their relative path information. * (2) To run WEBCC as an applet, put the db2plug.zip file in where the * tag points to in the WEBCC html file. * To run the Control Center as an application, put * the db2plug.zip in a directory pointed to by the CLASSPATH * envirnoment variable and where the Control Center is run. * * For browsers that support multiple archives, just add "db2plug.zip" * to the archive list of the WEBCC html page. Otherwise, all the * CCExtension, CCObject, CCToolbarAction, CCMenuAction subclass files * will have to be in their relative path depending on which package * they belong to. */ public interface CCExtension { /** * Get an array of CCObject subclass objects which define * a list of objects to be overrided in the * Control Center * @return CCObject[] CCObject subclass objects array */ public CCObject[] getObjects(); /** * Get an array of CCToolbarAction subclass objects which represent * a list of buttons to be added to the Control Center * main toolbar. * @return CCToolbarAction[] CCToolbarAction subclass objects array */ public CCToolbarAction[] getToolbarActions(); } CCObject CCObject: // // Licensed Materials -- Property of IBM // // (c) Copyright International Business Machines Corporation, 1999. // All Rights Reserved. // // US Government Users Restricted Rights - // Use, duplication or disclosure restricted by // GSA ADP Schedule Contract with IBM Corp. // package com.ibm.db2.tools.cc.navigator; /** * The CCObject interface allows users to define a new object to be * inserted into the Control Center tree or changing the behavior of the * menu actions of an existing object. */ public interface CCObject { /** * The following static constants defines a list of object type * available to be added to the Control Center tree. */ public static final int UDB_SYSTEMS_FOLDER = 0; public static final int UDB_SYSTEM = 1; public static final int UDB_INSTANCES_FOLDER = 2; public static final int UDB_INSTANCE = 3; public static final int UDB_DATABASES_FOLDER = 4; public static final int UDB_DATABASE = 5; public static final int UDB_TABLES_FOLDER = 6; public static final int UDB_TABLE = 7; public static final int UDB_TABLESPACES_FOLDER = 8; public static final int UDB_TABLESPACE = 9; public static final int UDB_VIEWS_FOLDER = 10; public static final int UDB_VIEW = 11; public static final int UDB_ALIASES_FOLDER = 12; public static final int UDB_ALIAS = 13; public static final int UDB_TRIGGERS_FOLDER = 14; public static final int UDB_TRIGGER = 15; public static final int UDB_SCHEMAS_FOLDER = 16; public static final int UDB_SCHEMA = 17; public static final int UDB_INDEXES_FOLDER = 18; public static final int UDB_INDEX = 19; public static final int UDB_CONNECTIONS_FOLDER = 20; public static final int UDB_CONNECTION = 21; public static final int UDB_REPLICATION_SOURCES_FOLDER = 22; public static final int UDB_REPLICATION_SOURCE = 23; public static final int UDB_REPLICATION_SUBSCRIPTIONS_FOLDER = 24; public static final int UDB_REPLICATION_SUBSCRIPTION = 25; public static final int UDB_BUFFERPOOLS_FOLDER = 26; public static final int UDB_BUFFERPOOL = 27; public static final int UDB_APPLICATION_OBJECTS_FOLDER = 28; public static final int UDB_USER_DEFINED_DISTINCT_DATATYPES_FOLDER = 29; public static final int UDB_USER_DEFINED_DISTINCT_DATATYPE = 30; public static final int UDB_USER_DEFINED_DISTINCT_FUNCTIONS_FOLDER = 31; public static final int UDB_USER_DEFINED_DISTINCT_FUNCTION = 32; public static final int UDB_PACKAGES_FOLDER = 33; public static final int UDB_PACKAGE = 34; public static final int UDB_STORE_PROCEDURES_FOLDER = 35; public static final int UDB_STORE_PROCEDURE = 36; public static final int UDB_USER_AND_GROUP_OBJECTS_FOLDER = 37; public static final int UDB_DB_USERS_FOLDER = 38; public static final int UDB_DB_USER = 39; public static final int UDB_DB_GROUPS_FOLDER = 40; public static final int UDB_DB_GROUP = 41; public static final int UDB_DRDA_TABLES_FOLDER = 42; public static final int UDB_DRDA_TABLE = 43; public static final int UDB_NODEGROUPS_FOLDER = 44; public static final int UDB_NODEGROUP = 45; public static final int S390_SUBSYSTEMS_FOLDER = 46; public static final int S390_SUBSYSTEM = 47; public static final int S390_BUFFERPOOLS_FOLDER = 48; public static final int S390_BUFFERPOOL = 49; public static final int S390_VIEWS_FOLDER = 50; public static final int S390_VIEW = 51; public static final int S390_DATABASES_FOLDER = 52; public static final int S390_DATABASE = 53; public static final int S390_TABLESPACES_FOLDER = 54; public static final int S390_TABLESPACE = 55; public static final int S390_TABLES_FOLDER = 56; public static final int S390_TABLE = 57; public static final int S390_INDEXS_FOLDER = 58; public static final int S390_INDEX = 59; public static final int S390_STORAGE_GROUPS_FOLDER = 60; public static final int S390_STORAGE_GROUP = 61; public static final int S390_ALIASES_FOLDER = 62; public static final int S390_ALIAS = 63; public static final int S390_SYNONYMS_FOLDER = 64; public static final int S390_SYNONYM = 65; public static final int S390_APPLICATION_OBJECTS_FOLDER = 66; public static final int S390_COLLECTIONS_FOLDER = 67; public static final int S390_COLLECTION = 68; public static final int S390_PACKAGES_FOLDER = 69; public static final int S390_PACKAGE = 70; public static final int S390_PLANS_FOLDER = 71; public static final int S390_PLAN = 72; public static final int S390_PROCEDURES_FOLDER = 73; public static final int S390_PROCEDURE = 74; public static final int S390_DB_USERS_FOLDER = 75; public static final int S390_DB_USER = 76; public static final int S390_LOCATIONS_FOLDER = 77; public static final int S390_LOCATION = 78; public static final int S390_DISTINCT_TYPES_FOLDER = 79; public static final int S390_DISTINCT_TYPE = 80; public static final int S390_USER_DEFINED_FUNCTIONS_FOLDER = 81; public static final int S390_USER_DEFINED_FUNCTION = 82; public static final int S390_TRIGGERS_FOLDER = 83; public static final int S390_TRIGGER = 84; public static final int S390_SCHEMAS_FOLDER = 85; public static final int S390_SCHEMA = 86; public static final int S390_CATALOG_TABLES_FOLDER = 87; public static final int S390_CATALOG_TABLE = 88; public static final int DCS_GATEWAY_CONNECTIONS_FOLDER = 89; public static final int DCS_GATEWAY_CONNECTION = 90; public static final int S390_UTILITY_OBJECTS_FOLDER = 91; public static final int S390_DATASET_TEMPLATES_FOLDER = 92; public static final int S390_DATASET_TEMPLATE = 93; public static final int S390_UTILITY_LISTS_FOLDER = 94; public static final int S390_UTILITY_LIST = 95; public static final int S390_UTILITY_PROCEDURES_FOLDER = 96; public static final int S390_UTILITY_PROCEDURE = 97; /** * Total number of object types */ public static final int NUM_OBJECT_TYPES = 98; /** * Get the name of these object * * The function returns the name of this object. This name * can be of three types: * (1) Fully qualified name * Syntax: xxxxx-yyyyy-zzzzz * where xxxxx-yyyyy is the fully quality name of the parent * object and zzzzz is the name of the new object. * Note: Parent and child object name is separated by '-' character. * If a schema name is required to identify object, the fully * qualified name is represented by xxxxx-yyyyy-wwwww.zzzzz * where wwwww is the schema name. * Only the behavior of the object that match this fully * quality name will be affected. * (2) Parent fully qualified name * Syntax: xxxxx-yyyyy * where xxxxx-yyyyy is the fully qualified name of the * parent object. * When the object type is folder (ie. DATABASES_FOLDER), the * getName() should only return the fully qualified name of the * folder's parent. * Only the behavior of the object that match this name * and the specific type return by the getType() function will be * affected. * (3) null * Syntax: null * If null is return, the CCMenuActions returns by the * getMenuActions() call will be applied to all objects of type * returns by the getType() call. * @return String object name */ public String getName(); /** * Get the type of this object * @return int return one of the static type constants defined in this * interface */ public int getType(); /** * Get the CCMenu Action array which defines the list of menu actions * to be created for object * return CCMenuAction[] CCMenuAction array */ public CCMenuAction[] getMenuActions(); /** * Check if this object is editable. If not, the Alter related menu * items will be removed from the object's popup menu * return boolean If false, the Alter menu item will be remove from the * object's popup menu. * Return true if you do not wish to modify current Alter menu item * behaviour. */ public boolean isEditable(); /** * Check if this object is configurable. If not, the configuration * related menu items will be removed from the object's popup menu * return boolean If false, the Configuration related menu item will be * removed from the object's popup menu. * Return true if you do not wish to modify current Configuration * behaviour. */ public boolean isConfigurable(); } CCMenuAction: // // Licensed Materials -- Property of IBM // // (c) Copyright International Business Machines Corporation, 1999. // All Rights Reserved. // // US Government Users Restricted Rights - // Use, duplication or disclosure restricted by // GSA ADP Schedule Contract with IBM Corp. // package com.ibm.db2.tools.cc.navigator; import java.awt.event.*; import javax.swing.*; /** * The CCMenuAction class allows users to define a new menu item to be added * to a Control Center object. The new menu item will be added at the end of * an object's popup menu. * * Note: If the object has a Control Center Refresh and/or * Filter menu item, the new menu item will be inserted before the Refresh * and Filter menu. The Control Center Refresh and Filter menu items are * always at the end of the popup menu. */ public interface CCMenuAction { /** * Get the name of this action * @return String Name text on the menu item */ public String getMenuText(); /** * Invoked when an action occurs. * @param e Action event */ public void actionPerformed(ActionEvent e); } CCToolBarAction // Licensed Materials -- Property of IBM // // (c) Copyright International Business Machines Corporation, 1999. // All Rights Reserved. // // US Government Users Restricted Rights - // Use, duplication or disclosure restricted by // GSA ADP Schedule Contract with IBM Corp. // package com.ibm.db2.tools.cc.navigator; import java.awt.event.*; import javax.swing.*; /** * The CCToolbarAction interface class allows users to define a new action * to be added to the Control Center toolbar. */ public interface CCToolbarAction { /** * Get the name of this action * @return String Name text on the menu item, or toolbar button hover help */ public String getHoverHelpText(); /** * Get the icon for the toolbar button * Any toolbar CCAction should override this function and return * a valid ImageIcon object. Otherwise, the button will have no icon. * @return ImageIcon Icon to be displayed */ public ImageIcon getIcon(); /** * Invoked when an action occurs. * @param e Action event */ public void actionPerformed(ActionEvent e); } 《管理指南:性能》 10.1 系统临时表模式 系统临时表的模式是由创建它的应用程序和授权标识来确定的。当此数据可用时,创建表所采用的模式为 。在某些情况下,只使用这些标识中的一个来创建表以确定模式,而在某些情况下则根本不会使用任何标识。这可能会产生 AUTHID.TEMPTABLENAME 或 .TEMPTABLENAME 之类的表。可以使用 GET SNAPSHOT 命令来查看这些表的模式信息。有关此命令的信息,请参考 命令参考 10.2 第 8 章 操作性能 10.2.1 基于块的缓冲池 只有“Sun Solaris 操作环境”才支持此功能部件。 由于存在 I/O 开销,所以从磁盘中预取装页面是一种代价很高的操作。当处理可以与 I/O 重叠时,DB2 的预取装极大地提高了吞吐量。大多数平台都提供了高性能原语来将磁盘中的相邻页读取到内存中不相邻的部分。这些原语通常称为“分散读取”或者“向量化 I/O”。在某些平台上,这些原语的性能无法与在较大块大小中执行 I/O 时的性能竞争。缺省情况下,缓冲池是基于页的。即,磁盘上的相邻页将预取装到内存中不相邻的页中。如果可以将磁盘中的页面读取到缓冲池的相邻页面中,则可以进一步提高这些平台上的预取装性能。注册表变量 DB2_BLOCK_BASED_BP 允许您在缓冲池中创建分区来保存多组相邻页。这些相邻页组又称为“块”。通过设置此注册表变量,顺序预取装会将磁盘中的页面直接读取到这些块中,而不是个别地读取每一页。这将提高 I/O 性能。有关此注册表变量的更多信息,参见《管理指南》的『注册表变量与环境变量』一节。 可以将不同数据块大小的多个表空间绑定至相同块大小的缓冲池。虽然数据块大小和块大小是不同的概念,但是它们之间存在密切的关系。数据块是在表空间在多个容器中条带化时所采用的粒度。块是 I/O 服务器执行顺序预取装请求时,将考虑执行基于块的 I/O 所采用的唯一粒度。 个别顺序预取装请求使用数据块大小页。接收到这样的预取装请求时,I/O 服务器将确定以基于块的 I/O 方式(如果在缓冲池中具有基于块的区域)执行每个请求的成本和好处,而不是使用分散读取方法使用基于页的 I/O 执行请求时的成本和好处。将任何 I/O 作为基于块的 I/O 来执行的好处是可以提高从相邻磁盘读取到相邻内存中的性能。成本是使用此方法时产生的浪费的缓冲池的量。 执行基于块的 I/O 时,可能会因两种原因而浪费缓冲池内存: 预取装请求中的页数包含的页数比块中的页数要少。即,数据块大小小于块大小。 作为预取装请求的一部分请求的某些页已经在缓冲池的页面区域中。 注意: 不能再划分缓冲池的基于块的区域中的每个块。块中的页面必须都是相邻的。因此,可能会浪费空间。 I/O 服务器允许每个块中都有一些浪费的页面,以获得执行基于块的 I/O 的好处。然而,如果块中浪费的页面太多,I/O 服务器将转而使用基于页面的预取装进至缓冲池的页面区域。因此,在预取装期间完成的某些 I/O 将不是基于块的。这不是最佳情况。 要获得最佳性能,应该将具有相同数据块大小的表空间绑定至具有相同块大小的缓冲池。如果某些表空间的数据块大小大于它们所绑定至的缓冲池的块大小,则仍然可以获得良好的性能。当数据块大小小于块大小时,建议不要将表空间绑定至缓冲池。 注意: 缓冲池的块区域仅用于顺序预取装。如果系统上几乎或根本没有涉及顺序预取装,则块区域将是缓冲池的浪费部分。 不能同时对缓冲池设置 AWE 和基于块的支持。如果 DB2_AWE 和 DB2_BLOCK_BASED_BP 注册表变量指向同一缓冲池,则 AWE 将具有优先权。在此情况下,将禁用基于块的支持,并且将仅在禁用了 AWE 时才重新启用该支持。 使用扩展存储器的缓冲池不支持基于块的 I/O。 10.2.1.1 基于块的缓冲池示例 在使用任何示例之前,需要知道表示系统上的缓冲池的标识符。可以在 BUFFERPOOLID 列或 SYSCAT.BUFFERPOOLS 系统目录视图中看到缓冲池的标识。 方案 1 假设您具有一个 1000 页的标识为 4 的缓冲池。而您想创建一个由 700 页组成的块区域,并且每个块包含 32 页。因此,您必须运行以下命令: db2set DB2_BLOCK_BASED_BP=4,700,32 启动数据库时,将创建标识为 4 的缓冲池,其块区域为 672 页,页区域为 328 页。在此示例中,32 不能整除 700。这意味着,需要使用以下公式来将指定的块区域大小降低到最接近的块大小边界: ((块区域大小)) FLOOR(-----------------) X 块大小 ((块大小)) ( 700 ) = FLOOR(-----------------) X 32 ( 32 ) = 21 x 32 = 672 方案 2 假设您具有一个 3000 页的标识为 11 的缓冲池。而您想创建一个由 2700 页组成的块区域。因此,您必须运行以下命令: db2set DB2_BLOCK_BASED_BP=11,2700 启动数据库时,将创建标识为 11 的缓冲池,其块区域为 2688 页,页区域为 312 页。如果没有明确给定块大小,则使用缺省值 32。在此示例中,32 不能整除 2700。这意味着,需要使用以下公式来将指定的块区域大小降低到最接近的块大小边界: ((块区域大小)) FLOOR(-----------------) X 块大小 ((块大小)) ( 2700 ) = FLOOR(-----------------) X 32 ( 32 ) = 84 x 32 = 2688 10.3 第 10 章 通过添加处理器来调整配置 10.3.1 将节点添加至分区数据库时出现的问题 将节点添加至一个分区数据库(该数据库具有一个或多个系统临时表空间,其页大小不同于缺省页大小(4 KB))时,您可能会遇到错误消息“SQL6073N“添加节点”操作失败”和一个 SQLCODE。发生这种情况的原因是创建该节点时仅存在页大小为 4 KB 的 IBMDEFAULTBP 缓冲池。 例如,可使用 db2start 命令,将节点添加至当前分区数据库: DB2START NODENUM 2 ADDNODE HOSTNAME newhost PORT 2 如果分区数据库具有页大小为缺省页大小的系统临时表空间,会返回以下消息: SQL6075W“启动数据库管理器”操作成功地添加了该节点。 该节点在停止并再次启动所有节点之前将处于不活动状态。 但是,如果分区数据库的系统临时表空间的页大小不是缺省值页大小,会返回以下消息: SQL6073N“添加节点”操作失败。SQLCODE = "<-902>" 在类似的示例中,可在用新节点描述手工更新 db2nodes.cfg 文件后使用 ADD NODE 命令。在对具有系统临时表空间(其页大小为缺省页大小)的分区数据库编辑该文件和运行 ADD NODE 命令之后,将返回以下消息: DB20000I ADD NODE 命令成功完成。 但是,如果分区数据库的系统临时表空间的页大小不是缺省值页大小,会返回以下消息: SQL6073N“添加节点”操作失败。SQLCODE = "<-902>" 防止上述问题的一种方法是在发出 db2start 或 ADD NODE 命令之前运行: DB2SET DB2_HIDDENBP=16 此注册表变量使 DB2 能够分配每个池为 16 页(所使用的页大小与缺省页大小不同)的隐藏缓冲池。因此 ADD NODE 操作能够成功完成。 避免这些问题的另一方法是在 ADD NODE 或 db2start 命令上指定 WITHOUT TABLESPACES 子句。在进行此操作之后,必须使用 CREATE BUFFERPOOL 语句来创建缓冲池,并使用 ALTER TABLESPACE 语句来将系统临时表空间与缓冲池相关联。 在将节点添加至这样的节点组时,该节点组的一个或多个表空间的页大小不同于缺省页大小(4 KB),可能会遇到以下错误消息:“SQL0647N 缓冲池 "" 当前处于不活动状态。”。发生这种情况的原因是尚未对这些表空间激活在新节点上创建的非缺省页大小缓冲池。 例如,可使用 ALTER NODEGROUP 语句,将节点添加至节点组: DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) 如果节点组具有页大小为缺省页大小的表空间,会返回以下消息: SQL1759W 需要重新分布节点组以更改节点组“”中对象的数据定位, 以包括某些添加的节点或排除某些删除的节点。 但是,如果节点组具有页大小不为缺省页大小的表空间,则返回的消息为: SQL0647N 缓冲池 "" 当前处于不活动状态。 避免此问题的一个方法是对每种页大小创建一些缓冲池,然后在发出 ALTER NODEGROUP 语句之前重新连接数据库: DB2START CONNECT TO mpp1 CREATE BUFFERPOOL bp1 SIZE 1000 PAGESIZE 8192 CONNECT RESET CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) 防止该问题出现的第二种方法是在发出 db2start 命令、CONNECT 和 ALTER NODEGROUP 语句之前运行: DB2SET DB2_HIDDENBP=16 。 在 ALTER TABLESPACE 语句用来将表空间添加至节点时,可能会出现另一个问题。例如: DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2) 这一系列命令和语句会生成错误消息 SQL0647N(而非期望的消息 SQL1759W)。 要正确地完成此更改,应在执行 ALTER NODEGROUP... WITHOUT TABLESPACES 语句之后重新连接数据库。 DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES CONNECT RESET CONNECT TO mpp1 ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2) 防止该问题的另一种方法是在发出 db2start 命令、CONNECT、ALTER NODEGROUP 和 ALTER TABLESPACE 语句之前运行: DB2SET DB2_HIDDENBP=16 10.4 第 13 章 配置 DB2 10.4.1 日志归档完成情况现在检查得更频繁 为了通过避免不必要的日志归档请求来缩短恢复时间,现在,当创建新日志文件和首次更改活动日志时,数据库服务器读会检查日志归档完成情况。 10.5 DB2 注册表和环境变量 10.5.1 对性能变量的更正 表 5. 性能变量 变量名 操作系统 值 描述 DB2_BINSORT 所有 缺省值 = NO 值:YES 或 NO 启用一种新的排序算法来减少排序的 CPU 时间和经过时间。这种新算法将 DB2 UDB 的特别有效的整数排序技术扩展到所有排序数据类型,例如 BIGINT、CHAR、VARCHAR、FLOAT、DECIMAL 以及这些数据类型的组合。要启用此新算法,使用以下命令: db2set DB2_BINSORT = yes DB2_BLOCK_BASED_BP Solaris 操作环境 缺省值 = 无 值:取决于参数 指定在缓冲池内创建块区域所需要的值。缓冲池的标识是必需的,并且可以在 SYSCAT.BUFFERPOOLS 系统目录视图的 BUFFERPOOLID 列中看到。必须给定缓冲池中要分配给基于块的 I/O 的页数。要包括在块中的页数是可选的,缺省值为 32。 使用此注册表变量的格式为: DB2_BLOCK_BASED_BP=BUFFER POOL ID,BLOCK AREA SIZE,[BLOCK SIZE];... 通过使用同一变量(并用分号来隔开各个条目),可以将多个缓冲池定义为是基于块的。 BLOCK SIZE 可以是 2 到 256 范围内的值。如果没有给定 BLOCK SIZE,则将使用缺省值 32。 如果指定的 BLOCK AREA SIZE 大于总缓冲池大小的 98%,则缓冲池将不是基于块的。最好是始终让缓冲池的某些部分处于缓冲池的基于页的区域中,这是因为即使系统上大多数 I/O 都是顺序预取装的,但仍然可能需要个别页面。如果为 BLOCK AREA SIZE 指定的值不是 BLOCK SIZE 的倍数,则它将降低至最接近的块大小边界。有关基于块的 I/O 的更多信息,参见 10.2.1, 基于块的缓冲池。 DB2_NO_FORK_CHECK UNIX 缺省值 = OFF 值:ON 或 OFF 如果此变量为“N”,则客户机进程将允许应用程序复制要运行的进程(称为派生)。当进行派生时,结果将是不可预测的。结果可能是没有任何效果、出现更坏结果、返回一些错误代码或是应用程序中出现陷阱。如果确定应用程序没有派生且想要性能更佳,则应将此变量的值更改为“N”。 DB2_MINIMIZE_LIST_PREFETCH 所有 缺省值 = NO 值:YES 或 NO 列表预取装是一种特殊的表存取方法,它涉及到从索引中检索合格的 RID,按页号将它们排序,然后预取装数据页。 有时,优化器没有准确的信息来确定列表预取装是否是一种很好的存取方法。当谓词选择中的参数标志符或主变量可防止优化器使用目录统计信息来确定选择时,就可能会发生这种情况。 此注册表变量将防止优化器在这种情况下考虑使用列表预取。 DB2_INLIST_TO_NLJN 所有 缺省值 = NO 值:YES 或 NO 在某些情况下,SQL 编译器可以将 IN 列表谓词重写到连接中。例如,可以将以下查询: SELECT * FROM EMPLOYEE WHERE DEPTNO IN ('D11', 'D21', 'E21') 改写为: SELECT * FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO) WHERE DEPTNO = V.DNO 如果具有关于 DEPTNO 的索引,则此修订可以提供更高的性能。将首先存取值的列表,并通过使用索引来应用连接谓词,从而利用嵌套的循环连接来连接至 EMPLOYEE。 有时,优化器没有准确的信息来确定查询的重写版本的最佳连接方法。如果 IN 列表中的参数标志符或主变量可防止优化器使用目录统计信息来确定选择时,就会发生这种情况。此注册表变量将导致优化器使嵌套的循环连接更有利于连接值的列表,将提供了 IN 列表的表用作连接中的内部表。 10.5.2 注册表变量 DB2BPVARS 的新参数 注册表变量 DB2BPVARS 支持两个新参数:NUMPREFETCHQUEUES 和 PREFETCHQUEUESIZE。这些参数适用于所有平台,并且可用来改进缓冲池数据的预取。例如,考虑顺序预取,在此操作中,期望的 PREFETCHSIZE 被分成 PREFETCHSIZE/EXTENTSIZE 预取请求。在此情况下,将请求放置在预取队列上,从预取队列中,分派 I/O 服务器执行异步 I/O。缺省情况下,DB2 为每个数据库分区维护一个大小为 max( 100 , 2*NUM_IOSERVERS) 的队列。在某些环境中,通过使用更多队列和/或不同大小的队列来提高性能。预取队列数至少应该是 I/O 服务器数目的一半。当设置这些参数时,应考虑其它参数(例如,PREFETCHSIZE、EXTENTSIZE、NUM_IOSERVERS、缓冲池大小和 DB2_BLOCK_BASED_BP)以及工作负荷特征(例如,当前用户数)。 如果您认为缺省值对于您的环境来说太小了,则首先应稍微增大这些值。例如,可以设置 NUMPREFETCHQUEUES=4 和 PREFETCHQUEUESIZE=200。以受控方式更改这些参数,以便可以监视和评估更改的效果。 表 6. 对新参数的总结 参数名称 缺省值 有效范围 NUMPREFETCHQUEUES 1 1 到 NUM_IOSERVERS 如果已将它设置为小于 1,则将它调整为 1 如果已将它设置为大于 NUM_IOSERVERS,则将它调整为 NUM_IOSERVERS PREFETCHQUEUESIZE max(100,2*NUM_IOSERVERS) 1 到 32767 如果已将它设置为小于 1,则将它调整为缺省值 如果已将它设置为大于 32767,则将它调整为 32767 10.5.3 对其它注册表变量的更正和补充 DB2_NEWLOGPATH2 注册表变量可供所有操作系统使用。系统已经引入了新变量 DB2_ROLLFORWARD_NORETRIEVE。这些变量的更正信息如下所示。 表 7. 其它变量 变量名 操作系统 值 描述 DB2_NEWLOGPATH2 ALL 缺省值 = NO 值:YES 或 NO 此参数允许您指定是否应使用辅助路径来实现双重记录。使用的路径是通过将“2”追加至 logpath 数据库配置参数的当前值生成的。 DB2_ROLLFORWARD_NORETRIEVE ALL 缺省值 =(未设置) 值:YES 或 NO 如果启用数据库配置参数 USEREXIT,则会在前滚操作期间从压缩文档中自动检索日志文件。DB2_ROLLFORWARD_NORETRIEVE 变量允许您指定前滚操作不应从压缩文档中检索日志文件。缺省情况下此变量是禁用的。如果不想要前滚自动检索日志文件,则将此变量设置为 YES。例如,在想要避免无效应用程序创建的日志记录破坏备份系统时,在热备用设置中将该变量设置为 YES。 10.5.4 对常规注册表变量的更正和补充 系统已经引入了新变量 DB2_REDUCED_OPTIMIZATION。 表 8. 常规注册表变量 变量名 操作系统 值 描述 DB2_REDUCED_OPTIMIZATION ALL 缺省值 = NO 值:YES、NO 或任何整数 此注册表变量会让您禁用在特定优化级别使用的某些优化技巧。如果减少使用的优化技巧,则会减少优化期间使用的时间和资源。 注意: 尽管使用的优化时间和资源可能会减少,但生成非最佳数据存取方案的风险增加了。 如果设置为 NO: 优化器不会更改它的优化技巧。 如果设置为 YES: 如果优化级别为 5(缺省值)或更低,则优化器会禁用可能会大量消耗准备时间且通常不会生成较好的存取方案的一些优化技巧。 如果优化级别为 5,则优化器会收回或禁用一些附加技巧,这可能会进一步地减少使用的优化时间和资源,同时还会进一步地增加生成非最佳存取方案的风险。对于低于 5 的优化级别,其中一些技巧可能一点也不起作用。但是,如果优化级别为 5,则这些技巧还是起作用的。 如果设置为任何整数: 所起的作用就象是将值设置为 YES 一样,但还带有用于优化级别为 5 的动态准备查询的以下附加行为:如果任何查询块中的连接总数超过了设置,优化器会切换至急需的连接枚举而不是禁用上述优化级别为 5 的附加优化技巧,这暗示查询将优化为类似于优化级别 2 的级别。 有关急需的和动态的连接枚举,参见《管理指南:性能》中的『搜索策略以选择最佳连接』。 注意,优化级别为 5 的动态优化降低(就象《管理指南:性能》中的『调整优化类』中描述的那样)优先于 DB2_REDUCED_OPTIMIZATION 设置为 YES 时对优化级别 5 描述的行为以及对整数设置描述的行为。 《卫星管理指南和参考》 11.1 将版本 7.2 DB2 个人版和 DB2 工作组版设置为卫星 接下来的几节描述如何设置基于 Windows 的版本 7.2 的“DB2 个人版”和“DB2 工作组版”系统,以便它们可在卫星环境中用作全功能的卫星。有关接下来的信息中使用的术语和概念,请参考《安装和管理卫星环境》。可在以下 URL 处找到此书: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/v6pubs.d2w/en_main 有关补充 《安装和管理卫星环境》 中的信息的技术注释,参考以下 URL:http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/index.d2w/report 11.1.1 先决条件 要将“DB2 个人版”或“DB2 工作组版”设置为卫星,需要下列各项: DB2 控制服务器 DB2 控制服务器是在 Windows NT 或 AIX 上运行的“DB2 企业版”系统,且安装有“控制服务器”组件。使用的“DB2 企业版”系统必须是带有“修订包 2”或更高版本的版本 6,或处于任何“修订包”级别的版本 7。 如果具有想要用作 DB2 控制服务器的“版本 6 企业版”系统,参见11.1.3, 在版本 6 企业版系统上安装修订包 2 或更高版本。 如果正在使用版本 7,且未安装“控制服务器”组件,则安装此组件,重新安装已安装的所有“修订包”,然后创建 DB2 控制服务器实例和卫星控制数据库。参考《安装和管理卫星环境》以获取有关创建这些对象的指示信息。 注意: 如果在 Windows NT 上安装“版本 7.2 企业版”系统以用作 DB2 控制服务器,且想要执行响应文件安装,则参考“技术注释”DB2 控制服务器响应文件关键字,以获取有关要在响应文件中指定的关键字的信息。 DB2 控制服务器实例和卫星控制数据库 通常,DB2 控制服务器实例称为 DB2CTLSV,而卫星控制数据库称为 SATCTLDB。DB2 控制服务器实例和卫星控制数据库都在“企业版”系统上,而且它们是您在安装 DB2 和“控制服务器”组件时在 Windows NT 上自动创建的。如果是在 AIX 上安装 DB2,则参见《安装和管理卫星环境》以获取有关创建 DB2 控制服务器实例和卫星控制数据库的信息。 卫星管理中心 卫星管理中心是一组 GUI 工具,可用来设置和管理卫星环境。可从控制中心访问这组工具。有关卫星管理中心和卫星环境的更多信息,参见《安装和管理卫星环境》和卫星管理中心提供的联机帮助。如果正在运行“版本 6 控制中心”,参见11.1.4, 升级版本 6 控制中心和卫星管理中心。 如果还未使用卫星管理中心来设置卫星环境,也未创建在卫星管理中心中表示新卫星的对象,应在安装卫星之前完成这些操作。要获取更多信息,参见《安装和管理卫星环境》中有关如何设置和测试卫星环境的描述。 要用作卫星的版本 7.2 个人版或工作组版系统。 11.1.1.1 安装注意事项 在安装“DB2 个人版”或“DB2 工作组版”时,不需要选择任何特殊组件就可以启用要同步的任何一个系统。如果打算执行响应文件安装,则参见执行响应文件安装以获取在安装版本 7.2 的系统时应指定的关键字。如果正在版本 7.2 系统上执行交互式安装,则参见11.1.2, 配置版本 7.2 系统以进行同步以获取在完成 DB2 的安装后版本 7.2 上必须设置的值,以使系统同步。 执行响应文件安装 如果是执行版本 7.2 的“DB2 个人版”或“DB2 工作组版”的响应文件安装,可在响应文件中设置下列关键字。 如果决定在响应文件安装期间不指定这些关键字中的一个或多个关键字,则参见11.1.2, 配置版本 7.2 系统以进行同步以获取在安装 DB2 后必须执行的其它步骤,以使版本 7.2 系统同步。如果想要更改在响应文件安装期间指定的任何值,也可使用本节中的指示信息。 db2.db2satelliteid 在系统上设置卫星标识。 注意: 如果未指定此关键字,则卫星标识被自动设置为用来安装 DB2 的用户标识。如果想要将此用户标识用作卫星标识,则不必对此关键字指定值。 db2.db2satelliteappver 在系统上设置应用程序版本。 注意: 如果未指定此关键字,卫星上的应用程序版本将自动设置为 V1R0M00。如果想要将此值用作应用程序版本,则不必对此关键字指定值。 db2.satctldb_username 设置要用于系统的,用来连接至卫星控制数据库的用户名。 db2.satctldb_password 设置在使用用户名连接至卫星控制数据库时,该用户名传送至 DB2 控制服务器的密码。 完成响应文件的安装后,版本 7.2 系统就可以同步了。应在卫星上发出 db2sync -t 命令以验证在卫星上指定的值是否正确,且卫星是否能连接至卫星控制数据库。 有关执行响应文件安装的更多信息,参考《安装和管理卫星环境》。 记录: 在版本 7 中,用户标识和密码是在 Windows NT 和 Windows 2000 上创建所有服务必需的。这些用户标识和密码是在响应文件中按关键字对指定的。响应文件中发现的第一个关键字对将成为所有服务的缺省用户标识和密码,除非通过对该服务指定特定关键字对而为该服务重设了关键字。 在版本 6 中,可在“DB2 卫星版”的响应文件安装期间指定 admin.userid 和 admin.password 关键字以指定将由“远程命令服务”使用的用户标识和密码。对于版本 7.2 的“个人版”和“工作组版”,如果指定这些关键字,它们将用于版本 7.2 系统上的 DB2DAS00 实例。对于 DB2 版本 7.2 系统,“远程命令服务”将使用由系统上的 DB2 实例使用的用户标识和密码。如果未指定 db2.userid 和 db2.password 的值,则应用上述缺省规则。 在版本 6 中,使用响应文件安装来安装“DB2 卫星版”时可能会创建一个数据库。不能在打算用作卫星的版本 7.2 的“个人版”或“工作组版”系统上进行响应文件安装时创建数据库。下列关键字(在《安装和管理卫星环境》中作了描述)是不受支持的: db2.userdb_name db2.userdb_recoverable db2.userdb_rep_src 11.1.2 配置版本 7.2 系统以进行同步 如果以交互方式安装版本 7.2 系统,则在安装 DB2 之后必须在“DB2 个人版”或“DB2 工作组版”系统上设置几个值,系统才能同步。 注意: 还可在系统上执行操作系统脚本以在卫星上设置所有的值,卫星用来连接至卫星控制数据库的用户标识和密码除外(参见步骤4)。 通过使用 db2set 命令来设置卫星标识。 如果以交互方式安装“DB2 个人版”或“DB2 工作组版”,则卫星标识被自动设置为用来安装 DB2 的用户标识。如果想要将此用户标识用作卫星标识,则不必执行此步骤。有关设置卫星标识的信息,参见《安装和管理卫星环境》。 使用 db2sync -s 命令在卫星上设置应用程序版本。 如果以交互方式安装“DB2 个人版”或“DB2 工作组版”,则卫星上的应用程序版本被自动设置为 V1R0M00。如果想要将此值用作应用程序版本,则不必执行此步骤。 可在卫星上使用 db2sync -g 命令以查看应用程序版本的当前设置。如果想要更改此值,则发出 db2sync -s 命令。系统会提示您对应用程序版本输入新值。有关设置应用程序版本的更多信息,参见《安装和管理卫星环境》。 在卫星上发出编目节点和编目数据库命令,以在卫星上对 DB2 控制服务器实例和卫星控制数据库 SATCTLDB 进行编目。 还可在卫星上使用 db2sync -t 命令来以测试方式打开 DB2 Synchronizer 应用程序。如果在发出命令时还未在卫星上编目 SATCTLDB 数据库,则“编目控制数据库”窗口打开。可使用“编目控制数据库”窗口中提供的 DB2 discovery 功能部件来编目 DB2 控制服务器和 SATCTLDB 数据库,可在此窗口中输入主机名和服务器名。系统还会提示您指定卫星将用来连接至卫星控制数据库的用户标识和密码,如步骤4中所述。 注意: 在以交互方式安装了版本 7.2 的“DB2 个人版”或“DB2 工作组版”后,DB2 Synchronizer 不会以测试方式自动启动(就象对版本 6 DB2 卫星版一样)。 在卫星上发出 db2sync -t 命令,以: 指定卫星将用来连接至卫星控制数据库的用户标识和密码 如果还未在卫星上存储同步凭证,则“连接至控制数据库”窗口打开。必须使用此窗口来指定卫星将用来连接至卫星控制数据库的用户标识和密码。 验证在卫星上设置的值是否正确 验证卫星是否能连接至卫星控制数据库 完成这些配置任务后,版本 7.2 系统就可以同步了。 11.1.3 在版本 6 企业版系统上安装修订包 2 或更高版本 对于要用作 DB2 控制服务器的“版本 6 企业版”系统,系统必须处于“修订包 2”或更高版本。 接下来的几节描述您必须执行的任务,以在 Windows NT 或 AIX 上升级“版本 6 企业版”系统,以便用作 DB2 控制服务器。如果正在使用版本 6 控制中心,则还应执行11.1.4, 升级版本 6 控制中心和卫星管理中心中的步骤以验证是否有正确级别的控制中心和卫星管理中心来管理卫星环境。 11.1.3.1 升级版本 6 DB2 企业版以用作 DB2 控制服务器 要将“版本 6 DB2 企业版”系统用作 DB2 控制服务器,必须将其与“控制服务器”组件安装在一起,且“DB2 企业版”应为“修订包 2”服务级别或更高级别。根据是否安装了 DB2 控制服务器组件及“DB2 企业版”的服务级别,您将必须执行下列其中一个任务: 将 DB2 控制服务器组件安装至现有“DB2 企业版 V6.1”系统并安装“修订包 2”或更高版本。然后在系统上更新卫星控制数据库(SATCTLDB)。 将已安装的 DB2 控制服务器升级至“修订包 2”级别或更高级别。 使用下面的信息标识需要执行前面两个任务中的哪一个,以及适用于您的情况的步骤。下面是将要执行的步骤的总结。 首先,存取“DB2 企业版”安装的当前状态。您将确定是否安装了“控制服务器”组件,以及 DB2 的服务级别。 接着,根据您获得的状态信息,确定需要执行的操作。 然后,执行升级“DB2 企业版”所需的步骤。 DB2 控制服务器只能在 DB2 企业版的 Windows NT 和 AIX 版上运行。继续遵循适用于您的平台的指示信息: 在 Windows NT 上升级 DB2 企业版 在 AIX 上升级 DB2 企业版 在 Windows NT 上升级 DB2 企业版 使用以下几节中的信息来确定“版本 6 DB2 企业版”系统的当前服务级别,以及将系统更新至“修订包 2”服务级别或更高级别需要执行的步骤。您将需要执行下面一节或多节中的步骤: 在 Windows NT 上评估 DB2 企业版 确定需要完成的操作 在 Windows NT 上安装控制服务器组件 在 Windows NT 上安装修订包 2 或更高版本 在 Windows NT 上升级 SATCTLDB 在 Windows NT 上评估 DB2 企业版 如果在 Windows NT 上安装了“DB2 企业版”,则执行下列步骤: 检查是否安装了“控制服务器”组件。使用“注册表编辑器”来显示已安装的组件的列表: 在命令提示符处输入 regedit。 在 HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\Components 注册表键下,检查是否列出了“控制服务器”。如果未列出它的话,则表明未安装控制服务器。 确定“DB2 企业版”的服务级别。从命令提示符处发出 db2level 命令。使用下表来解释输出: db2level 输出中的键字段的值 DB2 系统为: 发行版 级别 信息标记 SQL06010 01010104 db2_v6, n990616 版本 6.1 基本组件 SQL06010 01020104 DB2 V6.1.0.1, n990824, WR21136 版本 6.1,修订包 1 SQL06010 01030104 DB2 V6.1.0.6, s991030, WR21163 或 DB2 V6.1.0.9, s000101, WR21173 版本 6.1,修订包 2 注意: 如果级别高于 01030104,则表明系统的“修订包”级别比“修订包 2”级别要高。 记录找到的信息,在确定需要完成的操作处继续。 确定需要完成的操作 使用您收集的信息查找下表中适用于您的情况的行,并遵循准备“DB2 企业版”系统以支持“修订包 2”级别或更高级别的 DB2 控制服务器所需的步骤。 该表下面的几节提供了有关执行所需步骤的指示信息。考虑在执行每一步时核对一下。只执行那些适用于您的情况的步骤。 安装的控制服务器组件 DB2 企业版系统的服务级别 准备“DB2 企业版”系统所需的步骤 否 版本 6.1 基本组件或版本 6.1,修订包 1,或版本 6.1,修订包 2 或更高级别 执行下列步骤: 在 Windows NT 上安装控制服务器组件 在 Windows NT 上安装修订包 2 或更高版本 在 Windows NT 上升级 SATCTLDB 是 版本 6.1 基本组件,或版本 6.1,修订包 1 执行下列步骤: 在 Windows NT 上安装修订包 2 或更高版本 在 Windows NT 上升级 SATCTLDB 是 版本 6.1,修订包 2 或更高级别 执行以下步骤: 在 Windows NT 上升级 SATCTLDB 在 Windows NT 上安装控制服务器组件 要在 Windows NT 上安装“控制服务器”组件: 确保系统上的所有数据库活动完成后才继续进行。 将“DB2 通用数据库企业版 6.1 CD”插入 CD 驱动器。 如果安装程序未自动启动,在 CD 的根目录中运行 setup 命令以启动安装进程。 提示时关闭使用 DB2 的所有进程。 在“欢迎”窗口上,选择下一步。 在“选择产品”窗口上,确保选择了“DB2 企业版”。 在“选择安装类型”面板上,单击定制。 在“选择组件”面板上,确保选择了“控制服务器”组件,并单击下一步。 注意: 如果选择还未安装在系统上的其它组件,则还应安装这些组件。不能改变安装 DB2 的驱动器或目录。 在“配置 DB2 服务”面板上,可修改协议值和“控制服务器”实例的启动选项,或采用缺省值。修改缺省值并单击下一步,或单击下一步以使用缺省值。 在“开始复制文件”窗口中单击下一步以开始安装进程。 文件复制进程完成时,就可选择重新引导系统。应立刻重新引导。对系统所作的有关“控制服务器”的更改在系统重新引导之前不会生效。 如果安装进程完成且已经重新引导了系统,则在想要在系统本地使用控制中心和卫星管理中心的情况下,必须在 DB2 实例中编目作为“控制服务器”安装的一部分创建的卫星控制数据库(SATCTLDB)。要编目 SATCTLDB 数据库: 通过选择开始 > 程序 > DB2 Windows NT 版 > 命令窗口来打开“DB2 命令窗口” 确保您已经在 DB2 实例中。 发出 set 命令并检查 db2instance 的值。如果值不是 db2,则发出以下命令: set db2instance=db2 输入以下命令以编目 db2ctlsv 实例: db2 catalog local node db2ctlsv instance db2ctlsv 输入以下命令以编目 SATCTLDB 数据库 db2 catalog database satctldb at node db2ctlsv 输入以下命令以落实编目操作: db2 terminate 关闭“DB2 命令窗口”。 在 Windows NT 上安装修订包 2 或更高版本 要将 Windows NT 上的现有“版本 6 DB2 企业版”系统升级至“修订包 2”或更高版本,则: 从 Web 上下载“DB2 企业版 Windows NT 版 V6.1”的最新“修订包”及其附带的自述文件。可遵循以下 URL 中的指示信息来下载“修订包”: http://www.ibm.com/software/data/db2/db2tech/version61.html 遵循 readme.txt 文件中的指示信息来安装“修订包”。 使用处于“修订包 2”级别或更高级别的“DB2 通用数据库版本 6.1 修订包 Windows NT 版 CD”,并遵循 CD 上 WINNT95 目录中的 readme.txt 文件中的指示信息来完成安装。 在 Windows NT 上升级 SATCTLDB 要在 Windows NT 上升级 SATCTLDB 数据库 确定 SATCTLDB 数据库的级别: 使用对 Windows NT 系统具有本地管理权限的用户标识登录。 选择开始 > 程序 > DB2 Windows NT 版 > 命令窗口来打开“DB2 命令窗口”。 输入以下命令以连接至 SATCTLDB db2 connect to satctldb 发出以下查询以确定数据库中是否存在触发器 I_BATCHSTEP_TRGSCR: db2 select name from sysibm.systriggers where name='I_BATCHSTEP_TRGSCR' 记录返回的行数。 输入以下命令以关闭与数据库的连接: db2 connect reset 如果步骤1d返回一行,则表明数据库处于正确级别。在此情况中,跳过步骤2,并在步骤3处继续。如果返回零(0)行,则表明数据库的级别不正确,必须升级(如步骤2中所述)才能执行步骤3。 要升级 SATCTLDB 数据库,执行下列步骤。在“DB2 命令窗口”中输入所有命令: 切换至目录 \misc,其中 是安装驱动器和路径,例如 c:\sqllib。 确保您在 db2ctlsv 实例中。 发出 set 命令并检查 db2instance 的值。如果值不是 db2ctlsv,则发出以下命令: set db2instance=db2ctlsv 输入以下命令以删除 SATCTLDB 数据库: db2 drop database satctldb 输入以下命令创建新的 SATCTLDB 数据库: db2 -tf satctldb.ddl -z satctldb.log 发出以下命令: db2 terminate 将 db2satcs.dll 存储过程绑定至 SATCTLDB 数据库。执行下列步骤: 输入以下命令以连接至 SATCTLDB 数据库 db2 connect to satctldb 切换至目录 \bnd,其中 是安装驱动器和路径,例如 c:\sqllib。 发出绑定命令,如下所示: db2 bind db2satcs.bnd 输入以下命令以关闭与数据库的连接: db2 connect reset 关闭“DB2 命令窗口”。 在 AIX 上升级 DB2 企业版 使用以下几节中的信息来确定“版本 6 DB2 企业版”系统的当前服务级别,以及将系统更新至“修订包 2”服务级别或更高级别需要执行的步骤。您将需要执行下面一节或多节中的步骤: 在 AIX 上评估 DB2 企业版 确定需要完成的操作 在 AIX 上安装“控制服务器”组件 在 AIX 上安装修订包 2 或更高版本 在 AIX 上升级 SATCTLDB 数据库 在 AIX 上评估 DB2 企业版 如果在 AIX 上安装了“版本 6 DB2 企业版”,则执行下列步骤: 检查是否安装了“控制服务器”组件。输入以下命令: lslpp -l | grep db2_06_01.ctsr 如果未返回任何数据,则表明未安装“控制服务器”组件。 确定“DB2 企业版”的服务级别。作为 DB2 实例所有者登录,并发出 db2level 命令。使用下表来解释输出: db2level 输出中的键字段的值 DB2 系统为: 发行版 级别 信息标记 SQL06010 01010104 db2_v6, n990616 版本 6.1 基本组件 SQL06010 01020104 DB2 V6.1.0.1, n990824, U465423 版本 6.1,修订包 1 SQL06010 01030104 DB2 V6.1.0.6, s991030, U468276 或 DB2 V6.1.0.9, s000101, U469453 版本 6.1,修订包 2 注意: 如果级别高于 01030104,则表明系统的“修订包”级别比“修订包 2”级别要高。 记录找到的信息,在确定需要完成的操作处继续。 确定需要完成的操作 使用您收集的信息查找下表中适用于您的情况的行,并遵循准备“版本 6 DB2 企业版”系统以支持“修订包 2”级别的 DB2 控制服务器所需的步骤。 该表下面的几节提供了有关执行所需步骤的指示信息。考虑在执行每一步时核对一下。只执行那些适用于您的情况的步骤。 安装的控制服务器组件 DB2 企业版系统的服务级别 准备“DB2 企业版”系统所需的步骤 否 版本 6.1 基本组件或版本 6.1,修订包 1,或版本 6.1,修订包 2 或更高级别 执行下列步骤: 在 AIX 上安装“控制服务器”组件 在 AIX 上安装修订包 2 或更高版本 在 AIX 上升级 SATCTLDB 数据库 是 版本 6.1 基本组件,或版本 6.1,修订包 1 执行下列步骤: 在 AIX 上安装修订包 2 或更高版本 在 AIX 上升级 SATCTLDB 数据库 是 版本 6.1,修订包 2 或更高级别 执行以下步骤: 在 AIX 上升级 SATCTLDB 数据库 在 AIX 上安装“控制服务器”组件 要在 AIX 上安装“控制服务器”组件 作为具有 root 用户权限的用户登录。 将“DB2 通用数据库企业版 6.1 CD”插入 CD 驱动器。 切换至安装有该 CD 的目录,例如 cd/cdrom。 输入以下命令以启动 DB2 安装程序: ./db2setup “DB2 安装程序”窗口打开时,使用 Tab 键选择安装选项,并按 Enter 键。 定位“企业版”行并使用 Tab 键来选择它旁边的定制选项。按 Enter 键。 选择“DB2 控制服务器”组件,按“确定”,并按 Enter 键。 遵循对其余窗口的指示信息以完成“DB2 控制服务器”组件的安装。 安装进程完成时,创建 DB2CTLSV 实例和 SATCTLDB 数据库。要执行这些任务,遵循《安装和管理卫星环境》中第 13 章的『在 AIX 上设置 DB2 控制服务器』中的详细指示信息。 在 AIX 上安装修订包 2 或更高版本 要将 AIX 上现有的“DB2 企业版”系统升级至“修订包 2”或更高版本,则: 通过 Web 下载“DB2 企业版 AIX 版 V6.1”的最新“修订包”及其附带的“修订包”自述文件。可遵循以下 URL 中的指示信息来下载“修订包”: http://www.ibm.com/software/data/db2/db2tech/version61.html 遵循“修订包”自述文件中的指示信息来安装“修订包”。 使用处于“修订包 2”级别或更高级别的“DB2 通用数据库版本 6.1 修订包 AIX 版 CD”,并遵循 CD 上自述文件目录中的指示信息来完成安装。 确保您已经按“修订包”自述文件中的指示信息运行了 db2iupdt 命令,更新了 DB2CTLSV 实例。 在 AIX 上升级 SATCTLDB 数据库 要在 AIX 上升级 SATCTLDB 数据库: 确定 SATCTLDB 数据库的级别: 作为 db2ctlsv 登录。 确保已经启动了数据库服务器。如果未启动服务器,则发出 db2start 命令。 输入以下命令以连接至 SATCTLDB 数据库: db2 connect to satctldb 发出以下查询以确定数据库中是否存在触发器 I_BATCHSTEP_TRGSCR: db2 "select name from sysibm.systriggers where name='I_BATCHSTEP_TRGSCR'" 记录返回的行数。 输入以下命令以关闭与数据库的连接: db2 connect reset 如果步骤1d返回一行,则表明数据库处于正确级别。在此情况下,跳过步骤2,并在步骤3处继续。如果返回零(0)行,则表明数据库的级别不正确,必须升级(如步骤2中所述)才能执行步骤3。 要将 SATCTLDB 数据库升级至“修订包 2”级别,则执行下列步骤。在“DB2 命令窗口”中输入所有命令: 切换至 $HOME/sqllib/misc 目录。 输入以下命令以删除 SATCTLDB 数据库: db2 drop database satctldb 输入以下命令创建新的 SATCTLDB 数据库: db2 -tf satctldb.ddl -z $HOME/satctldb.log 发出以下命令: db2 terminate 将 db2satcs.dll 存储过程绑定至 SATCTLDB 数据库。执行下列步骤: 输入以下命令以连接至 SATCTLDB 数据库 db2 connect to satctldb 切换至目录 $HOME/sqllib/bnd。 发出绑定命令,如下所示: db2 bind db2satcs.bnd 输入以下命令以关闭与数据库的连接: db2 connect reset 11.1.4 升级版本 6 控制中心和卫星管理中心 要将版本 6 控制中心和卫星管理中心与已升级至“修订包 2”或更高版本的版本 6 DB2 控制服务器和卫星控制数据库(SATCTLDB)配合使用,这些工具必须也升级至“修订包 2”或更高版本。 如果控制中心和卫星管理中心是在 DB2 控制服务器所在的系统上运行,则它们会在“DB2 企业版”系统升级至“修订包 2”时进行升级。但是,如果在另一系统上运行这些工具,则必须将此系统升级至“修订包 2”级别或更高级别。 要将此系统升级至“修订包 2”或更高版本: 从 Web 上下载位于 V6.1 级别的产品的最新“修订包”及其附带的自述文件。可遵循以下 URL 中的指示信息来下载“修订包”: http://www.ibm.com/software/data/db2/db2tech/version61.html 遵循自述文件中的指定来安装“修订包”。 对正在运行的位于“修订包 2”级别或更高级别的操作系统使用“DB2 通用数据库版本 6.1 修订包 CD”,并遵循自述文件中的指示信息来完成安装。 命令参考 12.1 提供的更新 在“修订包 4”中已对命令参考作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 12.2 db2updv7 — 将数据库更新为版本 7 当前修正级别 此命令会以下列方式更新数据库中的系统目录,以支持当前“修订包”: 允许使用新的内置函数:ABS、DECRYPT_BIN、DECRYPT_CHAR、ENCRYPT、GETHINT、MULTIPLY_ALT 和 ROUND。 允许对 Unicode 数据库使用新的内置函数: DATE(vargraphic)、TIME(vargraphic)、TIMESTAMP(vargraphic)、GRAPHIC(datetime-expression)、GRAPHIC(date-expression)、GRAPHIC(time-expression) 和 VARGRAPHIC(datetime-expression)。 启用新内置过程(GET_ROUTINE_SAR 和 PUT_ROUTINE_SAR)的使用。 在 Windows 和 OS/2 数据库上添加或应用对 WEEK_ISO 和 DAYOFWEEK_ISO 功能的更正。 应用对从版本 2 至迁移至版本 6 的表的表包装描述符的更正。 创建视图 SYSCAT.SEQUENCES。 权限 sysadm 必需的连接 数据库。此命令自动建立与指定数据库的连接。 命令语法 >>-db2updv7-- -d--database_name-------------------------> >--+--------------------------+--+----+------------------------>< '--u--userid---p--password-' '--h-' 命令参数 -d database-name 指定要更新的数据库的名称。 -u userid 指定用户标识。 -p password 指定用户的密码。 -h 显示帮助信息。指定此选项时,会忽略所有其它选项,而只显示帮助信息。 示例 安装“修订包”之后,通过发出以下命令更新样本数据库中的系统目录: db2updv7 -d sample 使用说明 此工具只能在运行至少安装有“修订包 2”的 DB2 版本 7.1 或 7.2 的数据库上使用。如果对该命令发出了多次,则不会报告任何错误,且每个目录更新只应用一次。 要启用新的内置功能,应用程序都必须与此数据库断开连接,且必须取消激活该数据库(如果它曾经是活动的话)。 12.3 ARCHIVE LOG 使用说明的附加上下文 ARCHIVE LOG 的使用说明当前指出,使用此命令将导致数据库失去它的日志序号(LSN)空间的一部分,因此加快耗尽了有效 LSN。要将此空间使用情况放入上下文中,如果您的日志文件大小为 100M,并且每隔 5 分钟运行一次 ARCHIVE LOG,则将花大约 40 年才能用完有效的 LSN。在大多数运行条件下,您不会受到影响。 12.4 REBIND REBIND 命令的语法图应以如下形式出现: Missing value 命令语法 >>-REBIND--+---------+--package-name----------------------------> '-PACKAGE-' .-ANY----------. >--RESOLVE--+-CONSERVATIVE-+----------------------------------->< 12.5 db2inidb — 初始化镜像数据库 RELOCATE USING configfile 参数的描述应为如下所示: 指定在将数据库作为快照、备用或镜像初始化之前,将根据配置文件中列示的信息重定位数据库文件。 注意: 有关配置文件格式的信息,参见 Data Movement Utilities Guide and Reference。 12.5.1 使用信息 如果指定了 RELOCATE USING configfile 参数,且数据库已成功重定位,则会将配置文件复制到数据库目录中并将其重命名为 db2path.cfg。在所有后续崩溃恢复或前滚恢复期间,会使用此配置文件在日志文件进程中动态重命名容器路径。 如果初始化快照或镜像数据库,则会在恢复完成后自动除去该配置文件。如果初始化备用数据库,则不仅会在恢复完成后除去该配置文件,即使是取消恢复进程也会除去该配置文件。 如果使用保持暂挂状态以便持续前滚的备用数据库,且向原始数据库添加新容器,可以手工更新 db2path.cfg 文件以指示备用数据库的容器应存储的位置。如果未指定用于新容器的位置,则 DB2 会尝试在原始位置存储它们。 12.6 db2relocatedb(新命令) db2relocatedb — 重定位数据库 按照用户提供的配置文件中指定的那样,对数据库重命名或者重定位数据库或数据库的一部分(例如,容器和日志目录)。此工具对 DB2 实例和数据库支持文件执行必需的更改。 权限 无 必需的连接 无 命令语法 >>-db2relocatedb---f--configFilename--------------------------->< 命令参数 -f configFilename 指定包含重定位数据库所需的配置信息的文件的名称。此名称可以是相对文件名或绝对文件名。配置文件的格式为: DB_NAME=oldName,newName DB_PATH=oldPath,newPath INSTANCE=oldInst,newInst NODENUM=nodeNumber LOG_DIR=oldDirPath,newDirPath CONT_PATH=oldContPath1,newContPath1 CONT_PATH=oldContPath2,newContPath2 ... 其中: DB_NAME 指定重定位的数据库的名称。如果更改了数据库名,则必须同时指定旧名称和新名称。这是必需的字段。 DB_PATH 指定重定位的数据库的路径。这是最初创建该数据库的路径。如果数据库路径发生更改,则必须同时指定旧路径和新路径。这是必需的字段。 INSTANCE 指定数据库所在的实例。如果将数据库移至新实例,则必须同时指定旧实例和新实例。这是必需的字段。 NODENUM 指定正在更改的数据库节点的节点号。缺省值为 0。 LOG_DIR 指定日志路径的位置中的更改。如果日志路径发生更改,则必须同时指定旧路径和新路径。如果日志路径驻留在数据库路径中,则此规范是可选的,原因是这种情况下路径是自动更新的。 CONT_PATH 指定表空间容器的位置中的更改。必须同时指定旧的和新的容器路径。如果要更改多个容器路径,可以提供多个 CONT_PATH 行。如果容器路径驻留在数据库路径中,则此规范是可选的,原因是这种情况下路径是自动更新的。 注意: 将忽略以注释字符(#)开头的一个或多个空白行。 示例 示例 1 要将驻留在路径 /home/db2inst1 上的实例 DB2INST1 中的数据库名从 TESTDB 更改为 PRODDB,应创建以下配置文件: DB_NAME=TESTDB,PRODDB DB_PATH=/home/db2inst1 INSTANCE=db2inst1 NODENUM=0 将该配置文件另存为 relocate.cfg,并使用以下命令来对数据库文件执行更改: db2relocatedb -f relocate.cfg 示例 2 要将数据库 DATAB1 从路径 /dbpath 上的实例 JSMITH 移至实例 PRODINST,执行下列操作: 将目录 /dbpath/jsmith 中的文件移至 /dbpath/prodinst。 将以下配置文件与 db2relocatedb 命令配合使用,来对数据库文件执行更改: DB_NAME=DATAB1 DB_PATH=/dbpath INSTANCE=jsmith,prodinst NODENUM=0 示例 3 数据库 PRODDB 存在于路径 /databases/PRODDB 上的实例 INST1 中。需要按如下所示来更改两个表空间容器的位置: 需要将 SMS 容器 /data/SMS1 移至 /DATA/NewSMS1。 需要将 DMS 容器 /data/DMS1 移至 /DATA/DMS1。 在将物理目录和文件移至新位置之后,可以将以下配置文件与 db2relocatedb 命令配合使用,来对数据库文件执行更改,以便使它们识别新位置: DB_NAME=PRODDB DB_PATH=/databases/PRODDB INSTANCE=inst1 NODENUM=0 CONT_PATH=/data/SMS1,/DATA/NewSMS1 CONT_PATH=/data/DMS1,/DATA/DMS1 示例 4 数据库 TESTDB 存在于实例 DB2INST1 中,并且是在路径 /databases/TESTDB 上创建的。然后利用下列容器来创建表空间: TS1 TS2_Cont0 TS2_Cont1 /databases/TESTDB/TS3_Cont0 /databases/TESTDB/TS4/Cont0 /Data/TS5_Cont0 /dev/rTS5_Cont1 TESTDB 将移到新系统上。新系统上的实例将为 NEWINST,并且数据库的位置将为 /DB2。 移动数据库时,必须将存在于 /databases/TESTDB/db2inst1 目录中的所有文件移至 /DB2/newinst 目录。这意味着前 5 个容器将作为此移动操作的一部分重定位。(前 3 个容器与数据库目录有关,后 2 个容器与数据库路径有关。)由于这些容器位于数据库目录或数据库路径中,所以不需要在配置文件中列示它们。如果要将其余 2 个容器移到新系统上的不同位置,则必须在配置文件中列示它们。 在将物理目录和文件移至它们的新位置之后,可以将以下配置文件与 db2relocatedb 配合使用,来执行对数据库文件的更改,以便使它们识别新位置: DB_NAME=TESTDB DB_PATH=/databases/TESTDB,/DB2 INSTANCE=db2inst1,newinst NODENUM=0 CONT_PATH=/Data/TS5_Cont0,/DB2/TESTDB/TS5_Cont0 CONT_PATH=/dev/rTS5_Cont1,/dev/rTESTDB_TS5_Cont1 示例 5 数据库 TESTDB 在节点 10 和 20 上有两个分区。在这两个节点上,实例为 SERVINST,数据库路径为 /home/servinst。在这两个节点上,数据库的名称更改为 SERVDB,而数据库路径更改为 /databases。另外,在节点 20 上,已将日志目录从 /testdb_logdir 更改为 /servdb_logdir。 由于更改是同时对两个节点进行的,所以必须为每个节点创建配置文件,并且必须对每个节点使用相应的配置文件运行 db2relocatedb。 在节点 10 上,将使用以下配置文件: DB_NAME=TESTDB,SERVDB DB_PATH=/home/servinst,/databases INSTANCE=servinst NODE_NUM=10 在节点 20 上,将使用以下配置文件: DB_NAME=TESTDB,SERVDB DB_PATH=/home/servinst,/databases INSTANCE=servinst NODE_NUM=20 LOG_DIR=/testdb_logdir,/servdb_logdir 使用说明 如果数据库所属的实例发生更改,则在运行此命令之前必须执行下列操作,以确保将执行对实例和数据库支持文件的更改: 如果将数据库移至另一个实例,则创建新的实例。 复制这样的文件/设备,它们属于复制到新实例所驻留的系统上的数据库。必须根据需要来更改路径名。 更改所复制的文件/设备的许可权,以便使它们归实例所有者所有。 如果实例发生更改,则必须由新实例所有者来运行该工具。 在 EEE 环境中,必须对需要更改的每个节点运行此工具。必须为每个节点提供单独的配置文件,并且该配置文件包含要更改的节点的 NODENUM 值。例如,如果更改数据库的名称,则每个节点都会受到影响,并且必须对每个节点使用单独的配置文件来运行 db2relocatedb 命令。如果容器属于被移动的单个节点,则只需要在该节点上运行一次 db2relocatedb 命令。 另见 有关更多信息,参见 Command Reference 中的 db2inidb — 初始化镜像数据库命令。 12.7 db2move db2move 工具现在有两个附加选项 --aw 和 --sn。此工具的完整文档如下: 数据库移动工具 此工具用来在工作站上的 DB2 数据库之间移动大量的表。该工具查询系统目录表以获取特定数据库并编译所有用户表的列表。然后,它以 PC/IXF 格式导出这些表。可将 PC/IXF 文件导入或装入同一系统上的另一本地 DB2 数据库,也可将这些文件传送至另一工作站平台并将其导入或装入该平台上的 DB2 数据库。 注意: 使用此工具时不会移动带有结构化类型列的表。 权限 此工具会根据用户请求的操作调用 DB2 导出、导入和装入 API。因此,请求用户标识必须具有这些 API 所要求的正确权限,否则请求将会失败。 命令语法 .-------------------------. V | >>-db2move--dbname--action----+---------------------+-+-------->< +--tc--table-creators-+ +--tn--table-names----+ +--sn--schema names---+ +--io--import-option--+ +--lo--load-option----+ +--l--lobpaths--------+ +--u--userid----------+ +--p--password--------+ '--aw-----------------' 命令参数 dbname 数据库的名称。 action 必须是下列其中之一:EXPORT、IMPORT 或 LOAD。 -tc 表创建者。缺省值为所有创建者。 这只是一个 EXPORT 操作。如果指定此项的话,只会导出那些由此选项列示的创建者创建的表。如果未指定此项的话,缺省值是使用所有创建者。在指定多个创建者时,每个创建者必须用逗号隔开;创建者标识之间不允许有空格。可指定的最大创建者数为 10。此选项可与“tn”和“-sn”选项配合使用来选择要导出的表。 可将星号(*)用作通配符,它可放在字符串中的任何位置。 -tn 表名。缺省值为所有用户表。 这只是一个 EXPORT 操作。如果指定此项,则只有其名称与指定字符串中的内容完全匹配的那些表才会导出。如果未指定此项的话,缺省值是使用所有用户表。在指定多个表名时,每个表必须用逗号隔开;表名之间不允许有空格。可指定的最大表名数为 10。此选项可与“-tc”和“-sn” 选项配合使用来选择要导出的表。db2move 将仅导出其名称与指定表名相匹配,其创建者与指定表创建者相匹配的那些表。 可将星号(*)用作通配符,它可放在字符串中的任何位置。 -sn 模式名。缺省值是 ALL SCHEMAS。 这只是一个 EXPORT 操作。如果指定此项,则只有其模式与指定字符串中的内容相匹配的那些表才会导出。如果未指定此项的话,缺省值是使用所有模式。在指定多个模式名时,每个模式必须用逗号隔开;模式名之间不允许有空格。可指定的最大模式名数为 10。此选项可与“-tc”和“-tn”选项配合使用来选择要导出的表。db2move 将仅导出其名称与指定表名相匹配,其模式与特定表模式相匹配且其创建者与指定表创建者相匹配的那些表。 可将星号(*)用作通配符,它可放在字符串中的任何位置。 注意: 名称少于 8 字符的模式名将填充为 8 字符长。例如,如果想要包括模式“AUSER”和“BUSER”并使用通配符,则必须指定 -sn *USER*。 -io 导入选项。缺省值是 REPLACE_CREATE。 有效选项为 INSERT、INSERT_UPDATE、REPLACE、CREATE 和 REPLACE_CREATE。 -lo 装入选项。缺省值为 INSERT。 有效选项为 INSERT 和 REPLACE。 -l LOB 路径。缺省值为当前目录。 此选项指定创建 LOB 文件(作为 EXPORT 的部分)或搜索 LOB 文件(作为 IMPORT 或 LOAD 的部分)的绝对路径名。在指定多条 LOB 路径时,每条路径必须用逗号隔开;LOB 路径之间不允许有空格。如果第一条路径用完了所有空间(EXPORT 期间),或者路径中找不到这些文件(IMPORT 或 LOAD 期间),则使用第二条路径,以此类推。 如果该操作为 EXPORT,且指定了 LOB 路径,则会删除 LOB 路径目录中的所有文件并除去这些目录,从而创建新的目录。如果未指定此项,则使用当前目录作为 LOB 路径。 -u 用户标识。缺省值是已登录的用户标识。 用户标识和密码都是可选的。但是,如果指定了其中一项,则必须指定另一项。如果该命令是在连接至远程服务器的客户机上运行,则应指定用户标识和密码。 -p 密码。缺省值是已登录的密码。 用户标识和密码都是可选的。但是,如果指定了其中一项,则必须指定另一项。如果该命令是在连接至远程服务器的客户机上运行,则应指定用户标识和密码。 -aw 允许警告。 仅供 EXPORT 操作使用。如果指定此选项,则在导出期间接收到警告的所有表都将包括在 db2move.lst 文件中。如果省略此选项,则在导出期间导致警告的所有表都不会包括在 db2move.lst 文件中。系统会生成表的 .ixf 文件和 .msg 文件,不管是否使用此选项都是如此。 示例 db2move sample export 这会导出 SAMPLE 数据库中的所有表,对所有选项使用缺省值。 db2move sample export -tc userid1,us*rid2 -tn tbname1,*tbname2 这将导出由“userid1”或类似“us%rid2”的用户标识创建的,且带有名称“tbname1”或类似“%tbname2”的表名的所有表。 db2move sample import -l D:\LOBPATH1,C:\LOBPATH2 此示例仅适用于或 Windows 操作系统。该命令将导入 SAMPLE 数据库中的所有表;系统会搜索 LOB 路径“D:\LOBPATH1”和“C:\LOBPATH2”来查找 LOB 文件。 db2move sample load -l /home/userid/lobpath,/tmp 此示例仅适用于基于 UNIX 的系统。该命令会装入 SAMPLE 数据库中的所有表;系统会同时搜索 /home/userid/lobpath 子目录和 tmp 子目录来查找 LOB 文件。 db2move sample import -io replace -u userid -p password 这会以 REPLACE 方式导入 SAMPLE 数据库中的所有表;将使用指定用户标识和密码。 使用说明 此工具将导出、导入或装入用户创建的表。如果将一个操作系统中的数据库复制至另一个操作系统,db2move 将实现表的移动。还需要移动与这些表相关联的所有其它对象,如别名、视图、触发器、用户定义函数等等。 db2look(DB2 统计信息和 DDL 抽取工具;参见命令参考)可通过从数据库中抽取数据定义语言(DDL)语句来实现其中一些对象的移动。 当 db2move 调用导出、导入或装入 API 时,FileTypeMod 参数设置为 lobsinfile。即,LOB 数据保存在不同于 PC/IXF 文件的文件中。一共有 26 000 个文件名可供 LOB 文件使用。 LOAD 操作必须在数据库和数据文件驻留的机器本地运行。在 db2move 调用装入 API 时,CopyTargetList 参数设置为 NULL;即不会进行复制。如果 logretain 为开,则以后不会前滚装入操作。装入的表所驻留的表空间处于备份暂挂状态,是不可存取的。全数据库备份或表空间备份是让表空间脱离备份暂挂状态所必需的。 如果是在版本 5.2 客户机上的版本 6 数据库中,此工具不支持长度超过 18 个字符的表名或列名。 使用 EXPORT 时所需的/生成的文件: 输入:无。 输出: EXPORT.out EXPORT 操作的大致结果。 db2move.lst 原始表名,其对应的 PC/IXF 文件名(tabnnn.ixf)和消息文件名(tabnnn.msg)的列表。此列表、导出的 PC/IXF 文件和 LOB 文件(tabnnnc.yyy)被用作 db2move IMPORT 或 LOAD 操作的输入。 tabnnn.ixf 特定表的导出的 PC/IXF 文件。 tabnnn.msg 相应表的导出消息文件。 tabnnnc.yyy 特定表的导出的 LOB 文件。 “nnn”是表的号码,“c”是字母,“yyy”是范围为 001 至 999 的数字。 仅当导出的表包含 LOB 数据时,才会创建这些文件。如果创建的话,这些 LOB 文件会放在 LOB 路径目录中。总计有 26 000 个名称可供 LOB 文件使用。 system.msg 包含用来创建或删除文件或目录命令的系统消息的消息文件。仅当操作为 EXPORT 且指定了 LOB 路径时,它才可用。 使用 IMPORT 时所需的/生成的文件: 输入: db2move.lst EXPORT 操作的输出文件。 tabnnn.ixf EXPORT 操作的输出文件。 tabnnnc.yyy EXPORT 操作的输出文件。 输出: IMPORT.out IMPORT 操作的大致结果。 tabnnn.msg 相应表的导入消息文件。 使用 LOAD 时所需的/生成的文件: 输入: db2move.lst EXPORT 操作的输出文件。 tabnnn.ixf EXPORT 操作的输出文件。 tabnnnc.yyy EXPORT 操作的输出文件。 输出: LOAD.out LOAD 操作的大致结果。 tabnnn.msg 相应表的 LOAD 消息文件。 12.8 GET ROUTINE 命令中的附加选项 此命令现在支持 HIDE BODY 参数,它指定在从目录中抽取例程文本时必须将例程主体替换为空主体。 这不会影响编译代码;它只会影响文本。 GET ROUTINE 命令语法 >>-GET ROUTINE--INTO--file_name--FROM--+----------+-------------> '-SPECIFIC-' >--PROCEDURE--routine_name--+-----------+---------------------->< '-HIDE BODY-' 12.9 CREATE DATABASE 对于 Unicode 数据库,DB2 现在支持新的整理序列关键字 IDENTITY_16BIT 和 SQL_CS_IDENTITY_16BIT。当为 CLP CREATE DATABASE 命令指定了 IDENTITY_16BIT,或者在 sqlecrea() — “创建数据库 API”中将 SQLEDBDESC.SQLDBCSS 设置为 SQL_CS_IDENTITY_16BIT,则将使用 CESU-8 次序来整理 Unicode 数据库中的所有数据。 CESU-8 是 UTF-16 的兼容性编码方案:8 位,在此之前,其规范包含在“Unicode 技术协会”Web 站点(www.unicode.org)的“草稿 Unicode 技术报告 #26”中。除了 Unicode 补充字符之外,CESU-8 是与 UTF-8 完全相同的二进制,即,那些字符是在 16 位的“基本多语言平面”(BMP 或平面 0)外部定义的。在 UTF-8 编码中,补充字符是由一个 4 字节的序列表示的,但是,采用 CESU-8 的同一字符需要两个 3 字节序列。 在 Unicode 数据库中,CHAR、VARCHAR、LONG VARCHAR 和 CLOB 数据是采用 UTF-8 形式存储的,而 GRAPHIC、VARGRAPHIC、LONG VARGRAPHIC 和 DBCLOB 数据是采用 UCS-2 形式存储的。对于 IDENTITY 或 SQL_CS_NONE 整理,采用 UTF-8 和 UCS-2 的非补充字符具有完全相同的二进制整理,但是,采用 UTF-8 整理的补充字符与采用 UCS-2 的相同字符是不同的。 IDENTITY_16BIT 或 SQL_CS_IDENTITY_16BIT 确保 DB2 Unicode 数据库中的所有字符(包括补充字符和非补充字符)具有相同的二进制整理。 《数据恢复和高可用性指南与参考》 13.1 联机提供的《数据恢复和高可用性指南与参考》 现在可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 处联机获得 HTML 格式和 PDF 格式的《数据恢复和高可用性指南与参考》。此信息先前包含在《管理指南》中。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 13.2 新的归档记录行为 在修订包 4 之前,当需要新的日志文件时,DB2 只检查压缩文档完成情况。现在,每当更改第一个活动日志时,DB2 就会检查压缩文档完成情况。因此,将更早且更频繁地将信息记录到磁盘中。 进行此更改的好处是,如果系统崩溃,则存储在磁盘上的信息(与成功归档了哪些日志文件有关)将更准确,并且 DB2 不需要对已经归档的日志文件重新发出归档请求。 对于检测到成功归档了特定日志文件之后 DB2 要执行哪些操作没有进行更改。 DB2 现在将更早检测到日志归档的完成,并且将更早对它们进行重命名。将删除不活动的被截断的日志文件。因此,保留在活动日志路径中的日志文件数可以小于 LOGPRIMARY 数据库配置值。在此情况下,在需要时 DB2 将创建新的日志文件。 在执行此更改之前,重新启动数据库将减少要等于 LOGPRIMARY 值的日志数。现在,当重新启动数据库时,DB2 将首先检查数据库日志目录。如果空的日志数小于主日志数,则 DB2 将分配新的日志来弥补差值。如果数据库目录中的空日志数多于主日志数,则 DB2 将允许利用数据库目录中的所有可用的空日志来重新启动数据库。 在关闭数据库之后,在重新启动时,存在的任何辅助日志文件将保留在活动的日志路径中。要清除活动的日志路径,可以使用 DB2 ARCHIVE LOG 命令。 13.3 如何使用暂挂的 I/O 来进行数据库恢复 下面关于 db2inidb 实用程序的信息优先于《版本 7.2 新增内容》一书中的信息。 db2inidb 是 DB2 附带交付的工具,可执行崩溃恢复或者使数据库处于前滚暂挂状态。 暂挂 I/O 支持持续的系统可用性,方法是完全实现联机分割镜像处理,即分割镜像而不关闭数据库。如果您不能对大型数据库进行脱机或联机备份,可通过使用暂挂的 I/O 和分割镜像映象来从镜像映象中执行备份或系统复制。 暂挂 I/O 避免了在采用数据库的分割镜像映象时执行磁盘写操作。除了联机备份和复原之外,所有数据库操作在数据库暂挂期间都应正常工作。但是,如果必须将缓冲池或日志缓冲区中的脏页清仓至日志中,则某些操作可能需要等待恢复 I/O 写操作。一旦数据库 I/O 恢复,这些操作就应恢复正常。数据库 I/O 从它最初暂挂的同一连接恢复是很重要的。否则,如果它们需要将缓冲池中的脏页清仓至磁盘,后续连接尝试可能会挂起。一旦恢复数据库 I/O,就会完成这些连接。如果连接尝试被挂起,并且不能从用来暂挂它的连接中恢复 I/O,则将需要使用 RESTART 命令的 WRITE RESUME 选项来执行崩溃恢复。 在分区数据库环境中,不需要同时对所有分区暂挂 I/O 写操作。可以暂挂一个或多个分区的子集,以便创建分割镜像以执行脱机备份。如果子集中包括目录节点,则它必须是要暂挂的最后一个分区。 对数据库创建镜像主要涉及到复制数据库目录和本地数据库目录的整个内容。本地数据库目录 sqldbdir 与主数据库目录位于文件结构的同一层。另外,如果日志目录和表空间容器不在数据库目录中,则还必须复制它们。因为分割镜像数据库独立于这些目录路径,所以这些目录复制至的路径必须与主系统的那些路径完全相同。这意味着实例也必须是相同的。由于存在这种相关性,因此,不可能在主数据库所在的同一系统上创建镜像数据库,除非使用 db2inidb 工具的新选项"重定位"。 “重定位”选项的目的在于使用指定的配置文件在给定系统上重定位数据库。这可能涉及到更改内部数据库目录、容器目录、日志目录、实例名和数据库名。假定数据库目录、容器目录和日志目录已成功镜像至主数据库所在系统上的不同目录路径,可将 db2inidb 工具与“重定位”选项配合使用来更新镜像数据库的内部路径。可以下文中找到带有此选项的使用方案。 根据镜像存储设备的方式,使用 db2inidb 的方式也将发生变化。以下用法假定整个数据库在存储器系统中是一致镜像的。 在多节点环境中,db2inidb 工具一定要在每个分区上运行,才能从任何分区上使用分割镜像。通过使用 db2_all 命令,db2inidb 工具可以同时在所有分区上运行。 创建克隆数据库 此处的目标是在另一系统上使用主数据库的克隆。下列过程描述如何克隆数据库: 输入以下命令以暂挂主数据库上的 I/O 写操作: db2 set write suspend for database 使用操作系统和磁盘子系统级别命令来从主数据库中分割镜像。一定要同时分割数据和日志。 输入以下命令以恢复主数据库上的 I/O 写操作: db2 set write resume for database 运行命令后,主数据库应返回正常状态。 将主数据库的分割镜像安装至另一系统。 通过输入以下命令来在另一系统上启动数据库实例: db2start 输入以下命令来启动 DB2 崩溃恢复: db2inidb database_name AS SNAPSHOT 注意: 此命令将除去暂挂写状态,并回滚由分割时正在发生的事务所作的更改。 还可以使用此进程来执行脱机备份,但是如果在主数据库上复原,则不能使用此备份来进行前滚,原因是日志链将不匹配。 将“分割镜像”用作备用数据库 因为镜像(备用)数据库会持续前滚日志,所以会经常从主系统访存主数据库创建的新日志。以下过程描述如何将分割镜像用作备用数据库: 在主数据库上暂挂 I/O 写操作: db2 set write suspend for database 使用操作系统和磁盘子系统级别命令来从主数据库中分割镜像。一定要只分割数据而不分割日志。 在主数据库上恢复 I/O 写操作以便它返回正常处理。 db2 set write resume for database 将数据库的分割镜像安装至另一系统。 使用 db2start 命令来启动主数据库实例。 使镜像处于前滚暂挂状态,并前滚镜像: db2inidb database_name AS STANDBY 注意: 此命令将除去暂挂写状态,并使镜像数据库处于前滚暂挂状态。 通过设置用户出口程序以从主系统检索日志文件来复制日志,以确保最新的日志可供此镜像数据库使用。 将数据库前滚至日志末尾。 返回至步骤 f,重复此进程直到主数据库关闭为止。 将数据库前滚至日志末尾,并使用 AND STOP 选项使数据库重新联机。现在就可以使用它。 将分割镜像用作备份映象 下列过程描述如何将镜像数据库用作备份映象来覆盖复原主数据库: 使用 db2stop 命令来停止主数据库实例。 使用操作系统和磁盘子系统命令来将镜像数据复制回主数据库的顶部。不要复制回日志文件。主数据库上的日志必须用于前滚操作。 使用 db2start 命令来启动主数据库实例。 运行以下命令以使镜像数据库处于前滚暂挂状态,并除去暂挂写状态: db2inidb database_name AS MIRROR 将数据库前滚至日志末尾,并使用 AND STOP 选项使数据库重新联机。现在就可以使用它。 将镜像分割到主数据库所在的同一系统上 下列过程描述如何使用 db2inidb 工具的“重定位”选项将数据库镜像到主数据库所在的同一系统上。示例假定将在新实例中使用该数据库。 在当前系统上创建新实例。 在主数据库上暂挂 I/O 写操作: db2 set write suspend for database 使用操作系统和磁盘子系统级别命令来从主数据库中分割镜像。 注意: 必须将数据库目录、本地数据库目录、容器目录和日志目录复制至新实例。如果容器目录或日志目录在数据库目录下,则只需要复制数据库目录和本地数据库目录。 恢复主数据库上的 I/O 写操作,以便使它返回正常处理: db2 set write resume for database 使用下列信息来创建配置文件: DB_NAME=name,optional_new_name DB_PATH=primary_db_dir_path,mirrored_db_dir_path INSTANCE=primary_instance,mirror_instance LOG_DIR=primary_db_log_dir,mirrored_db_log_dir CONT_PATH=primary_db_container_#1_path, mirrored_db_container_#1_path ... CONT_PATH=primary_db_container_#n_path, mirrored_db_container_#n_path NODENUM=node_# 注意: 仅当日志目录和容器目录在数据库目录外部时,才需要 LOG_DIR 和 CONT_PATH 字段。所有其它字段都是必需的,但 NODENUM 除外,它将缺省为零(如果不指定的话)。 从新创建的实例启动数据库: db2start 重定位镜像数据库,除去暂挂状态,并使镜像处于前滚暂挂状态: db2inidb database_name as STANDBY relocate using config_file 通过设置用户出口程序以从主数据库检索日志文件来复制日志,以确保最新的日志可供此镜像数据库使用。 将数据库前滚至日志末尾。 返回至步骤 h,重复此进程直到主数据库关闭为止。 将数据库前滚至日志末尾,并使用 AND STOP 选项使数据库重新联机。现在就可以使用它。 13.4 LOGRETAIN=CAPTURE 时的新备份与复原行为 如果在配置数据库时将 LOGRETAIN 设置为 CAPTURE,则不能执行下列操作: 联机数据库备份 联机或脱机表空间级别备份 联机或脱机表空间级别复原 在 LOGRETAIN 设置为 CAPTURE 的情况下,使用脱机备份映象执行数据库复原操作之后,数据库未处于前滚暂挂状态。支持在 LOGRETAIN 设置为 CAPTURE 的情况下(“修订包 4”之前的版本 7.2),使用联机数据库备份映象执行数据库复原操作。 13.5 增量备份与恢复 — 附加信息 在处理的第二阶段,将查询数据库历史记录来构建执行请求的复原操作所需要的一系列备份映象。如果由于某些原因而不能执行此操作,且 DB2 不能构建完整的一系列必需的映象,则复原操作将终止,并返回错误消息。在此情况下,将不能进行增量复原,并且将需要发出带有 INCREMENTAL ABORT 选项的 RESTORE DATABASE 命令。这将清除其余的任何资源,以便您可以继续进行手工增量复原。 在处理的第三阶段,DB2 将复原生成的链中其余的每个备份映象。如果在此阶段发生了错误,则将需要发出带有 INCREMENTAL ABORT 选项的 RESTORE DATABASE 命令来清除其余的任何资源。然后,将需要确定是否可以在重新发出 RESTORE 命令或者再次尝试执行手工增量复原之前解决该错误。 13.6 NEWLOGPATH2 现在称为 DB2_NEWLOGPATH2 已经将对 NEWLOGPATH2 注册表变量的引用更改为 DB2_NEWLOGPATH2。 13.7 为 AIX 或 Solaris 操作环境上的 DB2 Data Links Manager 选择备份方法 在 Tivoli Storage Manager 系统选项文件中设置 PASSWORDACCESS 选项之前,必须确保 /usr/lib 包含与 libApiDS.a 库文件的符号链接。 13.8 Tivoli Storage Manager — LAN 自由数据传送 DB2 通用数据库现在支持使用 Tivoli 的“LAN 自由数据传送”技术来执行 TSM 服务器的备份与复原。如果在将下列其中一个版本的DB2 通用数据库与 Tivoli 的 ADSM 3.1.x 客户机配合使用,可能会在备份或复原 TSM 服务器时遇到问题: DB2 AIX 版(32 位) DB2 Solaris 操作环境版(32 位) DB2 HP-UX 版(32 位) 如果遇到上述问题,执行下列步骤来更正它们: 发出 db2stop 命令。 在 DB2 UDB 服务器上定位 sqllib/adsm 目录。 创建 libtadsm.a 的备份副本。对其制作称为 libtadsm.a.bak 的副本即可。 将 libadsm.a 复制为 libtasdm.a。 发出 db2start 命令。 重新发出失败的备份或复原命令。 Data Movement Utilities Guide and Reference 14.1 导出实用程序现在完全支持扩展的身份值 导出实用程序现在完全支持扩展的身份值。要利用此功能,客户机和服务器都需要运行修订包 7。 14.2 导出、导入和装入对 LOB 文件处理的更改 DB2 UDB 现在在装入大对象(LOB)信息时使用“LOB 位置说明符”(LLS)。这允许将多个 LOB 存储在单个文件中。 LLS 是这样一个字符串,它指示可在文件中找到 LOB 数据的位置。LLS 的格式为 filename.ext.nnn.mmm/,其中 filename.ext 是包含 LOB 的文件的名称,nnn 是文件中 LOB 的偏移(以字节计),而 mmm 是 LOB 的长度(以字节计)。例如,LLS db2exp.001.123.456/ 指示 lob 位于文件 db2exp.001 中,在文件中的起始偏移为 123 个字节,长度为 456 个字节。如果 LLS 中指示的大小为 0,则 LOB 被视作长度为 0。如果长度为 -1,则 LOB 被视作 NULL,且文件名和偏移无效。 在使用 lobsinfile 修饰符导出数据时,LOB 将不会总是放在独立的文件中。每个 LOB 文件中可能有多个 LOB,且每个 LOB 路径有多个 LOB 文件。数据文件现在将包含 LLS 记录而不仅仅是文件名。 还对“导入”和“装入”功能进行了更改,以处理对“导出”功能的更改。在使用指定的由 lobsinfile 修改选项装入或导入数据时,对于每个相应的 LOB 列,都应有 LLS。如果 LOB 列遇到了不同于 LLS 的其它对象,则数据库会将其视作 LOB 文件,并将整个文件作为 LOB 装入。 14.2.1 IXF 注意事项 一共有三种新的 IXF 数据类型。当由 LLS 表示时,这三种类型对应于字符大对象(CLOB)、二进制大对象(BLOB)和双字节字符大对象(DBCLOB)。这些数据类型的值分别是 964、960 和 968。 IXF 文件现在要求每个 LOB 列都有它自己的 D 记录。这是由导出工具自动创建的,但如果使用第三方实用程序创建 IXF 文件,则它必须是手工创建。此外,表中的每个 LOB 都需要 LLS,而不仅仅是非空 LOB。如果 LOB 列为空,则必须编写 LLS 来表示空 LOB。 14.3 对导入、导出和装入实用程序的代码页支持 现在,可以使用导入、导出和装入实用程序来将数据从新的中文代码页 GB 18030(代码页标识符 5488)和新的日语代码页 ShiftJIS X0213 (代码页标识符 13940)传送至 DB2 UDB Unicode 数据库。另外,可以使用导出实用程序将数据从 DB2 UDB Unicode 数据库传送至 GB 18030 或 ShiftJIS X0213 代码页数据。 例如,以下命令会将驻留在远程连接的客户机上的 Shift_JISX0213 数据文件 u/jp/user/x0213/data.del 装入到 MYTABLE 中: db2 load client from /u/jp/user/x0213/data.del of del modified by codepage=1394 insert into mytable 其中,MYTABLE 位于 DB2 UDB Unicode 数据库上。 14.4 Chapter 2. Import 14.4.1 Using Import with Buffered Inserts 本节末尾的注释应为: 注意: In all environments except EEE, the buffered inserts feature is disabled during import operations in which the INSERT_UPDATE parameter is specified. 14.5 Chapter 3. Load 14.5.1 Pending States After a Load Operation 本节最后一段中的头两句已经更改为如下内容: The fourth possible state associated with the load process (check pending state) pertains to referential and check constraints, DATALINKS constraints, AST constraints, or generated column constraints. For example, if an existing table is a parent table containing a primary key referenced by a foreign key in a dependent table, replacing data in the parent table places both tables (not the table space) in check pending state. 14.5.2 装入局限性与限制 下列限制适用于生成的列和装入实用程序: 不能装入唯一索引中有生成列的表,除非生成列是索引的“包括”列或使用了 generatedoverride 文件类型修饰符。如果使用了此修饰符,则应在输入数据文件中提供该列的所有值。 不能装入分区键中有生成列的表,除非使用了 generatedoverride 文件类型修饰符。如果使用了此修饰符,则应在输入数据文件中提供该列的所有值。 14.5.3 totalfreespace 文件类型修饰符 已经修改了 totalfreespace 文件类型修饰符(LOAD),以接受 0 和 2 147 483 647 之间的值。 14.6 Chapter 4. AutoLoader 14.6.1 认证设置为 YES 时,运行 AutoLoader 需要 rexecd 在“AutoLoader Options”一节中,将把下列注释添加到 AUTHENTICATION 和 PASSWORD 参数描述中: In a Linux environment, if you are running the AutoLoader with the authentication option set to YES, rexecd must be enabled on all machines. If rexecd is not enabled the following error message will be generated: openbreeze.torolab.ibm.com: Connection refused SQL6554N An error occurred when attempting to remotely execute a process. The following error messages will be generated in the db2diag.log file: 2000-10-11-13.04.16.832852 Instance:svtdbm Node:000 PID:19612(db2atld) Appid: oper_system_services sqloRemoteExec Probe:31 14.7 在 4.3.3 之前的 AIX 系统上,AutoLoader 在派生期间可能会挂起 AutoLoader 是一个多线程程序,其中一个线程脱离另一进程。从一个子进程派生子进程会导致在子进程中创建父进程内存的映象。 在 AIX 4.3.3 之前的 AIX 系统上,可能会出现这样一种情况,由 libc.a 用来管理多个线程(这些线程从同一进程内的堆分配内存)的锁定将被不包含子进程的线程挂起。既然不包含有子进程的线程将不存在于子进程中,则始终不会在子进程中释放此锁定,这使得父进程在将来某些时候被挂起。 AIX 4.3.3 包含对 libc 问题的修正,该问题会导致 AutoLoader 在派生期间挂起。 14.8 Appendix C. Export/Import/Load Utility File Formats 已经将下列更新添加至此附录: The export, import, and load utilities are not supported when they are used with a Unicode client connected to a non-Unicode database. Unicode client files are only supported when the Unicode client is connected to a Unicode database. Replication Guide and Reference 15.1 复制和非 IBM 服务器 必须使用 DataJoiner 版本 2 或更新版本来将数据复制至非 IBM 服务器(如 Informix、Microsoft SQL Server、Oracle、Sybase 和 Sybase SQL Anywhere),或从这些服务器复制数据。不能将关系连接功能用于此类型的复制,原因是 DB2 Relational Connect 版本 7 没有更新功能。另外,必须使用 DJRA(DataJoiner 复制管理)来为所有现有版本的 DB2 和 DataJoiner 管理所有平台(AS/400、OS/2、OS/390、UNIX 和 Windows)上的这些多机种复制。 15.2 在 Windows 2000 上进行复制 DB2 DataPropagator 版本 7 与 Windows 2000 操作系统兼容。 15.3 保存 SQL 文件时的已知错误 如果使用“DB2 Connect 个人版”中的“控制中心”,则不能保存 SQL 文件。如果您试图保存 SQL 文件,会得到错误消息,指出“数据库管理服务器”(DAS)不活动,这时实际上 DAS 不可用,因为它不是随 DB2 Connect PE 一起交付的。 15.4 DB2 维护 建议为在复制环境中使用的各种 DB2 产品安装最新的维护。 15.5 Web 上的数据差异实用程序 可以从 Web 上的以下网址处下载“数据差异实用程序”(DDU): ftp://ftp.software.ibm.com/ps/products/datapropagator/fixes/。DDU 是一个样本实用程序,可以用来对同一文件的两个版本进行比较,并生成一个输出文件,显示这两个文件之间的差异。有关更多信息,参见随样本实用程序提供的自述文件。 15.6 Chapter 3. Data Replication Scenario 15.6.1 复制方案 查看 DataPropagator Web 站点(http://www.ibm.com/software/data/dpropr/)的 Library 页,以了解另一异机种数据复制方案。遵循该方案中的步骤,将 AIX 上的 Oracle 数据库中的复制源表中的更改复制到 DB2 Windows NT 版上的数据库的目标表中。该方案使用“DB2 DataJoiner 复制管理”(DJRA)工具、Capture 触发器、Apply 程序和 DB2 DataJoiner。 在该书的第 44 页上的第 6 步中有关创建密码文件的指示信息应为如下所示: Step 6: Create a password file Because the Apply program needs to connect to the source server, you must create a password file for user authentication. Make sure that the user ID that will run the Apply program can read the password file. To create a password file: From a Windows NT command prompt window, change to the C:\scripts directory. Create a new file in this directory called DEPTQUAL.PWD. You can create this file using any text editor, such as Notepad. The naming convention for the password file is applyqual.pwd; where applyqual is a case-sensitive string that must match the case and value of the Apply qualifier used when you created the subscription set. For this scenario, the Apply qualifier is DEPTQUAL. 注意: The filenaming convention from Version 5 of DB2 DataPropagator is also supported. The contents of the password file has the following format: SERVER=server USER=userid PWD=password Where: server The name of the source, target, or control server, exactly as it appears in the subscription set table. For this scenario, these names are SAMPLE and COPYDB. userid The user ID that you plan to use to administer that particular database. This value is case-sensitive for Windows NT and UNIX operating systems. password The password that is associated with that user ID. This value is case-sensitive for Windows NT and UNIX operating systems. Do not put blank lines or comment lines in this file. Add only the server-name, user ID, and password information. The contents of the password file should look similar to: SERVER=SAMPLE USER=subina PWD=subpw SERVER=COPYDB USER=subina PWD=subpw 有关 DB2 认证和安全性的更多信息,参考《IBM DB2 管理指南》。 15.7 Chapter 5. Planning for Replication 15.7.1 表和列名 复制不支持带有空格的表名和列名。 15.7.2 DATALINK 复制 DATALINK 复制可用于“Solaris 操作环境”作为版本 7.1 修订包 1 中的一部分。它需要在源和目标 DATALINK 文件系统中运行的 FTP 守护程序,它还支持使用 MDTM(modtime)命令,该命令会显示给定文件的最新修改时间。若您正在使用“Solaris 操作环境”的版本 2.6,或者不包括对 MDTM 的 FTP 支持的任何其它版本,则需要其它软件,如 WU-FTPD。 不能在 AS/400 上的 DB2 数据库与其它平台上的 DB2 数据库之间复制 DATALINK 列。 在 AS/400 平台上,不支持复制 DATALINK 值的“注释”属性。 如果运行的是 AIX 4.2,则在运行缺省用户出口程序(ASNDLCOPY)之前,必须安装 APAR IY03101(AIX 4210-06 RECOMMENDED MAINTENANCE FOR AIX 4.2.1)的 PTF。此 PTF 包含了对 PTF 守护程序中“modtime/MDTM”命令的 Y2K 修正。要验证修正,检查从“modtime ”命令中返回的上一次修正时间,其中 是在 2000 年 1 月 1 日之后修改的文件。 如果目标表是外部 CCD 表,则 DB2 DataPropagator 会调用 ASNDLCOPY 例程以复制 DATALINK 文件。有关如何使用 ASNDLCOPY 和 ASNDLCOPYD 程序的最新消息,参见每个程序源代码的前言部分。下列限制适用: 内部 CCD 表可包含 DATALINK 指示符,但不能包含 DATALINK 值。 压缩的外部 CCD 表可包含 DATALINK 值。 未压缩的 CCD 目标表不能包含任何 DATALINK 列。 如果源服务器和目标服务器为同一服务器,则预订集一定不能包含带有 DATALINK 列的任何成员。 15.7.3 LOB 局限性 压缩的内部 CCD 表不能包含对 LOB 列或 LOB 指示符的引用。 15.7.4 Planning for Replication 第 65 页的“Connectivity”应包括以下事实: If the Apply program cannot connect to the control server, the Apply program terminates. 在对 AS/400 使用数据分块时,必须确保要在该时间间隔期间复制的数据总量不超过“4,000,000 行”,而不是书中第 69 页所说的“4 MB”。 15.8 Chapter 6. Setting up Your Replication Environment 15.8.1 随处更新先决条件 如果想要设置带有冲突检测且在预订集中有超过 150 个预订集成员的随处更新复制,则必须运行以下 DDL 以在控制服务器上创建 ASN.IBMSNAP_COMPENSATE 表: CREATE TABLE ASN.IBMSNAP_COMPENSATE ( APPLY_QUAL char(18) NOT NULL, MEMBER SMALLINT, INTENTSEQ CHAR(10) FOR BIT DATA, OPERATION CHAR(1)); 15.8.2 设置复制环境 第 95 页“Customizing CD table, index, and tablespace names”中声明 DPREPL.DFT 文件在 \sqllib\bin 目录或者 \sqllib\java 目录中。这是不正确的,DPREPL.DFT 应该是在 \sqllib\cc 目录中。 在第 128 页上,保留限制描述应该声明仅当 Capture 热启动或者当您使用 Capture 修剪命令时,才使用保留限制来修剪行。如果利用自动修剪选项来启动 Capture,则 Capture 将不使用保留限制来修剪行。 15.9 Chapter 8. Problem Determination “复制分析器”在 Windows 32 位系统和 AIX 上运行。要在 AIX 上运行“分析器”,应确保在 PATH 环境变量中,sqllib/bin 目录在 /usr/local/bin 之前出现,以避免与 /usr/local/bin/analyze 发生冲突。 “复制分析器”还有两个附加的可选关键字 CT 和 AT。 CT=n 仅显示在 Capture 跟踪表中出现不到 n 天的那些条目。此关键字是可选的。如果未指定此关键字,则缺省值为 7 天。 AT=n 仅显示在 Apply 跟踪表中出现不到 n 天的那些条目。此关键字是可选的。如果未指定此关键字,则缺省值为 7 天。 示例: analyze mydb1 mydb2 f=mydirectory ct=4 at=2 deepcheck q=applyqual1 对于“复制分析器”,更新了以下关键字信息: deepcheck 指定“分析器”执行更为彻底的分析,包括下列信息:CD 和 UOW 表调整信息、DB2 OS/390 版表空间分区和压缩详细信息、有关预订键的目标索引的分析、预订时间限制和预订集 SQL 语句错误。分析会涵盖所有服务器。此关键字是可选的。 lightcheck 指定下列信息应从报告中排除:即下列项中的所有列详细信息应被排除:ASN.IBMSNAP_SUBS_COLS 表、预订错误、不规则或忽略的内容,以及不正确或效率低的索引。信息的减少会节省资源,并使生成的 HTML 输出文件更小一些。此关键字是可选的,且它与 deepcheck 关键字互斥。 “分析器”工具是在 PTF 中提供的,供在 AS/400 平台上进行复制之用。这些工具收集有关复制环境的信息,并生成一个 HTML 文件,该文件可发送至“IBM 服务代表”以帮助确定问题所在。要获取 AS/400 工具,下载适当的 PTF(例如,对于产品 5769DP2,必须下载 PTF SF61798 或其最新的替代产品)。 将以下问题和解决方案添加至“Troubleshooting”一节: Problem: The Apply program loops without replicating changes; the Apply trail table shows STATUS=2. The subscription set includes multiple source tables. To improve the handling of hotspots for one source table in the set, an internal CCD table is defined for that source table, but in a different subscription set. Updates are made to the source table but the Apply process that populates the internal CCD table runs asynchronously (for example, the Apply program might not be started or an event not triggered, and so on). The Apply program that replicates updates from the source table to the target table loops because it is waiting for the internal CCD table to be updated. To stop the looping, start the Apply program (or trigger the event that causes replication) for the internal CCD table. The Apply program will populate the internal CCD table and allow the looping Apply program to process changes from all source tables. A similar situation could occur for a subscription set that contains source tables with internal CCD tables that are populated by multiple Apply programs. 15.10 Chapter 9. Capture and Apply for AS/400 在第 178 页上,“A note on work management”应为如下内容: You can alter the default definitions or provide your own definitions. If you create your own subsystem description, you must name the subsystem QZSNDPR and create it in a library other than QDPR. See "OS/400 Work Management V4R3", SC41-5306 for more information about changing these definitions. 将以下内容添加至第 178 页的“Verifying and customizing your installation of DB2 DataPropagator for AS/400”: If you have problems with lock contention due to high volume of transactions, you can increase the default wait timeout value from 30 to 120. You can change the job every time the Capture job starts or you can use the following procedure to change the default wait timeout value for all jobs running in your subsystem: Issue the following command to create a new class object by duplicating QGPL/QBATCH: CRTDUPOBJ OBJ(QBATCH) FROMLIB(QGPL) OBJTYPE(*CLS) TOLIB(QDPR) NEWOBJ(QZSNDPR Change the wait timeout value for the newly created class (for example, to 300 seconds): CHGCLS CLS(QDPR/QZSNDPR) DFTWAIT(300) Update the routing entry in subsystem description QDPR/QZSNDPR to use the newly created class: CHGRTGE SBSD(QDPR/QZSNDPR) SEQNBR(9999) CLS(QDPR/QZSNDPR 在第 194 页上,“Using the delete journal receiver exit routine”应该包括下面这一句: If you remove the registration for the delete journal receiver exit routine, make sure that all the journals used for source tables have DLTRCV(*NO). 在第 195 页,ADDEXITPGM 命令参数应为: ADDEXITPGM EXITPNT(QIBM_QJO_DLT_JRNRCV) FORMAT(DRCV0100) PGM(QDPR/QZSNDREP) PGMNBR(*LOW) CRTEXITPNT(*NO) PGMDTA(65535 10 QSYS) 15.11 Chapter 10. Capture and Apply for OS/390 在第 10 章中,更新了下列段落: 15.11.1 Prerequisites for DB2 DataPropagator for OS/390 You must have DB2 for OS/390 Version 5, DB2 for OS/390 Version 6, or DB2 for OS/390 Version 7 to run DB2 DataPropagator for OS/390 Version 7 (V7). 15.11.2 UNICODE and ASCII Encoding Schemes on OS/390 DB2 DataPropagator for OS/390 V7 supports UNICODE and ASCII encoding schemes. To exploit the new encoding schemes, you must have DB2 for OS/390 V7 and you must manually create or convert your DB2 DataPropagator source, target, and control tables as described in the following sections. However, your existing replication environment will work with DB2 DataPropagator for OS/390 V7 even if you do not modify any encoding schemes. 15.11.2.1 Choosing an Encoding Scheme If your source, CD, and target tables use the same encoding scheme, you can minimize the need for data conversions in your replication environment. When you choose encoding schemes for the tables, follow the single CCSID rule: Character data in a table space can be encoded in ASCII, UNICODE, or EBCDIC. All tables within a table space must use the same encoding scheme. The encoding scheme of all the tables in an SQL statement must be the same. Also, all tables that you use in views and joins must use the same encoding scheme. If you do not follow the single CCSID rule, DB2 will detect the violation and return SQLCODE -873 during bind or execution. Which tables should be ASCII or UNICODE depends on your client/server configuration. Specifically, follow these rules when you choose encoding schemes for the tables: Source or target tables on DB2 for OS/390 can be EBCDIC, ASCII, or UNICODE. They can be copied from or to tables that have the same or different encoding scheme in any supported DBMS (DB2 family, or non-DB2 with DataJoiner). On a DB2 for OS/390 source server, all CD, UOW, register, and prune control tables on the same server must use the same encoding scheme. To ensure this consistency, always specify the encoding scheme explicitly. All the control tables (ASN.IBMSNAP_SUBS_xxxx) on the same control server must use the same encoding scheme. Other control tables can use any encoding scheme; however, it is recommended that the ASN.IBMSNAP_CRITSEC table remain EBCDIC. 15.11.2.2 Setting Encoding Schemes To specify the proper encoding scheme for tables, modify the SQL that is used to generate the tables: Create new source and target tables with the proper encoding scheme, or change the encoding schemes of the existing target and source tables. It is recommended that you stop the Capture and Apply programs before you change the encoding scheme of existing tables, and afterwards that you cold start the Capture program and restart the Apply program. To change the encoding scheme of existing tables: Use the Reorg utility to copy the existing table. Drop the existing table. Re-create the table specifying the new encoding scheme. Use the Load utility to load the old data into the new table. See the DB2 Universal Database for OS/390 Utility Guide and Reference for more information on the Load and Reorg utilities. Create new control tables with the proper encoding scheme or modify the encoding scheme for existing ones. DPCNTL.MVS is shipped with DB2 for OS/390 in sqllib\samples\repl and it contains several CREATE TABLE statements that create the control tables. For those tables that need to be ASCII or UNICODE (for example, ASN.IBMSNAP_REGISTER and ASN.IBMSNAP_PRUNCNTL), add the CCSID ASCII or CCSID UNICODE keyword, as shown in the following example. CREATE TABLE ASN.IBMSNAP_PRUNCNTL ( TARGET_SERVER CHAR( 18) NOT NULL, TARGET_OWNER CHAR( 18) NOT NULL, TARGET_TABLE CHAR( 18) NOT NULL, SYNCHTIME TIMESTAMP, SYNCHPOINT CHAR( 10) FOR BIT DATA, SOURCE_OWNER CHAR( 18) NOT NULL, SOURCE_TABLE CHAR( 18) NOT NULL, SOURCE_VIEW_QUAL SMALLINT NOT NULL, APPLY_QUAL CHAR( 18) NOT NULL, SET_NAME CHAR( 18) NOT NULL, CNTL_SERVER CHAR( 18) NOT NULL, TARGET_STRUCTURE SMALLINT NOT NULL, CNTL_ALIAS CHAR( 8) ) CCSID UNICODE DATA CAPTURE CHANGES IN TSSNAP02; To modify existing control tables and CD tables, use the Reorg and Load utilities. When you create new replication sources or subscription sets, modify the SQL file generated by the administration tool to specify the proper encoding scheme. The SQL has several CREATE TABLE statements that are used to create the CD and target tables for the replication source and subscription set, respectively. Add the keyword CCSID ASCII or CCSID UNICODE where appropriate. For example: CREATE TABLE user1.cdtable1 ( employee_name varchar, employee_age decimal ) CCSID UNICODE; The DB2 UDB for OS/390 SQL Reference contains more information about CCSID. 15.12 Chapter 11. Capture and Apply for UNIX platforms 15.12.1 为 UNIX 和 Windows 上的 Capture 和 Apply 设置环境变量 如果使用代码页而不是缺省代码页值创建源数据库,则应将 DB2CODEPAGE 环境变量设置为该代码页。有关在设置 DB2CODEPAGE 之前派生代码页值的信息,参见《DB2 管理指南》。Capture 必须与它正在捕获其数据的数据库运行于同一代码页中。DB2 从 Capture 正运行于其中的活动环境中派生 Capture 代码页。如果未设置 DB2CODEPAGE,则 DB2 将从操作系统中派生代码页值。如果在创建数据库时使用了缺省代码页,则从操作系统中派生的值对于 Capture 来说是正确的。 15.13 Chapter 14. Table Structures 在第 339 页上,将以下句子追加至值“2”的 STATUS 列描述: If you use internal CCD tables and you repeatedly get a value of "2" in the status column of the Apply trail table, go to "Chapter 8: Problem Determination" and refer to "Problem: The Apply program loops without replicating changes, the Apply trail table shows STATUS=2". 15.14 Chapter 15. Capture and Apply Messages 消息 ASN0017E 应为: ASN0017E The Capture program encountered a severe internal error and could not issue the correct error message. The routine name is "routine". The return code is "return_code". 应添加消息 ASN1027S: ASN1027S There are too many large object (LOB) columns specified. The error code is "". Explanation: Too many large object (BLOB, CLOB, or DBCLOB) columns are specified for a subscription set member. The maximum number of columns allowed is 10. User response: Remove the excess large object columns from the subscription set member. 消息 ASN1048E 应为如下内容: ASN1048E The execution of an Apply cycle failed. See the Apply trail table for full details: "" Explanation: An Apply cycle failed. In the message, "" identifies the "", "", and "". User response: Check the APPERRM fields in the audit trail table to determine why the Apply cycle failed. 15.15 Appendix A. Starting the Capture and Apply Programs from Within an Application 在本书的第 399 页上,在启动 Capture 和 Apply 程序的 Sample 例程的注释中出现了一些错误;但样本中的代码是正确的。样本中较后面的部分涉及 Apply 参数,尽管注释指示它涉及 Capture 参数。 可在下列目录中获得 Apply 和 Capture API 的样本,以及它们各自的 makefile。 对于 NT - sqllib\samples\repl 对于 UNIX - sqllib/samples/repl System Monitor Guide and Reference 16.1 db2ConvMonStream 在 Usage Notes 中,快照变量数据流类型 SQLM_ELM_SUBSECTION 的结构应为 sqlm_subsection。 Troubleshooting Guide 17.1 在用户未登录的情况下在 Windows 95、Windows 98 和 Windows ME 上启动 DB2 要使 db2start 命令在 Windows 95、Windows 98 或 Windows Millennium Edition(ME)环境中成功执行,您必须: 使用“Windows 登录”窗口或“Microsoft 联网登录”窗口进行登录 发出 db2logon 命令(参见注释 (NOTE_1) 以了解有关 db2logon 命令的信息)。 此外,在登录期间指定的或是对 db2logon 命令指定的用户标识必须符合 DB2 的需求(参见注释 (NOTE2))。 当 db2start 命令启动时,它首先会查看用户是否已经登录。如果用户已经登录,db2start 命令将使用该用户标识。若用户未登录,db2start 命令将检查是否已经运行了 db2logon 命令,若已经运行了该命令,则 db2start 命令会使用为 db2logon 命令所指定的用户标识。如果 db2start 命令找不到有效的用户标识,命令会终止。 在 Windows 95、Windows 98 和 Windows ME 上安装 DB2 通用数据库版本 7 期间,缺省情况下,当引导系统时,安装软件会为运行 db2start 命令的“启动”文件夹添加快捷方式(有关更多信息,参见注释 (NOTE_1))。如果系统的用户既未登录又未发出 db2logon 命令,则 db2start 命令会终止。 如果您或您的用户未正常登录到 Windows 或某个网络,可通过从批处理文件运行命令来隐藏在运行 db2start 命令之前发出 db2logon 命令的需求,如下所示: 创建一个批处理文件,其内容是发出 db2logon 命令,然后再发出 db2start.exe 命令。例如: @echo off db2logon db2local /p:password db2start cls exit 将该批处理文件命名为 db2start.bat,并将其存储在安装有 DB2 的驱动器和路径下的 /bin 目录中。将该批处理文件存储在此位置以确保操作系统可找到指向该批处理文件的路径。 安装有 DB2 的驱动器和路径存储在 DB2 注册表变量 DB2PATH 中。要查找安装有 DB2 的驱动器和路径,可发出以下命令: db2set -g db2path 假定 db2set 命令返回值 c:\sqllib。在这种情况下,应将该批处理文件存储在如下目录中: c:\sqllib\bin\db2start.bat 要在引导系统时启动 DB2,应从“启动”文件夹中的快捷方式运行批处理文件。有两种选择: 将 DB2 安装程序创建的快捷方式修改为运行批处理文件而不是运行 db2start.exe。在前一示例中,现在快捷方式将运行 db2start.bat 批处理文件。由 DB2 安装程序创建的快捷方式称为 DB2 - DB2.lnk,在大多数系统上,它都位于 c:\WINDOWS\Start Menu\Programs\Start\DB2 - DB2.lnk 中。 添加您自己的快捷方式以运行批处理文件,并删除由 DB2 安装程序添加的快捷方式。使用以下命令来删除 DB2 快捷方式: del "C:\WINDOWS\Start Menu\Programs\Startup\DB2 - DB2.lnk" 如果决定使用您自己的快捷方式,应为该快捷方式设置退出时关闭属性。如果未设置此属性,即使在成功完成了 db2start 命令之后,DOS 命令提示符仍会留在任务栏中。要避免在 db2start 进程期间打开 DOS 窗口,可创建此快捷方式(以及它所运行的 DOS 窗口)集以将运行任务减至最少。 注意: 作为在系统引导期间启动 DB2 的备用方法,可在运行使用 DB2 的任何应用程序之前启动 DB2。参见注释 (NOTE5) 以了解详细信息。 如果使用批处理文件在运行 db2start 命令之前发出 db2logon 命令,且您的用户偶尔会进行登录,则 db2start 命令将继续工作,唯一的差别就是 DB2 将使用已登录的用户的用户标识。参见注释 (NOTE_1) 以了解其它详细信息。 记录: db2logon 命令可模拟用户登录。db2logon 命令的格式为: db2logon userid /p:password 对该命令指定的用户标识必须符合 DB2 的命名要求(参见注释 (NOTE2) 以了解更多信息)。如果发出了命令但未提供用户标识和密码,会打开一个窗口提示用户输入用户标识和密码。如果提供的唯一参数是用户标识,则不会提示用户输入密码;在某些情况下会需要密码,如下面所述。 仅当用户未使用“Windows 登录”窗口或“Microsoft 联网登录”窗口登录时,才使用由 db2logon 命令设置的用户标识和密码值。若用户已经登录,并且已经发出了 db2logon 命令,则 db2logon 命令的用户标识将用于所有 DB2 操作,但对 db2logon 命令指定的密码会被忽略。 当用户未使用“Windows 登录”窗口或“Microsoft 联网登录”窗口登录时,通过 db2logon 命令提供的用户标识和密码使用如下: db2start 命令会在启动时使用用户标识,而不需要密码。 在缺少某些操作(如创建表)的高级限定符的情况下,用户标识将用作高级限定符。例如: 如果发出以下命令:db2logon db2local 然后发出以下命令:create table tab1 则以高级限定符创建的表是 db2local.tab1。 应使用与表和其它对象的模式名完全相同的用户标识。 如果系统充当某服务器的客户机,且用户发出了不带用户标识和密码的 CONNECT 语句(例如 CONNECT TO TEST),并且认证被设置为服务器,则 db2logon 命令中的用户标识和密码将用于验证远程服务器上的用户。如果用户用显式的用户标识和密码进行连接(例如 CONNECT TO TEST USER userID USING password),则将使用对 CONNECT 语句指定的值。 在版本 7 中,用来登录或为 db2logon 命令指定的用户标识必须符合以下 DB2 要求: 它不能是下列任何一项:USERS、ADMINS、GUESTS、PUBLIC、LOCAL 或 SQL Reference 中列示的任何 SQL 保留字。 它不能以 SQL、SYS 或 IBM 开头 字符可包括: A 到 Z(Windows 95、Windows 98 和 Windows ME 支持区分大小写的用户标识) 0 至 9 @、# 或 $ 在定制的交互式安装期间,或如果正在执行响应文件安装且指定了 DB2.AUTOSTART=NO 选项的话,可避免在“启动”文件夹中创建 db2start 快捷方式。如果使用这些选项,“启动”文件夹中将不会有任何 db2start 快捷方式,且您必须添加自己的快捷方式以运行 db2start.bat 文件。 在 Windows 98 和 Windows ME 上提供了一个选项,您可用它来指定总是在 Windows 98 或 Windows ME 启动时进行登录的用户标识。在这种情况下,将不会出现“Windows 登录”窗口。如果使用此选项,只要用户标识符合 DB2 需要,该用户就会登录且 db2start 命令将成功(有关详细信息,参见注释 (NOTE2))。如果不使用此选项,则总是会对用户显示一个登录窗口。如果用户取消了此窗口而未进行登录,db2start 命令将会失败,除非先前从批处理文件发出或调用了 db2logon 命令,如上所述。 如果在系统引导期间未启动 DB2,可由应用程序来启动 DB2。可将 db2start.bat 文件作为使用 DB2 的应用程序初始化的一部分来运行。通过使用这种方法,只有在使用 DB2 的应用程序启动时才会启动 DB2。当用户退出该应用程序时,可发出 db2stop 命令来停止 DB2。如果 DB2 未在系统引导期间启动的话,您的商务应用程序可通过此方式来启动 DB2。 要使用 DB2 Synchronizer 应用程序或从应用程序中调用同步 API, 必须启动 DB2(如果被下载以供执行的脚本包含要对本地实例或本地数据库执行的命令的话)。这些命令可在数据库脚本中、实例脚本中或嵌入在操作系统(OS)脚本中。如果 OS 脚本不包含使用实例或数据库的“命令行处理器”命令或 DB2 API,它可在不启动 DB2 的情况下运行。因为在同步进程中,可能很难预先知道脚本中哪些命令将会进行,所以应在同步开始之前正常启动 DB2。 如果正在从应用程序中调用 db2sync 命令或同步 API,应在应用程序初始化期间启动 DB2。如果您的用户将在“DB2 Windows 版”文件夹中使用 DB2 Synchronizer 快捷方式来启动同步,则必须修改“DB2 同步”快捷方式以运行 db2sync.bat 文件。批处理文件应包含以下命令以确保在同步开始之前 DB2 已在运行: @echo off db2start.bat db2sync.exe db2stop.exe cls exit 在此示例中,假定 db2start.bat 文件调用 db2logon 和 db2start 命令,如上所述。 如果决定在应用程序启动时启动 DB2,应确保 DB2 安装未将快捷方式添加至“启动”文件夹来启动 DB2。参见注释 (NOTE3) 以了解详细信息。 17.2 Chapter 1. Good Troubleshooting Practices 17.2.1 问题分析和环境收集工具 有一个实用程序将帮助您标识与问题相关联的一些信息,并收集其它相关信息来帮助“DB2 客户支持”了解您的环境和问题。本章的其余各节讨论了使用此实用程序收集的大多数信息。该实用程序就是 db2support。 可以在 命令参考 中找到有关语法和命令行选项的详细信息。 该实用程序的目的是收集关于正在运行 DB2 的客户机或服务器的环境数据;然后收集大部分输出并将其封装为可浏览的 XML、HTML 或压缩文档。该实用程序还有一个选项,它允许使用交互式问答进程来收集关于您遇到的问题的性质的一些数据。此进程将帮助您弄清楚问题,并在您最终就问题与“DB2 客户支持”联系时为他们提供信息。 注意: 瘦客户机或运行时客户机无法使用此实用程序。该实用程序要求客户机安装 DB2 引擎库。 17.2.1.1 收集输出 该实用程序生成重要数据库系统信息的压缩集合(一个压缩文档)。此压缩文档中有 HTML 格式的基本信息报告,可以用它来查看信息。 缺省情况下,db2support 将不收集表数据、模式(DDL)或日志,以保护客户数据的安全性和敏感度。借助某些选项,用户可以选择包括某些方面的模式和数据(例如,包含归档日志)。应小心地使用揭示数据库模式或数据的选项。调用 db2support 时,将显示一条消息来指示如何处理敏感数据。 下列是要收集并压缩成单个压缩文档的文件: 在所有情况下收集的内容 db2diag.log 所有陷阱文件 锁定列表文件(通过 -d) 转储文件 用户出口(通过 -d) 缓冲池和表空间(SPCS)控制文件(通过 -d) 与系统相关的各种文件 各种系统命令的输出 db config(通过 -d) dbm config 文件 日志文件头文件(通过 -d) 恢复历史文件 db2cli.ini 有选择性收集的内容 活动日志文件 db2dump 目录的内容(即,上面没有收集的内容) 核心文件(-a 表示所有核心文件,-r 表示只收集最新的核心文件) 扩展系统信息(-s) 下列文件组成 HTML 报告的内容: 在所有情况下收集的内容 PMR 号,如果存在的话。(如果指定 -n) 操作系统和级别。(例如,AIX 4.2.1) DB2 发行版信息。 引擎库头信息。 检测是 32 位还是 64 位 DB2 安装路径信息。 有关 db2nodes.cfg 的 EEE 报告内容 有多少个 CPU、磁盘,以及多少内存。 此实例上的数据库列表。 注册表信息、环境,包括路径和库路径。 当前文件系统的可用磁盘空间以及 Unix 的 inode。 JDK 级别。 dbm 配置。 数据库恢复历史文件的列表。 sqllib 目录的 'ls -lR'(或 windows 等价项)。 LIST NODE DIRECTORY LIST ADMIN NODE DIRECTORY LIST DCS DIRECTORY LIST DCS APPLICATIONS EXTENDED 所有已安装的软件的列表。 在指定了 '-s' 的情况下收集的内容 详细的磁盘信息(分区布局、类型、LVM 信息等) 详细的网络信息 内核统计信息 固件版本 其它特定于平台的命令 在已启动了 DB2 的情况下收集的内容 客户机连接状态 db/dbm config(db cfg 需要 -d 选项) CLI config 内存池信息(大小和消耗量)。如果使用了 -d 选项,可以获得完整数据。 LIST ACTIVE DATABASES LIST DATALINKS MANAGERS LIST DCS APPLICATIONS 在已经指定了 -c 且可以连接至数据库的情况下收集的内容 用户表的数目 DB 数据的近似大小 数据库快照 应用程序快照 缓冲池信息 LIST APPLICATIONS LIST COMMAND OPTIONS LIST DATABASE DIRECTORY LIST INDOUBT TRANSACTIONS LIST NODEGROUPS LIST NODES LIST ODBC DATA SOURCES LIST PACKAGES/TABLES LIST TABLESPACE CONTAINERS LIST TABLESPACES LIST DRDA IN DOUBT TRANSACTIONS 如果指定了 '-q',则收集下列内容 启动了交互式问答方式。除了可选的“描述您的问题”问题以及少量请求客户输入的信息之外,所有问题都将有多个选择答案可供选择。将收集所有问题,包括跟踪问题和答案。在某些情况下,该实用程序将要求您执行任务,并将该任务的结果放在附加目录中。使用交互式方式确定要回答的问题时,会使用小型判定树。这些交互式问题可以帮助您确定问题的类别,并可能会根据该类别询问一些其它相关问题并收集附加数据。问题结束时,还将收集已在自动方式下收集的所有数据。将存储所有问题的答案,并准备与在自动方式下收集的所有数据一起发送给服务人员。 17.2.1.2 查看 detailed_system_info.html 如果您正在非英语版的安装上运行 db2support,并在查看 detailed_system_info.html 时遇到困难,可能需要将 Internet Explorer 版本 5 或更高版本与 DOS 编码配合使用。要更改编码,选择“查看 --> 编码 --> 中欧(DOS)”。如果没有必需的编码支持,Internet Explorer 会提示您从 Microsoft Updates Web 站点下载必需的文件。此信息不适用于双字节语言(简体中文、繁体中文、日语和韩国语)。 17.2.1.3 一次一页地查看“DB2 支持工具”语法 要一次一页地查看“DB2 支持工具”的语法,可运行以下命令: db2support | more 17.3 Chapter 2. Troubleshooting the DB2 Universal Database Server 在“Locking and Deadlocks”一节的“Applications Slow or Appear to Hang”小节中,将“Lock waits or deadlocks are not caused by next key locking”下的描述更改为以下内容: Next key locking guarantees Repeatable Read (RR) isolation level by automatically locking the next key for all INSERT and DELETE statements and the next higher key value above the result set for SELECT statements. For UPDATE statements that alter key parts of an index, the original index key is deleted and the new key value is inserted. Next key locking is done on both the key insertion and key deletion. It is required to guarantee ANSI and SQL92 standard RR, and is the DB2 default. Examine snapshot information for the application. If the problem appears to be with next key locking, you can set the DB2_RR_TO_RS option on if none of your applications rely on Repeatable Read (RR) behavior and it is acceptable for scans to skip over uncommitted deletes. When DB2_RR_TO_RS is on, RR behavior cannot be guaranteed for scans on user tables because next key locking is not done during index key insertion and deletion. Catalog tables are not affected by this option. The other change in behavior is that with DB2_RR_TO_RS on, scans will skip over rows that have been deleted but not committed, even though the row may have qualified for the scan. For example, consider the scenario where transaction A deletes the row with column1=10 and transaction B does a scan where column1>8 and column1<12. With DB2_RR_TO_RS off, transaction B will wait for transaction A to commit or rollback. If it rolls back, the row with column1=10 will be included in the result set of transaction B's query. With DB2_RR_TO_RS on, transaction B will not wait for transaction A to commit or rollback. It will immediately receive query results that do not include the deleted row. Do not use this option if you require ANSI and SQL92 standard RR or if you do not want scans to skip uncommitted deletes. 17.4 Chapter 8. Troubleshooting DB2 Data Links Manager 在版本 7 修订包 2 中,在未对 FEDERATED 选项指定值的情况下预编译源文件或绑定绑定文件时,服务器会生成 SQL1179W 警告信息。当源文件或绑定文件包括静态 SQL 对别名的引用时,会生成同一消息。有两个例外情况: 对于“修订包”版本早于“版本 7 修订包 2”的客户机或下级客户机,sqlaprep() API 不会在消息文件中报告此 SQL1179W 警告。在此情况下,“命令行处理器”PRECOMPILE 命令也不会输出该警告。 对于“修订包”版本早于“版本 7 修订包 2”的客户机或下级客户机,sqlabndx API 不会在消息文件中报告此 SQL1179W 警告。但是消息文件也会错误地包括 SQL0092N 消息,指示未创建任何程序包。这是不正确的,因为实际上创建了该程序包。“命令行处理器”BIND 命令返回相同的错误警告。 17.5 Chapter 15. Logged Information 17.5.1 收集基于 UNIX 的系统上的堆栈回溯信息 故障诊断指南不正确地指出,要对多节点系统上的每个节点激活堆栈回溯,需要使用 db2_all 命令。只需要 db2_call_stack 命令。同时使用 db2_all 和 db2_call_stack 将导致产生错误。 在 64 位的平台上使用“DB2 通用数据库” 18.1 第 5 章 配置 18.1.1 LOCKLIST 应该将以下信息添加到“表 2”中。 Parameter Previous Upper Limit Current Upper Limit LOCKLIST 60000 524288 18.1.2 shmsys:shminfo_shmmax 64 位 Solaris 操作系统上的 DB2 用户应该在必要时增大 /etc/system 中的“shmsys:shminfo_shmmax”的值,以便能够分配大量的数据库共享内存集。《DB2 UNIX 版快速入门》一书建议将该参数设置为“机器中 90% 的物理 RAM(以字节计)”。此建议对 64 位实现方法也有效。 但是在《DB2 UNIX 版快速入门》一书中,下列建议有问题:对于具有多于 4 GB RAM 的 32 位系统(在 Solaris 操作系统中,最多可以有 64 GB),若用户将 shmmax 值设置为大于 4 GB 的数,并且正在使用 32 位内核,则内核仅查找较低的 32 位数,有时会导致 shmmax 的值相当小。 18.2 第 6 章 限制 当前在 64 位操作系统上没有 LDAP 支持。 不能在同一路径上创建 32 位和 64 位数据库。例如,若 上存在 32 位数据库,则发出: db2 create db on 若从 64 位实例中发出此命令,则会失败,并出现信息“SQL10004C 存取数据库目录时发生 I/O 错误。” XML Extender 管理和编程 可以在以下 DB2 XML Web 站点上找到 IBM DB2 XML Extender 的《发行说明》: http://www.ibm.com/software/data/db2/extenders/xmlext/library.html MQSeries 本节描述可如何使用 DB2 和 MQSeries 来构造用来进行消息传递和数据库存取的应用程序。本节的重点是可选择在“DB2 通用数据库版本 7.2”中启用的一组函数,类似于“用户定义函数”(UDF)。使用这些基本函数,就可以支持大范围的应用程序,从简单事件通知到数据入库。 有关数据入库应用程序的更多信息,参考最新更新的《数据仓库中心管理指南》(可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 中获取)。 20.1 “DB2 MQSeries 函数”的安装和配置 本节描述如何配置 DB2 环境以使用“DB2 MQSeries 函数”。成功完成下列过程后,就可以在 SQL 中使用“DB2 MQSeries 函数”。这些函数的描述可在《发行说明》的『SQL Reference』一节中找到。 配置和启用“DB2 MQSeries 函数”的基本过程是: 在每台物理机器上安装 MQSeries。 在物理机器上安装 MQSeries AMI。 启用和配置“DB2 MQSeries 函数”。 此外,要利用“DB2 MQSeries 函数”提供的发布/预订功能,还必须在每台物理机器上安装“MQSeries 集成器”或“MQSeries 发布/预订函数”。有关“MQSeries 集成器”的信息,可在以下网址找到:http://www.ibm.com/software/ts/mqseries/integrator。有关“MQSeries 发布/预订”功能部件的信息,可在类别 3 中的 http://www.ibm.com/software/ts/mqseries/txppacs 中找到。 20.1.1 安装 MQSeries 第 1 步是确保 DB2 服务器上至少安装了具有最新修订包的 MQSeries 版本 5.1。如果已安装了此版本的 MQSeries,则跳至下一步“安装 MQSeries AMI”。DB2 版本 7.2 包括要与 DB2 配合使用的 MQSeries 服务器。有关安装 MQSeries 或升级现有 MQSeries 安装的特定于平台的指示信息可在以下网址处的特定于平台的《快速入门》中找到:http://www.ibm.com/software/ts/mqseries/library/manuals。在进行安装过程时,一定要设置缺省队列管理器。 20.1.2 安装 MQSeries AMI 下一步就是安装“MQSeries 应用程序消息传递接口”(AMI)。这是对让管理和编程任务完全分离的 MQSeries 编程接口的扩展。“DB2 MQSeries 函数”需要安装此接口。如果已在 DB2 服务器上安装了 MQSeries AMI,则跳至下一步“启用 DB2 MQSeries 函数”。如果未安装 MQSeries AMI,则可通过随 DB2 7.2 提供的安装程序包或通过从 MQSeries Support Pacs Web 站点(网址为 http://www.ibm.com/software/ts/mqseries/txppacs)下载 AMI 的副本来完成此操作。AMI 可在“第 3 类-产品扩展功能”中找到。为方便起见,我们在提供 DB2 的同时也提供了 MQSeries AMI 的副本。此文件在 sqllib/cfg 目录中。该文件的名称是与操作系统有关的: AIX 版本 4.3 和更高版本 ma0f_ax.tar.Z HP-UX ma0f_hp.tar.Z Solaris 操作环境 ma0f_sol7.tar.Z 或 mq0f_sol26.tar.Z Windows 32 位 ma0f_nt.zip 遵循 AMI 自述文件(包含在压缩安装映象中)中所概述的正常 AMI 安装过程。 20.1.3 启用 DB2 MQSeries 函数 在此步骤中,您将对“DB2 MQSeries 函数”配置和启用数据库。enable_MQFunctions 实用程序是一个非常灵活的命令,它首先会检查是否设置了正确的 MQSeries 环境,然后为 DB2 MQSeries 函数创建缺省配置,启用带有这些函数的指定数据库,并确认配置是否生效。 对于 Windows NT 或 Windows 2000,转至第 5 步。 在 UNIX 上设置组:如果正在 UNIX 上启用这些函数,则必须首先将 DB2 实例所有者(通常是 db2inst1)和与受防护 UDF(通常是 db2fenc1)相关联的用户标识添加至 MQSeries 组 mqm。这对于 DB2 函数存取 MQSeries 是必需的。 在 UNIX 上设置“DB2 环境变量”:将 AMT_DATA_PATH 环境变量添加至 DB2 理解的列表。可编辑文件 $INSTHOME/sqllib/profile.env,将 AMT_DATA_PATH 添加至 DB2ENVLIST。还可使用 db2set 命令。 在 UNIX 上,重新启动数据库实例:要使环境变量更改生效,必须重新启动数据库实例。 将目录切换至 $INSTHOME/sqllib/cfg(对于 UNIX)或 %DB2PATH%/cfg(在 Windows 上)。 运行命令 enable_MQFunctions 以对“DB2 MQSeries 函数”配置和启用数据库。在 DB2 UDB EEE 环境中,只在目录节点上执行此步骤。参考20.6, enable_MQFunctions以获取此命令的完整描述。下面给出了一些常见示例。成功完成后,将启用指定数据库并测试配置。 要使用“命令行处理器”测试这些函数,在连接至启用的数据库后发出下列命令: values DB2MQ.MQSEND('a test') values DB2MQ.MQRECEIVE() 第一个语句会将消息“a test”发送至 DB2MQ_DEFAULT_Q 队列,而第二个语句将接收回该消息。 注意: 作为运行 enable_MQFunctions 的结果,将会建立缺省 MQSeries 环境。将创建 MQSeries 队列管理器 DB2MQ_DEFAULT_MQM 和缺省队列 DB2_DEFAULT_Q。如果 AMT_DATA_PATH 所指向的目录中不存在文件 amt.xml、amthost.xml 和 amt.dtd 的话,将会创建这些文件。如果 amthost.xml 文件不存在,且不包含对 connectionDB2MQ 的定义,则会对该文件添加一行,以指出适当的信息。原始文件的副本将另存为 DB2MQSAVE.amthost.xml。 20.2 MQSeries 消息传递样式 DB2 MQSeries 函数支持三种消息传递模型:数据报、发布/预订(p/s)和请求/应答(r/r)。 作为数据报发送的消息会被发送至单个目的地,且没有应答。在 p/s 模型中,一个或多个发布方将一条消息发送至发布服务,而该发布服务将该消息分发给一个或多个订户。请求/应答类似于数据报,但发送方将接收响应。 20.3 消息结构 MQSeries 自身不会要求或支持它传送的消息的任何特定结构。 其它产品(如“MQSeries 集成器”(MQSI))不支持以 C 或 Cobol 又或是以 XML 字符串组成的消息。MQSI 中的结构化消息是由消息库定义的。XML 消息通常是自述消息结构,也可能是通过库管理的。消息也可能是未组织的,需要用户代码来分析或构造消息内容。这种消息通常是准结构化的,即,它们使用字节位置或固定定界符来隔开消息内的各个字段。“MQSeries 辅助程序向导”提供了对这种准结构化的消息的支持。对 XML 消息的支持是通过 DB2 XML Extender 的某些新增功能部件提供的。 20.4 MQSeries 函数概述 DB2 UDB 版本 7.2 附带提供了一组 MQSeries 函数,允许 SQL 语句包括消息传递操作。这表示此支持可用于以任何受支持的语言(例如 C、Java 和使用任何数据库接口的 SQL)编写的应用程序。下面显示的所有示例都是以 SQL 编写的。可以任何标准方式通过其它编程语言来使用此 SQL。上述所有 MQSeries 消息传递样式都是受支持的。有关 MQSeries 函数的更多信息,参见《发行说明》中的 SQL Reference 一节。 在基本配置中,MQSeries 服务器位于带有 DB2 的数据库服务器的机器上。MQSeries 函数被安装至 DB2,并提供对 MQSeries 服务器的访问。DB2 客户机可能在 DB2 服务器可访问到的任何机器上。多台客户机可通过数据库并行存取 MQSeries 函数。通过提供的这些函数,DB2 客户机可执行 SQL 语句内的消息传递操作。这些消息传递操作允许 DB2 应用程序之间进行通信,或与其它的 MQSeries 应用程序通信。 enable_MQFunctions 命令用来对 MQSeries 函数启用 DB2 数据库。它将自动建立简单的缺省配置,以便客户机应用程序只将其与管理操作配合使用。有关描述,参见20.6, enable_MQFunctions和20.7, disable_MQFunctions。缺省配置使得应用程序程序员能够迅速入门,且有较为简单的接口来进行开发。可根据需要增加配置其它功能。 示例 1:要使用缺省配置发送简单的消息,SQL 语句应为: VALUES DB2MQ.MQSEND('simple message') 这会将消息 simple message 发送至缺省配置指定的 MQSeries 队列管理器和队列。 MQSeries 的“应用程序消息传递接口”(AMI)使得消息传递操作和指示应如何执行这些操作的定义完全分离。这些定义被保存在外部库文件中,且使用“AMI 管理”工具进行管理。这使得 AMI 应用程序易于开发和维护。随 DB2 提供的 MQSeries 函数是以 AMI MQSeries 接口为基础的。AMI 支持使用外部配置文件(称为“AMI 库”)来存储配置信息。缺省配置包括为与 DB2 配合使用而配置的“MQSeries AMI 库”。 MQSeries AMI 中的两个关键概念服务点和策略被引入 DB2 MQSeries 函数。服务点是一个逻辑端点,可在其中发送或接收消息。在 AMI 库中,每个服务点都是使用 MQSeries 队列名和队列管理器定义的。策略定义应该用于给定消息传递操作的服务质量选项。关键服务质量包括消息优先级和持久性。系统提供了缺省服务点和策略定义,开发者可使用它们来更进一步地简化他们的应用程序。可按如下所示重写示例 1 以显式指定缺省服务点和策略名: 示例 2: VALUES DB2MQ.MQSEND('DB2.DEFAULT.SERVICE', 'DB2.DEFAULT.POLICY', 'simple message') 在队列和应用程序所驻留的服务器上,队列可供一个或多个应用程序使用。在许多配置中,可定义多个队列以支持不同的应用程序和目的。因此,在提出 MQSeries 请求时定义不同服务点是非常重要的。这在以下示例中作了演示: 示例 3: VALUES DB2MQ.MQSEND('ODS_Input', 'simple message') 注意: 在此示例中,未定义策略,因此将使用缺省策略。 20.4.1 限制 MQSeries 允许将消息操作和数据库操作组合到单个工作单元中作为原子事务。最初在 UNIX 和 Windows 上,MQSeries 不支持此功能部件。 在使用发送或接收函数时,类型为 VARCHAR 的消息的最大长度是 4000 个字符。发送或接收类型为 CLOB 的消息时,最大长度为 1 MB。这些也是使用 MQPublish 发布消息时的最大消息大小。 处理 CLOB 消息和 VARCHAR 消息时,有时需要不同的函数。通常,MQ 函数的 CLOB 版本与它的对应项使用完全相同的语法。唯一的差别就是它的名称末尾有字符 CLOB。例如,MQREAD 的 CLOB 等价项是 MQREADCLOB。有关这些函数的详细列表,参见43.6.3, MQSeries 函数中现在支持 CLOB 数据。 20.4.2 错误代码 “MQSeries 函数”返回的返回码可在“MQSeries Application Messaging Interface Manual”的“附录 B”中找到。 20.5 使用方案 可在各种方案中使用“MQSeries 函数”。本节将复查一些较常见的方案,包括“基本消息传递”、“应用程序连接”和“数据发布”。 20.5.1 基本消息传递 在所有数据库应用程序连接至同一 DB2 服务器时,会使用以“MQSeries DB2 函数”进行消息传递的最基本形式。客户机对于数据库服务器可以是本地的,也可以分布在网络环境中。 在简单方案中,“客户机 A”调用 MQSEND 函数将用户定义字符串发送至缺省服务位置。然后,会在数据库服务器上的 DB2 内执行 MQSeries 函数。稍后,“客户机 B”会调用 MQRECEIVE 函数来除去缺省服务定义的队列的顶部的消息,并将其返回至客户机。 DB2 会再一次地执行 MQSeries 函数以进行此工作。 数据库客户机可以多种方式使用简单消息传递。消息传递的某些常见用法包括: 数据收集—从一个或多个可能的不同信息源中以消息形式接收信息。信息源可以是商业应用程序(如 SAP),也可以是室内开发的应用程序。可从队列中接收这种数据,并存储在数据库表中以进行进一步的处理或分析。 工作负荷分发—工作请求被发送至由同一应用程序的多个实例共享的队列。在实例准备执行某些工作时,它从包含要执行的工作请求的队列顶部接收到一条消息。使用此技术,多个实例可共享由单个入池请求队列所表示的工作负荷。 应用程序信号发送—几个进程协作时,消息通常用来协调它们的工作。这些消息可能包含执行工作的命令或请求。通常,这种信息发送是单向的;即,启动消息的一方不会得到应答。参见20.5.4.1, 请求/应答通信以获取更多信息。 应用程序通知—通知类似于信息发送,因为数据是从启动器发送出的,且没有响应。但是,通常通知包含有关已发生的商业事件的数据。20.5.4.2, 发布/预订是通知的较高级的形式。 以下方案扩展上述简单方案以合并远程消息传递。即,在“机器 A”和“机器 B”之间发送消息。步骤的顺序如下所示: “DB2 客户机”执行 MQSEND 调用,指定已定义为在“机器 B”上表示远程队列的目标服务。 MQSeries DB2 函数执行实际的 MQSeries 工作以发送消息。“机器 A”上的 MQSeries 服务器接受该消息并保证它会将该消息发送至服务点定义和“机器 A”的当前配置定义的目的地。服务器确定这是“机器 B”上的队列。然后,它会尝试将该消息发送至“机器 B”上的 MQSeries 服务器,在需要时显式重试。 “机器 B”上的 MQSeries 服务器从“机器 A”上的服务器接受该消息,并将其放在“机器 B”上的目标队列中。 “机器 B”上的 MQSeries 客户机请求队列顶部的消息。 20.5.2 发送消息 使用 MQSEND,DB2 用户或开发者选择要发送什么数据,要发送到哪里,以及何时发送。在业界,这通常称之为“发送并遗忘”,表示发送方只根据 MQSeries 的承诺发送协议发送消息,以确保该消息到达目的地。以下示例演示了此过程。 示例 4:: 要将用户定义字符串发送至带有策略 highPriority 的服务点 myPlace: VALUES DB2MQ.MQSEND('myplace','highPriority','test') 此处的策略 highPriority 指的是在“AMI 库”中定义的策略,它将 MQSeries 优先级设置为最高级别,并可能会调整其它服务质量,如持久性,等等。 消息内容可能由 SQL 和用户指定数据的任何合法组合组成。这包括嵌套函数、运算符和强制转型。例如,假定有一个表 EMPLOYEE,带有 VARCHAR 列 LASTNAME、FIRSTNAME 和 DEPARTMENT,要对 DEPARTMENT 5LGA 中的每个雇员发送包含此信息的消息,应执行下列操作: 示例 5: SELECT DB2MQ.MQSEND(LASTNAME || ' ' || FIRSTNAME || ' ' || DEPARTMENT) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' 如果此表还包含整数 AGE 列,还应包括下列各项: 示例 6: SELECT DB2MQ.MQSEND (LASTNAME || ' ' || FIRSTNAME || ' ' || DEPARTMENT|| ' ' || char(AGE)) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' 如果表 EMPLOYEE 具有类型为 CLOB 的 RESUME 列而不是 AGE 列,则可以利用下列语句来发出包含 DEPARTMENT 5LGA 中的每个职员的信息的消息: 示例 7: SELECT DB2MQ.MQSEND (clob(LASTNAME) || ' ' || clob(FIRSTNAME) || ' ' || clob(DEPARTMENT) || ' ' || RESUME)) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' 示例 8: 最后,以下示例显示如何使用任何有效的 SQL 表达式派生消息内容。假定有一个辅助表 DEPT 包含 VARCHAR 列 DEPT_NO 和 DEPT_NAME,可发送包含雇员 LASTNAME 和 DEPT_NAME 的消息: 示例 8: SELECT DB2MQ.MQSEND(e.LASTNAME || ' ' || d.DEPTNAME) FROM EMPLOYEE e, DEPT d WHERE e.DEPARTMENT = d.DEPTNAME 20.5.3 检索消息 “MQSeries DB2 函数”允许接收或读取消息。读取和接收的区别在于读取会在队列顶部返回该消息而不会从队列中除去它,而接收操作会从队列中除去该消息。使用接收操作检索的消息只能被检索一次,而使用读取操作检索的消息允许同一消息被检索多次。以下示例演示了此过程: 示例 8: VALUES DB2MQ.MQREAD() 此示例在由缺省服务使用缺省服务质量策略定义的队列顶部返回包含该消息的 VARCHAR 字符串。非常重要的一点就是要注意,如果没有任何消息可供读取,将返回空值。此操作不会更改队列。 示例 9: VALUES DB2MQ.MQRECEIVE('Employee_Changes') 上述示例显示如何从由 Employee_Changes 服务使用缺省策略定义的队列顶部除去消息。 DB2 有一个非常强大的功能部件能够通过用户定义(或 DB2 提供的)函数生成表。可使用此表函数功能部件来允许队列的内容具体化为一个 DB2 表。以下示例演示了此过程的最简单形式: 示例 10: SELECT t.* FROM table ( DB2MQ.MQREADALL()) t 此查询返回由缺省服务定义的队列中的所有消息和有关这些消息的元数据组成的表。虽然返回的表结构的完整定义是在“附录”中定义的,但第一列仍然会返回该消息的内容和包含元数据的其余列。要想只返回这些消息,示例应重写为: 示例 11: SELECT t.MSG FROM table (DB2MQ.MQREADALL()) t 表函数返回的表与从数据库直接检索的表完全相同。这表示可以各种各样的方式来使用此表。例如,可将一个表的内容与另一个表连在一起或计算队列中消息的数目: 示例 12: SELECT t.MSG, e.LASTNAME FROM table (DB2MQ.MQREADALL() ) t, EMPLOYEE e WHERE t.MSG = e.LASTNAME 示例 13: SELECT COUNT(*) FROM table (DB2MQ.MQREADALL()) t 还可隐藏表的源是根据表函数创建视图的队列的事实。例如,以下示例根据服务 NEW_EMPLOYEES 引用的队列创建称为 NEW_EMP 的视图: 示例 14: CREATE VIEW NEW_EMP (msg) AS SELECT t.msg FROM table (DB2MQ.MQREADALL()) t 在此示例中,视图是使用包含整条消息的单个列定义的。如果只是简单组织了消息(例如包含两个固定长度的字段),它会直接使用 DB2 内置函数来将该消息分为两列。例如,如果知道发送至特定队列的消息总是包含一个 18 字符的姓,且后跟 18 字符的名,则可定义一个视图,将每个字段作为单独的列来包含,如下所示: 示例 15: CREATE VIEW NEW_EMP2 AS SELECT left(t.msg,18) AS LNAME, right(t.msg,18) AS FNAME FROM table(DB2MQ.MQREADALL()) t “DB2 存储过程构建器”的新功能部件“MQSeries 辅助程序向导”可用来创建新的 DB2 表函数和视图,它们会将定界消息结构映射为列。 最后,将一条或多条消息的内容存储到数据库中通常是最好的。这可通过使用 SQL 全权处理并存储消息内容来完成。此过程的可能的最简单示例为: 示例 16: INSERT INTO MESSAGES SELECT t.msg FROM table (DB2MQ.MQRECEIVEALL()) t 假定有一个表 MESSAGES,带有一列 VARCHAR(2000),上述语句会将这些消息从缺省服务队列插入表。可利用此技术来应付各种各样的情况。 20.5.4 应用程序间的连接 应用程序集成是许多解决方案中的一个常见元素。无论是将购买的应用程序集成到现有基本设施中,还是仅将新开发的应用程序集成到现有环境中,我们通常会面对的任务是将不同集合的子系统连接到一起以作为一个整体来运作。MQSeries 通常被视作集成应用程序的基本工具。在大部分硬件、软件和语言环境中都可使用 MQSeries,它提供了非常不同的集合的应用程序互连的方式。 本节将讨论某些应用程序集成方案以及它们如何与 DB2 配合使用。因为主题非常广泛,所以“应用程序集成”的完善处理超出了此工作的范围之外。因此,重点只放在两个简单的主题上:“请求/应答通信”,以及“MQSeries 集成器和发布/预订”。 20.5.4.1 请求/应答通信 对于一个应用程序请求另一个应用程序的服务,“请求/应答”(R/R)通信方法是非常常见的技术。完成此任务的一个方法就是让请求者向服务供应商发送一条消息,请求执行一些工作。一旦工作完成,供应商可能会决定将结果(或只是完成的确认信息)发送回请求者。但使用上述的基本消息传递技术,并非是将发送方的请求与服务供应商的响应连接在一起。除非请求者要等到应答才继续进行,否则必须使用一些机制来将每个应答与其请求相关联。MQSeries 并不强制开发者创建这些机制,它提供了相关标识符,允许交换中的消息相关。 虽然可以多种方法来使用此机制,但最简单的方法是让请求者以使用如下所示的已知相关标识符来标记消息: 示例 17: DB2MQ.MQSEND ('myRequester','myPolicy','SendStatus:cust1','Req1') 此语句将最终参数 Req1 添加至以上的 MQSEND 语句,以指示请求的相关标识符。 要接收对此特定请求的应答,使用相应的 MQRECEIVE 语句来有选择地检索指示服务定义的,与此相关标识符相匹配的第一条消息,如下所示: 示例 18: DB2MQ.MQRECEIVE('myReceiver','myPolicy','Req1') 如果响应请求的应用程序正忙,且请求者在应答送出之前发出了上述 MQRECEIVE,则表明找不到与此相关标识符匹配的任何消息。 要接收服务请求和相关标识符,使用类似如下的语句: 示例 19: SELECT msg, correlid FROM table (DB2MQ.MQRECEIVEALL('aServiceProvider','myPolicy',1)) t 这会返回来自服务 aServiceProvider 的第一个请求的消息和相关标识符。 一旦执行了服务,它就会将应答消息发送至 aRequester 所描述的队列。其间,服务请求者可能正进行其它工作。实际上,并不能保证会在设置时间内响应服务请求。这种应用程序级别超时必须由开发者管理;请求者必须进行轮询以检测是否有应答。 这种与时间无关的异步处理的优点就在于请求者和服务供应商在执行时是完全独立的。它可用来配合仅间歇连接应用程序的环境以及在聚集多个请求或应答之后才进行处理的多个面向批处理的环境。通常在数据仓库环境中使用这种聚集以定期更新数据仓库或可操作数据仓库。 20.5.4.2 发布/预订 简单数据发布 应用程序集成的另一常见方案是让一个应用程序通知其它应用程序所关心的事件。可通过将一条消息发送至由另一应用程序监视的队列很容易地完成此操作。消息的内容可以是用户定义字符串,或者,可由数据库列组成。通常,只需要使用 MQSEND 函数发送简单的消息。如果需要将这种消息并行发送至多个收件人,可使用 MQSeries AMI 的“分发列表”设施。 分发列表是使用“AMI 管理”工具定义的。“分发列表”包含个别服务的列表。发送至分发列表的消息被转发至列表内定义的每个服务。这在已知几个服务始终对每条消息都有兴趣的情况下特别有用。以下示例显示了将消息发送至分发列表 interestedParties 的过程: 示例 20: DB2MQ.MQSEND('interestedParties','information of general interest'); 如果需要对特定服务应接收的消息进行更多的控制,则需要“发布/预订”功能。“发布/预订”系统通常会提供可伸缩的安全的环境,许多订户都可在其中进行注册以从多个发布者接收消息。要支持此功能,可将 MQPublish 接口与“MQSeries 集成器”或“MQSeries 发布/预订”设施配合使用。 MQPublish 允许用户选择指定要与消息相关联的主题。主题允许订户更明确地指定要接受的消息。步骤序列如下所示: MQSeries 管理员配置“MQSeries 集成器”发布/预订功能。 感兴趣的应用程序预订至 MQSI 配置定义的预订点,可选择对其感兴趣的主题。每个订户选择相关主题,还可利用“MQSeries 集成器 V2”的基于内容的预订技术。很重要的一点就是要注意到,队列(由服务名表示)定义订户。 DB2 应用程序将消息发布至服务点“天气”。该消息指示天气是“雨加雪”(带有主题 Austin),并从而通知感兴趣的订户 Austin 的天气是“雨加雪”。 实际发布消息的机制是由 DB2 提供的 MQSeries 函数处理的。使用服务“天气”将该消息发送至“MQSeries 集成器”。 MQSI 从“天气”服务接受该消息,执行 MQSI 配置定义的任何处理,并确定它满足哪些预订。然后,MQSI 将该消息转发至它满足其标准的订户队列。 已预订至“天气”服务且注册为对 Austin 有兴趣的应用程序将在其接收服务中接收消息雨加雪。 要使用所有缺省值和空主题发布此数据,应使用以下语句: 示例 21: SELECT DB2MQ.MQPUBLISH (LASTNAME || ' ' || FIRSTNAME || ' ' || DEPARTMENT|| ' ' ||char(AGE)) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' 完整指定所有参数,并将该消息简化为只包含 LASTNAME,该语句将类似如下所示: 示例 22: SELECT DB2MQ.MQPUBLISH('HR_INFO_PUB', 'SPECIAL_POLICY', LASTNAME, 'ALL_EMP:5LGA', 'MANAGER') FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' 此语句将使用 SPECIAL_POLICY 服务将消息发布至 HR_INFO_PUB 发布服务。这些消息指示发送方是 MANAGER 主题。主题字符串演示多个主题,可指定使用 ':' 将它们连接起来。在此示例中,使用两个主题允许订户向 ALL_EMP 注册或仅向 5LGA 注册以接收这些消息。 要接收发布的消息,必须首先注册对包含给定主题的消息的兴趣,并指示应将消息发送至的订户服务的名称。很重要的一点就是要注意到,AMI 订户服务定义代理服务和接收方服务。代理服务是订户与“发布/预订”代理进行通信的方式,而接收方服务是要将与预订请求相匹配的消息发送至的位置。以下语句注册对主题 ALL_EMP 的兴趣。 示例 23: DB2MQ.MQSUBSCRIBE('aSubscriber', 'ALL_EMP') 一旦应用程序已预订,使用主题 ALL_EMP 发布的消息将转发至由订户服务定义的接收方服务。应用程序可有多个并行预订。要获取满足预订的消息,可使用任何标准消息检索函数。例如,如果订户服务 aSubscriber 将接收方服务定义为 aSubscriberReceiver,则以下语句将以非破坏的形式读取第一条消息: 示例 24: DB2MQ.MQREAD('aSubscriberReceiver') 要确定消息和在其中发布这些消息的主题,应使用其中一个表函数。以下语句将从 aSubscriberReceiver 接收头五条消息,并显示消息和主题: 示例 25: SELECT t.msg, t.topic FROM table (DB2MQ.MQRECEIVEALL('aSubscriberReceiver',5)) t 要读取带有主题 ALL_EMP 的所有消息,可利用 SQL 的功能来发出: 示例 26: SELECT t.msg FROM table (DB2MQ.MQREADALL('aSubscriberReceiver')) t WHERE t.topic = 'ALL_EMP' 注意: 很重要的一点就是要认识到,如果 MQRECEIVEALL 在使用时带有约束,则会影响整个队列,而不仅仅是那些使用主题 ALL_EMP 发布的消息。这是因为先执行了表函数,再才应用约束。 如果不再对预订至特定主题感兴趣,则必须使用如下语句显式取消预订: 示例 27: DB2MQ.MQUNSUBSCRIBE('aSubscriber', 'ALL_EMP') 一旦发出了此语句,发布/预订代理就不再发送与此预订相匹配的消息。 自动发布 数据库消息传递的另一重要技术就是自动发布。在 DB2 内使用触发器设施,可作为触发器调用的一部分来自动发布消息。虽然对于自动数据发布还存在其它技术,但基于触发器的方法允许管理员或开发者在构造消息内容方面有极大的自由,且在触发器操作方面有着很高的灵活性。就象使用任何触发器一样,必须注意执行的频率和成本。下列示例演示了如何将触发器与“MQSeries DB2 函数”配合使用。 以下示例显示每次雇用一个新员工时发布一条消息是很容易的。预订至 HR_INFO_PUB 服务且注册了对 NEW_EMP 的兴趣的任何用户或应用程序都将接收包含每个新员工的日期、名称和部门的消息。 示例 28: CREATE TRIGGER new_employee AFTER INSERT ON employee REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL VALUES DB2MQ.MQPUBLISH('HR_INFO_PUB&', 'NEW_EMP', current date || ' ' || LASTNAME || ' ' || DEPARTMENT) 20.6 enable_MQFunctions enable_MQFunctions 对指定数据库启用 DB2 MQSeries 函数,并验证是否正确执行了 DB2 MQSeries 函数。如果未正确安装和配置 MQSeries 和 MQSeries AMI,命令将会失败。 权限 下列其中一项: sysadm dbadm 在数据库上为 IMPLICIT_SCHEMA(如果函数的隐式或显式模式不存在的话) 对模式具有 CREATEIN 特权(如果模式名 DB2MQ 存在的话) 命令语法 >>-enable_MQFunctions---n--database---u--userid---p--password---> >--+-------+--+------------+----------------------------------->< '-force-' '-noValidate-' 命令参数 -n database 指定要启用的数据库的名称。 -u userid 指定要用来连接至数据库的用户标识。 -p password 指定用户标识的密码。 -force 指定重新安装期间遇到的警告应被忽略。 -noValidate 指定将不验证 DB2 MQSeries 函数。 示例 在以下示例中,将创建 DB2MQ 函数。用户连接至数据库 SAMPLE。使用缺省模式 DB2MQ。 enable_MQFunctions -n sample -u user1 -p password1 使用说明 DB2 MQ 函数按此命令自动创建的模式 DB2MQ 运行。 在执行此命令之前: 确保已安装了 MQ 和 AMI,且 MQSeries 的版本为 5.1 或更高版本。 确保已经定义了环境变量 $AMT_DATA_PATH。 将目录切换至 DB2PATH 的子目录 cfg 在 UNIX 上: 使用 db2set 以将 AMT_DATA_PATH 添加至 DB2ENVLIST。 确保与 UDF 执行相关联的用户帐户是 mqm 组的成员。 确保将调用此命令的用户是 mqm 组的成员。 注意: MQSeries 5.2 不支持 AIX 4.2。 20.7 disable_MQFunctions disable_MQFunctions 对指定数据库禁用 DB2 MQSeries 函数。 权限 下列其中一项: sysadm dbadm 在数据库上为 IMPLICIT_SCHEMA(如果函数的隐式或显式模式不存在的话) 对模式具有 CREATEIN 特权(如果模式名 DB2MQ 存在的话) 命令语法 >>-disable_MQFunctions---n--database---u--userid----------------> >---p--password------------------------------------------------>< 命令参数 -n database 指定数据库的名称。 -u userid 指定要用来连接至数据库的用户标识。 -p password 指定用户标识的密码。 示例 在以下示例中,对数据库 SAMPLE 禁用 DB2MQ 函数。 disable_MQFunctions -n sample -u user1 -p password1 管理工具 部分目录 运行工具之前的附加设置 21.1 在 Linux 上禁用浮点堆栈 21.2 日语版 Linux 环境中所需的特定 Java 级别 控制中心 22.1 选择重定向的复原落实来复原数据库 22.2 管理 DB2 服务器 VSE 版和 VM 版服务器的能力 22.3 Java 1.2 支持“控制中心” 22.4 在 Windows 操作系统上使用联机帮助时发生“快捷方式无效”错误 22.5 键盘快捷方式不起作用 22.6 OS/2 上的 Java 控制中心 22.7 试图在 Windows 操作系统上的日志中查看已完成作业时发生“拒绝存取文件”错误 22.8 多站点更新测试连接 22.9 “DB2 OS/390 版”的“控制中心” 22.10 对“控制中心 OS/390 版”的必需修正 22.11 对“创建空间层”对话框的更改 22.12 “DB2 控制中心”的故障诊断信息 22.13 基于 UNIX 的系统上的控制中心故障诊断 22.14 OS/2 上可能的 Infopops 问题 22.15 jdk11_path 配置参数的帮助 22.16 在使用“脚本中心”或“日志”时出现的 Solaris 系统错误(SQL10012N) 22.17 DPREPL.DFT 文件的帮助 22.18 启动多个控制中心小应用程序 22.19 关于作为小应用程序运行的“控制中心”的联机帮助 22.20 以小应用程序方式运行“控制中心”(Windows 95) 22.21 使用大型查询结果 命令中心 23.1 命令中心交互式页面现在识别语句终止符 信息中心 24.1 对 Java 样本文档的更正 24.2 在 Windows 操作系统上出现“快捷方式无效”错误 24.3 当 Netscape 已打开时,打开 Netscape Navigator 中的外部 Web 链接(基于 UNIX 的系统) 24.4 启动“信息中心”时的问题 存储过程构建器 25.1 对 z/OS 或 OS/390 的 Java 存储过程的支持 25.2 对 z/OS 或 OS/390 的 SQL 存储过程的支持 25.3 对 z/OS 或 OS/390 文档的“存储过程构建器”参考更新 25.4 对设置结果集特性的支持 25.5 删除 Windows NT 上的 DB2 数据库中的过程 向导 26.1 在创建数据库向导中设置范围大小 26.2 “MQSeries 辅助程序”向导 26.3 “OLE DB 辅助程序”向导 运行工具之前的附加设置 21.1 在 Linux 上禁用浮点堆栈 在带有 glibc 2.2.x 的 Linux 环境中,在运行 DB2 Java 工具(如“控制中心”)之前需要禁用浮点堆栈。要禁用浮点堆栈,将 LD_ASSUME_KERNEL 环境变量设置为 2.2.5,如下所示: bash$ export LD_ASSUME_KERNEL=2.2.5 21.2 日语版 Linux 环境中所需的特定 Java 级别 当在日语环境中运行 DB2 Java GUI 工具(例如,“控制中心”)时,Linux 用户需要特定的 JDK 级别。例如,Red Hat Linux 6.2J/7J/7.1/7.2 用户应该使用 IBMJava118-SDK-1.1.8-2.0.i386.rpm 级别。 控制中心 22.1 选择重定向的复原落实来复原数据库 当使用 GUI 工具来复原数据库时,选择重定向的复原选项落实来复原数据库。一旦选择了选项,就会在后台开始复原操作,并且数据库处于复原暂挂状态。如果您取消操作,则数据库将不可用,直到您完成另一次复原为止。 22.2 管理 DB2 服务器 VSE 版和 VM 版服务器的能力 “DB2 通用数据库版本 7 控制中心”已经增强了它对 DB2 服务器 VSE 版和 VM 版数据库的支持。所有“DB2 服务器 VSE 版和 VM 版”数据库对象都可由“控制中心”查看。它还支持 CREATE INDEX、REORGANIZE INDEX 和 UPDATE STATISTICS 语句以及 REBIND 命令。REORGANIZE INDEX 和 REBIND 需要一个在 DB2 服务器 VSE 版和 VM 版主机上运行的存储过程。此存储过程是由“DB2 服务器 VSE 版和 VM 版”的“控制中心 VSE 版和 VM 版”功能部件提供的。 完全集成“控制中心”允许用户管理 DB2,而不管 DB2 服务器运行于何种平台之上。“DB2 服务器 VSE 版和 VM 版”对象与“DB2 通用数据库”对象一起显示在“控制中心”主窗口上。管理这些对象的对应操作和实用程序是通过选择该对象来调用的。例如,用户可列示特定数据库的索引,选择其中一个索引,并对其进行重组。用户还可列示数据库的表并运行更新统计信息,或将表定义为复制源。 有关配置“控制中心”以执行“DB2 服务器 VSE 版和 VM 版”对象的管理任务的信息,参考《DB2 Connect 用户指南》或《安装和配置补遗》。 22.3 Java 1.2 支持“控制中心” “控制中心”使用 Java 1.2 中的双向支持来支持双向语言(如阿拉伯语和希伯莱语)。仅对 Windows NT 平台提供了此支持。 必须为“控制中心”安装 Java 1.2 以对其进行重组和使用: JDK 1.2.2 是在 DB2 UDB CD 上的 DB2\bidi\NT 目录下提供的。 ibm-inst-n122p-win32-x86.exe 是安装程序,而 ibm-jdk-n122p-win32-x86.exe 是 JDK 分布式系统。将这两个文件复制至硬盘驱动器上的临时目录,然后从该位置运行安装程序。 在 \java\Java12 (其中 是 DB2 的安装路径)下安装它。 在 JDK/JRE 安装提示时不要选择 JDK/JRE 作为系统 VM。 在成功安装 Java 1.2 之后,以正常方式启动“控制中心”将使用 Java 1.2。 要停止使用 Java 1.2,可从 \java\Java12 卸载 JDK/JRE,或就将 \java\Java12 子目录重命名为别的目录名。 注意: 不要混淆 \java\Java12 与 \Java12。 \Java12 是 DB2 安装的一部分,且包括对 Java 1.2 的 JDBC 支持。 22.4 在 Windows 操作系统上使用联机帮助时发生“快捷方式无效”错误 在使用“控制中心”联机帮助时,您可能会遇到类似“快捷方式无效”之类的错误。如果最近安装了新的 Web 浏览器或新版本的 Web 浏览器,确保 HTML 与 HTM 文档与正确的浏览器相关联。参见“Windows 帮助”主题“要更改打开文件时启动哪个程序”。 22.5 键盘快捷方式不起作用 在某些语言版本中,对于基于 UNIX 的系统和 OS/2 上的“控制中心”,某些键盘快捷方式(热键)不起作用。请使用鼠标来选择选项。 22.6 OS/2 上的 Java 控制中心 “控制中心”必须安装在 HPFS 格式的驱动器上。 22.7 试图在 Windows 操作系统上的日志中查看已完成作业时发生“拒绝存取文件”错误 在“DB2 通用数据库 Windows NT 版”上,试图打开“日志”以查看在“脚本中心”中创建的作业的详细信息时发生“拒绝存取文件”错误。作业状态显示为完成。当在“脚本中心”中创建的作业包含 START 命令时,会发生此行为。要避免发生此行为,同时在批处理文件和作业本身中使用 START/WAIT 而不是 START。 22.8 多站点更新测试连接 “版本 7 控制中心”中的“多站点更新测试连接”功能受到目标实例版本的限制。要使“远程”测试连接功能运行,目标实例必须至少为版本 7。要在版本 6 中运行“多站点更新测试连接”功能,必须在目标实例上以本地方式启动“控制中心”并从该处运行它。 22.9 “DB2 OS/390 版”的“控制中心” “DB2 UDB 控制中心 OS/390 版”使您可以管理许可证 IBM DB2 实用程序的使用。实用程序功能(作为可单独订购的“DB2 UDB OS/390 版”功能部件的组件)必须已在您的环境中获得许可证并已安装,才能由“DB2 控制中心”进行管理。 "CC390" 数据库(它是在配置 DB2 OS/390 版子系统时使用“控制中心”定义的)用于“控制中心”的内部支持。不要修改此数据库。 尽管“控制中心”目录或“信息中心任务”信息中并未专门提及 DB2 OS/390 版的版本 7.1,但是该文档确实支持 DB2 OS/390 版的版本 7.1 功能。许多特定于 DB2 OS/390 版的版本 6 的功能还与 DB2 OS/390 版的版本 7.1 有关,而目录中特定于 DB2 OS/390 版的版本 7.1 的某些功能没有指明版本。如果已经在“控制中心”上配置了 DB2 OS/390 版的版本 7.1 子系统,您就具有对该版本所有文档的存取权。 要从“DB2 OS/390 版的控制中心”存取和使用“生成 DDL”功能,必须安装“生成 DDL”功能: 对于版本 5,用 DB2 OS/390 版的版本 5 安装 DB2Admin 2.0。 对于版本 6,安装将作为“DB2 OS/390 版的版本 6”的 DB2 Admin 功能部件的 PTF 提供的小型编程增强功能。 对于版本 7.1,“生成 DDL”功能是“DB2 OS/390 版的版本 7.1”中另外定价的 DB2 Admin 功能部件的一部分。 可以从“控制中心”中存取“存储过程构建器”,但是当您启动“DB2 UDB 控制中心”时必须已经安装了“存储过程构建器”。它是“DB2 应用程序开发客户机”的一部分。 要直接在工作站上编目 DB2 OS/390 版子系统,选择使用“客户机配置辅助程序”工具。 在“源”页面上,指定手工配置与数据库的连接单选按钮。 在“协议”页面上,填充适当的通信信息。 在“数据库”页面上,在数据库名字段中指定子系统名。 在“节点选项”页面上,选择配置节点选项(可选)复选框。 在操作系统字段中,从列表中选择 MVS/ESA、OS/390。 单击完成以完成配置。 要通过网关机器来编目“DB2 OS/390 版”子系统,在网关机器中遵循以上的第 1 步至第 6 步,然后: 在客户机上,启动“控制中心”。 右键单击“系统”文件夹,并选择添加。 在“添加系统”对话框中,在系统名字段中输入网关机器名。 在远程实例字段中输入 DB2DAS00。 对于 TCP/IP 协议,在“协议”参数中,在主机名字段中输入网关机器的主机名。 在服务名字段中输入 523。 单击确定以添加系统。您现在就应该看到在系统文件夹中添加的网关机器名。 展开网关机器名。 右键单击“实例”文件夹,并选择添加。 在“添加实例”对话框中,单击刷新以列示网关机器上可用的实例。如果网关机器为 Windows NT 系统,则可能会在实例 DB2 下编目“DB2 OS/390 版”子系统。 选择该实例。会为此实例自动填充协议参数。 单击确定以添加实例。 打开实例文件夹以查看您刚才添加的实例。 展开该实例。 右键单击数据库文件夹,并选择添v加。 单击刷新以显示网关机器上的本地数据库。若您正在“添加数据库”对话框中添加 DB2 子系统,则在“数据库名”字段中输入子系统名。选项:输入子系统(或数据库)的本地别名。 单击确定。 现在已在“控制中心”中成功添加了子系统。打开数据库时,应可看到所显示的 DB2 OS/390 版子系统。 “控制中心 390”一节的第一段内容为: “DB2 UDB 控制中心 OS/390 版”使您可以管理许可证 IBM DB2 实用程序的使用。实用程序功能(作为可单独订购的“DB2 UDB OS/390 版”功能部件的组件)必须已在您的环境中获得许可证并已安装,才能由“DB2 控制中心”进行管理。 本节的内容现在应该为: “DB2 控制中心 OS/390 版”允许您管理许可的 IBM DB2 实用程序的使用。作为可单独订购的产品的元素的实用程序功能必须是许可的,且已经安装在环境中以便由“DB2 控制中心”进行管理。 22.10 对“控制中心 OS/390 版”的必需修正 必须对“DB2 OS/390 版的版本 5”和“DB2 OS/390 版的版本 6”的 390 Enablement 功能部件应用 APAR PQ36382,才能使用版本 7 的“DB2 UDB 控制中心”来管理这些子系统。如果没有此修订,就不能使用版本 7 的“DB2 UDB 控制中心”来对这些子系统运行实用程序。 APAR 应该应用于下列 FMID: DB2 OS/390 版的版本 5 390 启用:FMID JDB551D DB2 for OS/390 Version 6 390 启用:FMID JDB661D 22.11 对“创建空间层”对话框的更改 “<<”和“>>”按钮已从“创建空间层”对话框除去。 22.12 “DB2 控制中心”的故障诊断信息 在《快速入门》一书的『控制中心安装和配置』一章中,标题为『故障诊断信息』的一节告诉您:如果在将“控制中心”作为小应用程序运行出现问题,则在命令窗口中不会设置客户机浏览器的 CLASSPATH。本节还说明应从同一命令窗口启动浏览器。但是,未提供用于启动浏览器的命令。要启动 Internet Explorer,输入 start iexplore 并按 Enter 键。要启动 Netscape,输入 start netscape 并按 Enter 键。这些命令假定浏览器在路径中。如果浏览器不在路径中的话,将其添加至路径或切换至浏览器的安装目录,并重新发出 start 命令。 22.13 基于 UNIX 的系统上的控制中心故障诊断 如果无法在基于 UNIX 的系统上启动“控制中心”,则将 JAVA_HOME 环境变量设置为指向 Java 分布式系统: 如果 java 是安装在 /usr/jdk118 下的,则将 JAVA_HOME 设置为 /usr/jdk118。 对于 sh、ksh 或 bash 外壳程序: export JAVA_HOME=/usr/jdk118. 对于 csh 或 tcsh 外壳程序: setenv JAVA_HOME /usr/jdk118 22.14 OS/2 上可能的 Infopops 问题 如果正在 OS/2 上运行“控制中心”,所使用的屏幕大小为 1024x768 且为 256 色,并启用了 Workplace Shell Palette Awareness,则超出当前窗口边界之外的 infopops 可能会显示成黑色背景上的黑色文本。要修正此问题,可将显示设置更改为超过 256 色,或禁用 Workplace Shell Palette Awareness。 22.15 jdk11_path 配置参数的帮助 在“控制中心”帮助中,“Java Development Kit 1.1 安装路径”(jdk11_path)配置参数的描述中适用于小标题下的一行丢失了。适用于下的完整列表为: 带有本地和远程客户机的数据库服务器 客户机 带有本地客户机的数据库服务器 带有本地和远程客户机的分区数据库服务器 带有本地客户机的卫星数据库服务器 22.16 在使用“脚本中心”或“日志”时出现的 Solaris 系统错误(SQL10012N) 如果从“脚本中心”或“日志”选择了 Solaris 系统,则可能遇到以下错误: SQL10012N — 当装入指定的库“/udbprod/db2as/sqllib/function/unfenced/db2scdar!ScheduleInfoOpenScan”时接收到意外的操作系统错误。SQLSTATE=42724。 这是由 Solaris 运行时链接器中的错误造成的。要更正此问题,应用以下补丁程序: 105490-06(107733 使 105490 作废)Solaris 操作环境 2.6 22.17 DPREPL.DFT 文件的帮助 在“控制中心”中,“工具设置”笔记本的“复制”页帮助中的步骤 5d 为: 将文件保存到“控制中心”的工作目录(例如,SQLLIB\BIN)中,以便系统可以将它用作缺省文件。 步骤 5d 应为: 将文件保存到“控制中心”的工作目录(SQLLIB\CC)中,以便系统可以将它用作缺省文件。 22.18 启动多个控制中心小应用程序 不能在同一机器上同时启动多个“控制中心”小应用程序。此限制适用于在所有受支持的浏览器上运行的“控制中心”。 22.19 关于作为小应用程序运行的“控制中心”的联机帮助 当“控制中心”作为小应用程序来运行时,F1 键只有在具有信息弹出窗口的窗口和记事本中才起作用。 可按下 F1 键,下列组件中出现信息弹出窗口: DB2 通用数据库 OS/390 版 向导 在“控制中心”组件的余下组件中,按 F1 键不会激活任何帮助。要显示其它组件的帮助,请使用“帮助”按钮或“帮助”下拉菜单。 22.20 以小应用程序方式运行“控制中心”(Windows 95) 如果指定了无效的用户标识和密码,则对打开“脚本中心”的尝试可能失败。确保在登录“控制中心”时输入了有效的用户标识和密码。 22.21 使用大型查询结果 用户很容易生成返回多行的查询。但是用户不容易预测实际上可能返回了多少行。对于可能潜在地返回上千(上万)行的查询,可能有两个问题: 可能要花很长时间来检索结果。 可能需要大量的客户机内存用来保存结果。 为了便于完成此过程,DB2将大型结果集分为几个部分。它将一次只检索和显示一个部分的查询结果。 因此: 显示时间将缩短,因为在查看查询的第一部分时也在检索其余部分。 将减少对客户机的内存需求,因为在任何给定时间都只有查询结果的一个部分存储在客户机上。 要控制内存中的查询结果行数: 打开“工具设置”笔记本的“常规”页。 在最大大小一节中,选择: 样本内容来限制“样本内容”窗口中显示的结果行数。在输入字段中指定结果集的部分大小(行数)。 命令中心来限制“命令中心”的“查询结果”页上所显示的结果行数。在输入字段中指定结果集的部分大小(行数)。 当使用“样本内容”窗口或者“命令中心”的“查询结果”页上的查询结果时,内存中的行数字段指示内存中为查询保存的行数。此数目决不能大于最大大小设置。单击下一个来检索结果集的下一部分。当下一个不活动时,就表示已经到达了结果集末尾。 命令中心 23.1 命令中心交互式页面现在识别语句终止符 “命令中心”的“交互式”页面现在识别在“工具”设置中指定的“语句终止符”。如果未指定“语句终止符”,则在缺省情况下会使用换行符。 信息中心 24.1 对 Java 样本文档的更正 信息中心中的“Java 样本”文档与 java 样本源相链接。此源中的 PluginEx.Java 一节不是最新的。有关“扩展控制中心”的最新信息,参见“Java 样本”README 文件、PluginEx.java 文件和 9.2, “扩展控制中心”的示例。 在 Windows 平台上,可以在 x:\sqllib\samples\java 中找到 README 和 PluginEx.java 文件,其中,x 是 DB2 所安装在的驱动器。 在 UNIX 平台上,可以在 /u/db2inst1/sqllib/samples/java 中找到 README 和 PluginEx.java 文件,其中,/u/db2inst1 表示 DB2 所安装在的目录。 24.2 在 Windows 操作系统上出现“快捷方式无效”错误 在使用“信息中心”时,您可能会遇到类似“快捷方式无效”之类的错误。如果最近安装了新的 Web 浏览器或新版本的 Web 浏览器,确保 HTML 与 HTM 文档与正确的浏览器相关联。参见“Windows 帮助”主题“要更改打开文件时启动哪个程序” 24.3 当 Netscape 已打开时,打开 Netscape Navigator 中的外部 Web 链接(基于 UNIX 的系统) 如果 Netscape Navigator 已打开,且正在显示一个本地 DB2 HTML 文档或一个外部 Web 站点,则试图从“信息中心”打开一个外部 Web 站点会导致 Netscape 错误。该错误指出“Netscape 找不到名为 <外部站点> 的文件或目录。” 要解决此问题,应在打开外部 Web 站点之前,关闭打开的 Netscape 浏览器。Netscape 将重新启动并带出该外部 Web 站点。 应注意,在 Netscape 已打开时打开本地 DB2 HTML 文档不会出现此错误。 24.4 启动“信息中心”时的问题 在某些系统上,如果使用“开始”菜单、“第一步”或 db2ic 命令来调用“信息中心”,启动它可能会很慢。如果遇到此问题,应启动“控制中心”,然后选择帮助 --> 信息中心。 存储过程构建器 25.1 对 z/OS 或 OS/390 的 Java 存储过程的支持 在修订包 7 中,向“存储过程构建器”中添加了下列增强功能,以便为 DB2 z/OS 版或 OS/390 版的版本 7 构建解释型 Java 存储过程: 实际成本支持 增强的错误消息处理 启用 LINUX/390 服务器 支持存储过程模式名中使用 @ 符号 已编译的 Java 存储过程在 z/OS 或 OS/390 的任何版本中都不受支持,并且不能使用“存储过程构建器”来创建它。对于任何版本的 DB2 情况也是如此。 要求: 有关 DB2 z/OS 版或 OS/390 版中的先决条件和安装任务,参见 APAR PQ52329。 “集合标识”必须与在 z/OS 或 OS/390 上绑定 JDBC 驱动程序时使用的“集合标识”相匹配。 修改 DB2SPB.ini 文件以包括下列条目: SPOPTION_WLM_JAVA_ENVIRONMENT = WLMENVJ SPOPTION_JAVAPROC_BUILDER = SYSPROC.DSNTJSPP SPOPTION_BIND_OPTIONS_JAVA = ACT(REP) SPOPTION_COLLIDJ = DSNJDBC 要使用“存储过程构建器”创建用于 z/OS 或 OS/390 的 Java 存储过程: 打开“插入 Java 存储过程”向导: 在项目树中的 z/OS 或 OS/390 数据库连接中,右键单击存储过程文件夹。 单击 插入 -> Java 存储过程(使用向导)。向导打开。 完成向导,指定 z/OS 或 OS/390 选项: “集合标识”必须与在 z/OS 或 OS/390 上绑定 JDBC 驱动程序时在 BIND PACKAGE(collid) 上指定的内容相匹配。 “Java 程序包”的缺省值为过程名,但是,可以将此缺省值修改为任何名称。 单击确定。系统会创建存储过程并列示在项目树中。 右键单击存储过程并单击构建。 25.2 对 z/OS 或 OS/390 的 SQL 存储过程的支持 在修订包 7 中,当为 DB2 z/OS 版或 OS/390 版的版本 7(APAR JR16764)构建存储过程时,“存储过程构建器”增强使用了 ALTER 过程。 要使用“存储过程构建器”创建用于 z/OS 或 OS/390 的 SQL 存储过程: 打开“插入 SQL 存储过程”向导: 在项目树中的 z/OS 或 OS/390 数据库连接中,右键单击存储过程文件夹。 单击插入 -> SQL 存储过程(使用向导)。向导打开。 完成向导,指定 z/OS 或 OS/390 选项: “集合标识”必须与在 z/OS 或 OS/390 上绑定 JDBC 驱动程序时在 BIND PACKAGE(collid) 上指定的内容相匹配。 “SQL 程序包”的缺省值为过程名,但是,可以将此缺省值修改为任何名称。 单击确定。系统会创建存储过程并列示在项目树中。 右键单击存储过程并选择构建。 25.3 对 z/OS 或 OS/390 文档的“存储过程构建器”参考更新 在“存储过程构建器”联机帮助的“SQL 存储过程概述”页上,对 IBM DB2 Universal Database SQL Procedures Guide and Reference Version 6 的引用过时了。 有关在 z/OS 或 OS/390 服务器上构建 SQL 存储过程的更多信息,可以参考: DB2 UDB z/OS 版或 OS/390 版 SQL Reference DB2 UDB z/OS 版或 OS/390 版 Application Programming and SQL Guide 25.4 对设置结果集特性的支持 在修订包 7 中,当运行返回结果集的存储过程时,“存储过程构建器”改进了性能。 通过“存储过程构建器”,可以运行存储过程来进行测试。当使用“存储过程构建器”来运行存储过程时,允许您测试是否成功构建了数据库以及是否存在结果集。如果存储过程返回一个大型结果集,则您可能想限制结果窗格中显示的行数和列数。 要编辑存储过程的结果集特性: 单击文件 -> 环境特性。 单击“环境特性”笔记本中的输出选项卡。 要在结果窗格中显示存储过程结果集的所有行,可选择显示所有行复选框。要限制结果窗格中显示的行数,清除显示所有行复选框,并在要显示的行数字段中输入一个数目。 要在结果窗格中显示存储过程结果集的所有数据,可选择显示每一列的所有数据复选框。要限制结果窗格中显示的列宽,清除显示每一列中的所有数据复选框,并在最大列宽字段中输入一个数目(表示字符数)。当数据显示在结果窗格中时,如果数据太长,则会截断数据以满足指定的最大列宽。 单击确定以应用更改。 25.5 删除 Windows NT 上的 DB2 数据库中的过程 在“存储过程构建器”的先前版本中,当从运行在 Windows NT 系统上的 DB2 数据库中删除过程时,DROP PROCEDURE 功能部件不能正确工作。 在修订包 7 中,“存储过程构建器”可以从运行在 Windows NT 系统上的 DB2 数据库中正确删除过程。 向导 26.1 在创建数据库向导中设置范围大小 使用“创建数据库向导”,可对新数据库的“用户表空间”(而不是那些“目录”或“临时表”)设置“范围大小”和“预取装大小”参数。仅当对“向导”的“用户表”页上的“用户表空间”指定了至少一个容器时,才将启用此功能部件。 26.2 “MQSeries 辅助程序”向导 DB2 版本 7.2 提供了新的“MQSeries 辅助程序”向导。此向导创建一个表函数,该函数使用“DB2 MQSeries 函数”来从 MQSeries 队列读取,它是版本 7.2 中的新增项。该向导可以将每条 MQSeries 消息视作一个定界字符串或者定长列字符串,这取决于您的规范。所创建的表函数根据您的规范来对字符串进行分析,并将每条 MQSeries 消息作为表函数的一行来返回。该向导还允许您在表函数的顶部创建视图,以及预览 MQSeries 消息和表函数结果。可以从“存储过程构建器”或者“数据仓库中心”来启动此向导。 此向导的需求是: MQSeries 版本 5.2 MQSeries 应用程序消息传递接口(AMI) DB2 MQSeries 函数 有关这些需求的详细信息,参见 MQSeries。 要获取样本和“MQSeries 辅助程序”向导教程,转至教程部分,网址为: http://www.ibm.com/software/data/db2/udb/ide 26.3 “OLE DB 辅助程序”向导 此向导帮助您创建表函数,该表函数从支持 Microsoft OLE DB 标准的另一个数据库供应商读取数据。可以选择使用 OLE DB 表函数读取的数据创建 DB2 表,并可为 OLE DB 表函数创建视图。可以从“存储过程构建器”或者“数据仓库中心”来启动此向导。 此向导的需求是: OLE DB 供应商(例如,Oracle 和 Microsoft SQL Server) OLE DB 支持函数 要获取样本和“OLE DB 辅助程序”向导教程,转至教程部分,网址为: http://www.ibm.com/software/data/db2/udb/ide 商业智能 部分目录 商业智能教程 27.1 修正商业智能教程 DB2 通用数据库快速导览 数据仓库中心 《管理指南》 29.1 提供的更新 29.2 仓库服务器增强功能 29.3 使用 OS/390 代理程序来运行 Trillium 批处理系统 JCL 29.4 数据仓库中心中的两个新样本程序 29.5 已更新了“利用“DB2 仓库管理器”来管理 ETI.Extract(R) 转换程序” 29.6 使用“公共仓库元数据交换”(CWMI)导入和导出元数据 29.6.1 介绍 29.6.2 导入元数据 29.6.3 运行导入实用程序之后更新元数据 29.6.4 导出元数据 29.7 标记语言元数据导入/导出实用程序 29.7.1 键定义 29.7.2 步骤和进程调度 29.8 SAP 步骤信息 29.8.1 创建在逻辑上不一致的表的可能性 29.9 SAP 连接器信息 29.9.1 SAP 连接器安装限制 29.9.2 GetDetail BAPI 的性能 DB2 OLAP Starter Kit 30.1 OLAP 服务器 Web 站点 30.2 受支持的操作系统服务级别 30.3 在 UNIX 上完成 DB2 OLAP Starter Kit 设置 30.4 “Solaris 操作环境”的附加配置 30.5 所有操作系统的附加配置 30.6 为 OLAP Starter Kit 配置 ODBC 30.6.1 在 UNIX 系统上配置数据源 30.6.1.1 配置 ODBC 环境变量 30.6.1.2 编辑 odbc.ini 文件 30.6.1.3 将数据源添加至 odbc.ini 文件 30.6.1.4 DB2 的 ODBC 设置的示例 30.6.1.5 Oracle 的 ODBC 设置的示例 30.6.2 在 UNIX 系统上配置“OLAP 元数据目录” 30.6.3 在 Windows 系统上配置数据源 30.6.4 在 Windows 系统上配置“OLAP 元数据目录” 30.6.5 在配置数据源之后 30.7 从“OLAP Starter Kit 桌面”进行登录 30.7.1 Starter Kit 登录示例 30.8 手工创建和配置 OLAP Starter Kit 的样本数据库 30.9 将应用程序迁移至 OLAP Starter Kit 版本 7.2 30.10 已知问题和限制 30.11 缺少 OLAP Spreadsheet Add-in EQD 文件 Information Catalog Manager Administration Guide 31.1 信息目录管理器初始化实用程序 31.1.1 31.1.2 许可证发放问题 31.1.3 安装问题 31.2 “信息目录管理器”的增强功能 31.3 Windows 环境中的信息目录管理器与 Sybase 的不兼容性 31.4 使用 DB2 版本 7 信息目录管理器来存取 DB2 版本 5 信息目录 31.5 设置信息目录 31.6 Exchanging Metadata with Other Products 31.7 使用 flgnxoln 命令来交换元数据 31.8 使用 MDISDGC 命令来交换元数据 31.9 调用程序 Information Catalog Manager Programming Guide and Reference 32.1 信息目录管理器原因码 《信息目录管理器用户指南》 信息目录管理器:联机消息 34.1 对 FLG 消息的更正 34.1.1 消息 FLG0260E 34.1.2 消息 FLG0051E 34.1.3 消息 FLG0003E 34.1.4 消息 FLG0372E 34.1.5 消息 FLG0615E 信息目录管理器:联机帮助 35.1 用于 Web 的“信息目录管理器” 《DB2 仓库管理器安装指南》 36.1 提供的《DB2 仓库管理器安装指南》更新 36.2 仓库变换器的软件需求 36.3 iSeries 代理程序的后安装注意事项 36.4 在对 iSeries 仓库代理程序使用转换程序之前 Query Patroller Administration Guide 37.1 DB2 Query Patroller 客户机是一个独立组件 37.2 更改节点状态 37.3 使用 dqpmigrate 从 DB2 Query Patroller 的版本 6 迁移 37.4 Enabling Query Management 37.5 控制表的表空间的位置 37.6 dqpstart 命令的新参数 37.7 iwm_cmd 命令的新参数 37.8 新的注册表变量:DQP_RECOVERY_INTERVAL 37.9 启动 Query Administrator 37.10 用户管理 37.11 数据源管理 37.12 创建作业队列 37.13 作业记帐表 37.14 使用“命令行界面” 37.15 “查询使能器”注释 37.16 DB2 Query Patroller Tracker 可能会返回空白列页 37.17 有关 DB2 Query Patroller Tracker GUI 工具的附加信息 37.18 Query Patroller 和复制工具 37.19 改进 Query Patroller 性能 37.20 版本 6 中创建的 Query Patroller 用户的 EXECUTE 特权丢失 37.21 Query Patroller 限制 37.22 Appendix B. Troubleshooting DB2 Query Patroller Clients 商业智能教程 27.1 修正商业智能教程 “修订包 2”中包括修正“商业智能教程”和“数据仓库中心样本”数据库,它们可用来更正版本 7.1 中存在的各种问题。为应用修正“数据仓库中心样本”数据库,必须执行下列操作: 若尚未安装样本数据库,则使用“第一步”启动板来创建新的样本数据库。单击开始,并选择程序 --> IBM DB2 --> 第一步。 若先前已安装了样本数据库,则删除样本数据库 DWCTBC、TBC_MD 和 TBC。若已经将您想保存的任何数据添加到了样本数据库中,则在删除它们之前应进行备份。要删除这三个样本数据库: 要打开“DB2 命令窗口”,单击开始,并选择程序 --> IBM DB2 --> 命令窗口。 在“DB2 命令窗口”中,输入下列三个命令,在输入每个命令之后按 Enter 键: db2 drop database dwctbc db2 drop database tbc_md db2 drop database tbc 关闭“DB2 命令窗口”。 使用“第一步”启动板来创建新的样本数据库。单击开始,并选择程序 --> IBM DB2 --> 第一步。 DB2 通用数据库快速导览 “快速导览”在“DB2 Linux 版或 Linux/390 版”上不可用。 已优化快速导览,以小系统字体运行。在 OS/2 上,您可能必须调整 Web 浏览器的字体大小以便正确地查看快速导览。可参考 Web 浏览器的帮助,获取关于调整字体大小的信息。要正确地查看快速导览(仅针对 SBCS),建议您使用 8 磅 Helv 字体。对于日本和韩国客户,建议您使用 8 磅 Mincho 字体。设置字体首选项时,确保在“首选项”窗口的“字体”页中选择“使用缺省字体,覆盖文档指定的字体”选项。 在某些情况下,快速导览可能会在第二个浏览器窗口后面启动。要更正此问题,应关闭快速导览,然后遵循3.4, 试图启动 Netscape 时的错误消息中的步骤。 启动快速导览时,可能会看到类似以下内容的 JavaScript 错误: file:/C/Program Files/SQLLIB/doc/html/db2qt/index4e.htm, line 65: Window is not defined. 此 JavaScript 错误会阻碍快速导览启动页 index4e.htm 在快速导览启动后自动关闭。可通过关闭其中显示有 index4e.htm 的浏览器窗口来关闭快速导览启动页。 在『新增内容』一节的“数据管理”主题中提到,在版本 7.1 中支持“按需记录归档支持”。事实并非如此。它还提到: 日志文件的大小已从 4GB 增长为 32GB。 此句应为: 总的活动日志空间已从 4GB 增长为 32GB。 描述 DB2 Data Links Manager 的一节包含如下内容: 而且,它现在支持使用 Veritas XBSA 接口, 以利用 NetBackup 进行备份与复原。 此句应为: 而且,它现在支持 XBSA 接口进行文件归档和复原。支持 XBSA 接口的存储管理器包括 Legato NetWorker 和 Veritas NetBackup。 数据仓库中心 《管理指南》 29.1 提供的更新 已在“修订包 4”中对《数据仓库中心管理指南》作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 29.2 仓库服务器增强功能 已经对“修订包 5”的仓库服务器执行了下列改进: 更新配置参数 服务器将不再将关键配置参数(如服务名)更新为空字符串。 消息 DWC7906 已更新 消息 DWC7906 现在包含报告从属关系问题时先前步骤的名称。 已经对“修订包 4”的仓库服务器执行了下列改进: 代理程序关闭时的错误(rc = 7170),辅助 rc = 6106。 在服务器发送关机请求前关闭代理程序时就会发生此错误。不需要报告此错误,也将不再报告它。 写入日志文件的系统消息和注释 当用户定义程序完成运行时,会将“系统消息”和“注释”写入仓库日志文件。现在,从“正在运行”显示窗口中就可以看见这些消息。 增量落实现在正常运行 如果在步骤填充目标数据库时发生了错误并且“增量落实”的值大于 0,则在发生错误之前落实的所有结果都将出现在目标数据库中。在“修订包 4”之前,会删除部分结果。 在更正更改跟踪级别错误之后无法运行仓库服务器 仓库服务器从系统环境变量 VWS_LOGGING 检索记录目录的名称。如果 VWS_LOGGING 丢失或指向无效的目录名,则使用 TEMP 系统环境变量。如果 TEMP 丢失,或者指向无效的目录名,则记录器跟踪文件会写入 c:\。这更正了“修订包 4”之前的版本中由于从注册表中检索到无效的记录目录名而导致的错误。 对存储过程中的落实命令的附加支持 在用户定义的存储过程运行之后,仓库服务器向代理程序发送了落实命令。 增强的样本内容 仓库服务器不再需要等待代理程序关闭消息,所以“样本内容”运行的效率更高。 现在可以控制跟踪日志文件的大小 现在,可以使用新的系统环境变量 VWS_SERVER_LOG_MAX 来控制跟踪日志文件的大小。如果将 VWS_SERVER_LOG_MAX 的值设置为大于 0,则当日志文件的大小大约等于由 VWS_SERVER_LOG_MAX 的值所指示的字节数时,仓库服务器就将停止增大该日志文件。当日志文件达到最大大小时,会保留最新的跟踪记录条目,并覆盖最旧的条目。执行扩展跟踪时,VWS_SERVER_LOG_MAX=150000000(150M)将是合理的大小。 29.3 使用 OS/390 代理程序来运行 Trillium 批处理系统 JCL OS/390 代理程序现在支持在“数据仓库导入元数据”笔记本中创建的“Trillium 批处理系统”用户定义程序。以前,要运行“Trillium 批处理系统”JCL 文件,需要使用 Windows、AIX 或“Solaris 操作环境”代理程序来远程运行 JCL。借助此更新,可使用 OS/390 代理程序来启动 JCL。 在使用“Trillium 批处理系统”的“导入元数据”笔记本创建“Trillium 批处理系统”用户定义程序步骤时,必须选择“远程主机”作为 OS/390 代理程序的连接,即使 JCL 在代理程序所在的系统上。必须输入用于“远程主机”连接的所有参数。 在创建“Trillium 批处理系统”用户定义程序步骤之后,使用“Trillium 批处理系统”的“特性”笔记本来将代理点更改为想要使用的 OS/390 代理点。 如果 JCL 的名称或输出错误文件包含任何空格或括号,在将其输入脚本、JCL 或输出错误文件字段时,必须将空格或括号用双引号引起来。 29.4 数据仓库中心中的两个新样本程序 “数据仓库中心”带有两个新的样本程序:EEE_Load 和 File_Wait。可使用 EEE_Load 程序来创建在数据入库进程中运行 DB2 UDB EEE AutoLoader 程序时要使用的步骤。使用 File_Wait 程序来创建在等待文件,然后在文件可用时在进程中运行下一步骤时要使用的步骤。有关这些程序的更多信息,参见 README.UDP 文件,该文件位于安装有“数据仓库中心”服务器的系统上的 ..\SQLLIB\TEMPLATES\SAMPLES 目录。 29.5 已更新了“利用“DB2 仓库管理器”来管理 ETI.Extract(R) 转换程序” 已经更新了“利用“DB2 仓库管理器”来管理 ETI.Extract(R) 转换程序”,并且可以从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载。 29.6 使用“公共仓库元数据交换”(CWMI)导入和导出元数据 29.6.1 介绍 除了对标记语言文件的现有支持之外,“数据仓库中心”现在可以在符合“公共仓库元模型”(CWM)标准的 XML 文件之间导入和导出元数据。导入和导出这些符合 CWM 的 XML 文件被称为公共仓库元数据交换(CWMI)。 可从下列“数据仓库中心”对象中导入和导出元数据: 仓库源 仓库目标 主题区,包括进程、源、目标、步骤和级联关系。 用户定义程序 CWMI 导入和导出实用程序目前不支持某些种类的元数据,包括:调度、仓库模式、用户和组。 “数据仓库中心”创建了包含导入和导出进程的结果的日志文件。通常,日志文件是在 x:\program files\sqllib\logging 目录中创建的,(其中,x: 是安装有 DB2 的驱动器),或是在指定为 VWS_LOGGING 环境变量的目录中创建的。日志文件是纯文本;可以使用用任何文本编辑器进行查看。 29.6.2 导入元数据 可以从“数据仓库中心”或者从命令行中导入元数据。 通过导入过程创建的新对象可指定给“数据仓库中心”的缺省安全组。有关更多信息,参见此《发行说明》中的『导入之后更新安全性』。 若您正在导入关于某个步骤的元数据,则可以有多个文件与该步骤相关联。关于该步骤的元数据存储在 XML 文件中但是有时步骤会带有存储为 BLOB 的关联数据。BLOB 元数据与 XML 文件具有相同的名称,但是它保存在对扩展名进行了编号的独立文件中。当您导入时,所有相关步骤文件必须在同一目录中。 在步骤处于测试或生产方式时更新步骤 必须在步骤处于开发方式时,“数据仓库中心”才能更新该步骤的元数据。若步骤处于测试或生产方式,则在导入元数据之前,应使步骤降为开发方式: 登录到“数据仓库中心”。 右键单击您想降级的步骤,并单击方式。 单击开发。 该步骤现在处于开发方式。在导入元数据之后,将该步骤更改回测试或生产方式。 从“数据仓库中心”中导入数据 可以从“数据仓库中心”中导入元数据: 登录到“数据仓库中心”。 在左窗格中,单击仓库。 单击所选 --> 导入元数据 --> 交换文件... 在“导入元数据”窗口中,指定包含您想导入的元数据的文件名。可以输入文件名或者进行浏览以查找该文件。 若您知道文件的位置,则输入您想导入的文件的全限定路径和文件名。一定要包括 .xml 文件扩展名才能指定您想以 XML 格式导入元数据,否则将不能正确地处理该文件。 要进行浏览以查找该文件: 单击省略号(...)按钮。 在“文件”窗口中,将文件类型更改为 XML。 转至正确的目录,并选择您想导入的文件。 注意: 该文件必须具有扩展名 .xml。 单击确定。 在导入元数据窗口中,单击确定以完成操作。 “数据仓库中心”导入该文件时会显示进度窗口。 使用命令行导入元数据 还可以使用命令行来导入元数据。以下是导入命令语法: CWMImport XML_file dwcControlDB dwcUserId dwcPW [PREFIX = DWCtbschema] XML_file 您想导入的 XML 文件的全限定路径和文件名(包括驱动器和目录)。此参数是必需的。 dwcControlDB 想要将元数据导入至的仓库控制数据库的名称。此参数是必需的。 dwcUserId 用来连接至仓库控制数据库的用户标识。此参数是必需的。 dwcPW 用来连接至仓库控制数据库的用户密码。此参数是必需的。 [PREFIX=DWCtbschema] “数据仓库中心”系统表的数据库模式名。若没有为 PREFIX= 指定任何值,则缺省模式名为 IWH。此参数是可选的。 29.6.3 运行导入实用程序之后更新元数据 导入之后更新安全性 为安全起见,“数据仓库中心”不会导入或导出密码。需要根据需要来更新新对象的密码。有关导入注意事项的更多详细信息,参见《数据仓库中心管理指南》的第 12 章『导出和导入数据仓库中心元数据』。 导入元数据时,所有对象都被指定给缺省安全性组。可以更改对该对象具有存取权的组: 登录到“数据仓库中心”。 右键单击包含您想要更改的对象的文件夹。 单击特性,然后单击安全性选项卡。 从选择的仓库组列表中除去组,或者从可用的仓库组列表中添加组。 单击确定。 29.6.4 导出元数据 可以从“数据仓库中心”或者从命令行中导出元数据。 某些步骤带有存储为 BLOB 的元数据。BLOB 元数据被导出至与步骤的 XML 文件具有相同文件名,但带有编号扩展名(.1、.2 等等)的单独文件。 从“数据仓库中心”中导出数据 可以从“数据仓库中心”中导出元数据: 登录到“数据仓库中心”。 在左窗格中,单击仓库。 单击所选 --> 导出元数据--> 交换文件。 在“导出元数据”窗口中,指定将包含所导出的元数据的文件名。可以输入文件名或者进行浏览以查找该文件: 若您知道想要使用的全限定路径和文件名,则在文件名输入字段中输入它。一定要包括 .xml 文件扩展名,以指定您想以 XML 格式来导出元数据。 要进行浏览以查找该文件: 单击省略号(...)按钮。 在文件窗口中,将文件类型更改为 XML。 转至正确的目录,并选择您想要包含导出的元数据的文件。 注意: 您选择的任何现有文件都将被导出的元数据覆盖。 单击确定。 当“导出元数据”窗口显示正确的文件名时,单击可用的对象列表中您想导出其元数据的对象。 单击 > 符号来将所选对象从可用的对象列表移至选择的对象列表。重复以上步骤,直到想要导出的所有对象都列示在选择的对象列表中为止。 单击确定。 “数据仓库中心”创建输入文件,该文件包含有关选择导出的“数据仓库中心”对象的信息,然后导出有关这些对象的元数据。“数据仓库中心”导出元数据时会显示进度窗口。 使用命令行导出元数据 必须首先创建输入文件,才能从命令行导出元数据。输入文件是带有扩展名 .INP 的文本文件,并且它根据想要导出的对象类型列示所有对象。在从“数据仓库中心”中导出时,会自动创建输入文件,但是从命令行导出时,您必须先创建输入文件。可以用任何文本编辑器创建输入文件。输入所有要出现在“数据仓库中心”中的对象名。确保您是在读/写目录中创建该文件的。当运行导出实用程序时,“数据仓库中心”将 XML 文件写入与输入文件所在的目录中。 以下是样本输入文件: Tutorial Fact Table Process Tutorial file source Tutorial target New Program group 在 (进程)一节中,列示您想导出的所有进程。在 (信息资源)一节中,列示您想导出的所有仓库源和目标。“数据仓库中心”会自动包括与这些源和目标相关联的表和列。在 (用户定义程序)一节,列示想要导出的所有程序组。 要导出元数据,在 DOS 命令提示符处输入以下命令: CWMExport INPcontrol_file dwcControlDB dwcUserID dwcPW [PREFIX=DWCtbschema] INPcontrol_file 包含您想导出的对象的 .INP 文件的全限定路径和文件名(包括驱动器和目录)。此参数是必需的。 dwcControlDB 想要从其中导出的仓库控制数据库的名称。此参数是必需的。 dwcUserID 用来连接至仓库控制数据库的用户标识。此参数是必需的。 dwcPW 用来连接至仓库控制数据库的密码。此参数是必需的。 [PREFIX=DWCtbschema] “数据仓库中心”系统表的数据库模式名。若没有为 PREFIX= 指定任何值,则缺省值为 IWH。此参数是可选的。 29.7 标记语言元数据导入/导出实用程序 29.7.1 键定义 如果在标记语言文件中定义的主键和外键与已经在控制数据库中定义的相同,则将忽略在标记语言文件中定义的主键和外键。如果这些键与已经定义的不同,则会发生错误。 29.7.2 步骤和进程调度 导入实用程序不会再删除步骤和进程调度。在标记文件中定义的调度现在已添加至调度的当前列表。这可能会导致出现重复的调度。在将步骤提升至生产方式之前,用户应删除重复的调度。 29.8 SAP 步骤信息 29.8.1 创建在逻辑上不一致的表的可能性 如果满足下列所有条件,则所得到的目标表可能在逻辑上不一致。 BO 具有 GetList 和 GetDetail 导出参数,并且您已经映射了所有键字段。 在 SAP 步骤的“特性”笔记本的“输出参数”页上,您选择了 GetList 导出参数,其 SAP 参数名与用于参数映射的 SAP 参数名不同。 注意: SAP 参数名是指出现在全限定名的句点前面的参数部分。例如,对于参数 DocList.DOCNUMBER,“DocList”就是 SAP 参数名。 在 SAP 步骤的“特性”笔记本的“输出参数”页上,您选择了 GetDetail 导出参数。 示例: DocumentNumber 是一个键字段。DocList.DOCNUMBER 和 DocNumberSelection.OPTION 是 GetList 导出参数。DocData.USERNAME 是一个 GetDetail 导出参数。 将 DocumentNumber 映射至 DocList.DOCNUMBER。(条件 1) 选择 DocNumberSelection.OPTION 作为输出参数。(条件 2,因为 DocNumberSelection 和 DocList 是不同的 SAP 参数名。) 选择 DocData.USERNAME 作为输出参数。(条件 3,因为它是一个 GetDetail 导出参数。) 这些条件将产生其列源是 GetList 和 GetDetail 参数的目标表。然而,不能保证列之间的关系的逻辑一致性。 29.9 SAP 连接器信息 29.9.1 SAP 连接器安装限制 “SAP 连接器”只支持 SAP R/3 系统的英语版安装。 29.9.2 GetDetail BAPI 的性能 如果 GetDetail 有大量的输入参数,则 GetDetail BAPI 性能将会很低。 DB2 OLAP Starter Kit 在某些操作系统平台上,IBM DB2 OLAP Starter Kit 7.2 添加了对 Oracle、MS-SQL、Sybase 和 Informix 关系数据库管理系统(RDBMS)的支持。版本 7.2 中包含用于所有受支持的 RDBMS(包括 DB2)的脚本和工具。但是有一些限制;有关更多信息,参见30.10, 已知问题和限制。 “DB2 通用数据库版本 7.2”的 DB2 OLAP Starter Kit 的服务级别相当于 Hyperion Essbase 6.1 的补丁程序 2 加上 Hyperion Integration Server 2.0 的补丁程序 2。 30.1 OLAP 服务器 Web 站点 要获取关于 DB2 OLAP Starter Kit 的最新安装和用法提示,查看“DB2 OLAP 服务器”Web 站点的 Library 页面: http://www.ibm.com/software/data/db2/db2olap/library.html 30.2 受支持的操作系统服务级别 版本 7.2 的 OLAP Starter Kit 的服务器组件支持下列操作系统和服务级别: 具有 SP 5 的 Windows NT 4.0 服务器和 Windows 2000 AIX 版本 4.3.3 或更高版本 Solaris 操作系统版本 2.6、7 和 8(Sun OS 5.6、5.7 或 5.8) 在 Windows 95、Windows 98、Windows NT 4.0 SP5 和 Windows 2000 上运行的客户机组件。 30.3 在 UNIX 上完成 DB2 OLAP Starter Kit 设置 DB2 OLAP Starter Kit 安装遵循 UNIX 版的“DB2 通用数据库”安装的基本过程。安装程序会将产品文件放置在系统目录中:(对于 AIX:/usr/lpp/db2_07_01;对于 Solaris 操作环境:/opt/IBMdb2/V7.1)。 然后,在创建实例阶段,在实例用户的主目录的 sqllib 下创建两个了 DB2 OLAP 目录(essbase 和 is)。一台机器一次仅可运行一个 OLAP 服务器实例。要完成安装,用户必须手工设置 is/bin 目录,以使它不是指向系统中 is/bin 目录的链接。它应链接至实例主目录内的可写目录。 要完成“Solaris 操作环境版”的安装,使用实例标识进行登录,切换至 sqllib/is 目录,然后输入以下内容: rm bin mkdir bin cd bin ln -s /opt/IBMdb2/V7.1/is/bin/ismesg.mdb ismesg.mdb ln -s /opt/IBMdb2/V7.1/is/bin/olapicmd olapicmd ln -s /opt/IBMdb2/V7.1/is/bin/olapisvr olapisvr ln -s /opt/IBMdb2/V7.1/is/bin/essbase.mdb essbase.mdb ln -s /opt/IBMdb2/V7.1/is/bin/libolapams.so libolapams.so 30.4 “Solaris 操作环境”的附加配置 在“Solaris 操作环境”中,如果 OLAP Starter Kit 未链接至适当的 ODBC 驱动程序,则可能会遇到错误。要避免这些错误,运行以下命令,它将在 $ARBORPATH/bin 中创建指向 OLAP 驱动程序 sqllib/lib/libdb2.so 的链接: ln -s $HOME/sqllib/lib/libdb2.so libodbcinst.so 30.5 所有操作系统的附加配置 从“DB2 通用数据库版本 7”的“修订包 3”开始,DB2 OLAP Starter Kit 就包括需要 Java 的一些功能。在安装“修订包 3”或更新版本之后,在“OLAP 服务器”控制台上可能会看到下列错误消息: 找不到 [directory] [/export/home/arbor7sk/sqllib/essbase/java/],需要装入 JVM。 要更正此错误,执行下列步骤: 作为 DB2 实例所有者登录。 查找 DB2 OLAP Starter Kit 的安装目录。此目录的缺省名称为 essbase。 在 essbase 目录中,创建称为 java 的子目录。 在 java 子目录中,创建下列空文件: essbase.jar essdefs.dtd jaxp.jar parser.jar udf.policy 30.6 为 OLAP Starter Kit 配置 ODBC 要使“OLAP 集成服务器”与关系数据源和“OLAP 元数据目录”之间进行“开放式数据库连接”(ODBC)连接,IBM DB2 OLAP Starer Kit 7.2 需要具有 ODBC.ini 文件。 在 Windows 系统上,此文件位于 HKEY_LOCAL_MACHINE/SOFTWARE/ODBC 下面的“注册表”中。使用“ODBC 数据源管理器”来存储关于如何连接至关系数据源的信息。 在 UNIX 系统上,安装程序将创建模型 odbc.ini 文件。要存储关于如何连接至关系数据源的信息,使用首选编辑器来编辑该文件。 ODBC.ini 文件在 ODBC 程序包中,并且包括在 Microsoft Office 软件中。有关安装 ODBC 驱动程序或“ODBC 管理器”的应用程序的附加信息,可在以下 Web 站点中找到: http://support.microsoft.com/。 对于 AIX 机器上的 Oracle 用户:要为 Oracle 配置 ODBC,必须更新 ODBC.ini 文件以指向 MERANT 3.6 驱动程序。 在版本 7.2 中,OLAP Starter Kit 负责管理与关系数据源和与“OLAP 元数据目录”的 ODBC 连接。为了应用这些 ODBC 连接,OLAP Starter Kit 在 Windows NT 4.0、Windows 2000、AIX 和 Solaris 系统上使用 ODBC 驱动程序。 “DB2 通用数据库版本 6”数据库客户机:在 Windows NT 4.0 SP5 或 Windows 2000、AIX 4.3.3 和 Solaris 操作系统 2.6、7 或 8(Sun OS 5.6、5.7 或 5.8)上为 DB2 版本 6 ODBC 驱动程序。 “DB2 通用数据库 7.1”数据库客户机:在 Windows NT 4.0 SP5 或 Windows 2000、AIX 4.3.3 和 Solaris 操作系统 2.6、7 或 8(Sun OS 5.6、5.7 或 5.8)上为 DB2 版本 7 ODBC 驱动程序。 Oracle 8.04 和 8i SQL*Net 8.0 数据库客户机:在 Windows NT 4.0 SP5 或 Windows 2000、AIX 4.3.3、Solaris 操作系统 2.6、7 或 8(Sun OS 5.6、5.7 或 5.8)上为 MERANT 3.6 ODBC 驱动程序。 MS SQL Server 6.5.201(不需要数据库客户机):在 Windows NT 4.0 SP5 或 Windows 2000 上为 MS SQL Server 6.5 ODBC 驱动程序。 MS SQL Server 7.0(不需要数据库客户机):在 Windows NT 4.0 SP5 或 Windows 2000 上为 MS SQL Server 7.0 ODBC 驱动程序。 30.6.1 在 UNIX 系统上配置数据源 在 AIX 和 Solaris 系统上,必须手工设置 ODBC 的环境变量并编辑 odbc.ini 文件以配置关系数据源和“OLAP 元数据目录”。如果添加了新驱动程序或数据源,或者更改了驱动程序或数据源,则一定要编辑 odbc.ini 文件。 如果您将在 AIX 或 Solaris 系统上使用 DB2 OLAP Starter Kit 来存取 Merant ODBC 源和 DB2 数据库,则按如下所示来更改 .odbc.ini 文件的 DB2 源部分中的“Driver=”属性的值: AIX:驱动程序名为 /usr/lpp/db2_07_01/lib/db2_36.o AIX 的样本 ODBC 源条目: [SAMPLE] Driver=/usr/lpp/db2_07_01/lib/db2_36.o Description=DB2 ODBC Database Database=SAMPLE Solaris 操作环境:“驱动程序”名称为 /opt/IBMdb2/V7.1/lib/libdb2_36.so Solaris 操作环境的样本 ODBC 源条目: [SAMPLE] Driver=/opt/IBMdb2/V7.1/lib/libdb2_36.so Description=DB2 ODBC Database Database=SAMPLE 30.6.1.1 配置 ODBC 环境变量 在 UNIX 系统上,必须设置环境变量以便允许存取 ODBC 核心组件。在 Starter Kit 主目录中提供了用来设置必需的变量的 is.sh 和 is.csh 外壳程序脚本。必须在运行这些脚本的其中之一以后才能使用 ODBC 来连接至数据源。对于您用来运行 OLAP Starter Kit 的用户名,应该在登录脚本中包括这些脚本。 30.6.1.2 编辑 odbc.ini 文件 要在 odbc.ini 文件中配置数据源,必须为 ODBC 数据源添加名称和描述,并在为数据源名创建的单独的一节中提供 ODBC 驱动程序路径、文件名和其它驱动程序设置。安装程序将在 ISHOME 目录中安装样本 odbc.ini 文件。该文件包含类属 ODBC 连接和受支持的 ODBC 驱动程序的配置信息。将该文件作为映射用于关系数据源和“OLAP 元数据目录”的 ODBC 驱动程序的起始点。 如果您使用不同于 odbc.ini 文件的文件,则必须将 ODBCINI 环境变量设置为您使用的文件的名称。 30.6.1.3 将数据源添加至 odbc.ini 文件 在运行 OLAP Starter Kit 服务器的系统上,通过使用诸如 vi 的文本编辑器来打开 odbc.ini 文件。 查找以『ODBC 数据源』开头的那一节,并添加具有数据源名和描述的新的一行,例如: mydata=data source for analysis。为了尽量避免混淆,数据源名应该与 RDBMS 中的数据库的名称相匹配。 通过用方括号将新数据源的名称括起来创建新的一行(例如:[mydata]),以将新的一节添加到文件中。 在数据源名后面的各行上,添加此数据源所需要的 ODBC 驱动程序的全路径和文件名,并添加其它任何必需的 ODBC 驱动程序信息。将下列各节中所显示的示例作为映射至 RDBMS 上的数据源的指南。确保 ODBC 驱动程序文件确实存在于您为 Driver= 设置指定的位置中。 当编辑完 odbc.ini 之后,保存该文件并退出文本编辑器。 30.6.1.4 DB2 的 ODBC 设置的示例 以下示例显示了可以如何使用 IBM DB2 本机 ODBC 驱动程序来编辑 odbc.ini,以便与 AIX 上的“DB2 通用数据库版本 6.1”上的关系数据源 db2data 进行连接。在 vi 编辑器中,使用 $ODBCINI 命令来编辑 odbc.ini 并插入下列语句: [ODBC Data Sources] db2data=DB2 Source Data on AIX ... [db2data] Driver=/home/db2inst1/sqllib/lib/db2.o Description=DB2 Data Source - AIX, native 30.6.1.5 Oracle 的 ODBC 设置的示例 以下示例显示了可以如何使用 MERANT 版本 3.6 ODBC 驱动程序来编辑 odbc.ini,以便与 Oracle 版本 8(在 Solaris 操作环境上)上的关系数据源 oradata 进行连接。在此示例中,LogonID 和 Password 被 OLAP Starter Kit 用户名和密码中使用的实际值覆盖。 [ODBC Data Sources] oradata=Oracle8 Source Data on Solaris ... [myoracle] Driver= /export/home/users/dkendric/is200/odbclib/ARor815.so Description=my oracle source 30.6.2 在 UNIX 系统上配置“OLAP 元数据目录” 在 AIX 和 Solaris 系统上配置“OLAP 元数据目录”类似于配置数据源。对于“OLAP 元数据目录”数据库,将数据源名和一节添加到 odbc.ini 文件中,正如30.6.1.2, 编辑 odbc.ini 文件中所述。不需要执行其它更改。 必须在受支持的 RDBMS 中创建“OLAP 元数据目录”数据库才能将它作为 ODBC 数据源来配置。 以下示例显示了可以如何使用本机 ODBC 驱动程序来编辑 odbc.ini,以便与 DB2 版本 6.1(在 Solaris 操作环境上)上的“OLAP 元数据目录”TBC_MD 进行连接: [ODBC Data Sources] ocd6a5a=db2 v6 ... [ocd6a5a] Driver=/home/db2instl/sqllib/lib/db2.0 Description=db2 30.6.3 在 Windows 系统上配置数据源 要在 Windows NT 或 Windows 2000 系统上配置关系数据源,必须启动“ODBC 管理器”,然后创建与您将用于创建 OLAP 模型和元轮廓的数据源的连接。从 Windows “控制面板”中运行“ODBC 管理器”实用程序。以下示例将创建一个 DB2 数据源;其它 RDBMS 的对话框将是不同的。 要利用“ODBC 管理器”来配置关系数据源,完成下列步骤: 在 Windows 桌面上,打开“控制面板”窗口。 在“控制面板”窗口中,执行下列其中一个步骤: 在 Windows NT 上,双击 ODBC 图标以打开“ODBC 数据源管理器”对话框。 在 Windows 2000 上,双击管理工具图标,然后双击数据源(ODBC) 图标以打开“ODBC 数据源管理器”对话框。 在“ODBC 数据源管理器”对话框中,单击系统 DSN 选项卡。 单击添加以便打开“创建新的数据源”对话框。 在“ODBC 管理器”的“创建新的数据源”对话框的驱动程序列表框中,选择适当的驱动程序(例如 IBM DB2 ODBC 驱动程序),并单击完成以便打开“ODBC IBM DB2 驱动程序 — 添加”对话框。 在“ODBC IBM DB2 驱动程序 — 添加”对话框中,在数据库别名下拉列表中,选择关系源数据的数据库的名称(例如,样本应用程序中的 TBC)。 在描述文本框中输入可选描述,指示如何使用此驱动程序,然后单击添加。例如,输入下列单词来描述“我的业务”数据库: 客户、产品、市场 可以输入下列单词来描述样本应用程序数据库: 样本关系数据源 当您从“OLAP Starter Kit 桌面”中进行连接时,这些描述可以帮助您标识可供选择的数据源。 单击“确定”,以便返回至“ODBC 数据源管理器”对话框。输入的数据源名以及映射至该数据源的驱动程序显示在系统 DSN 选项卡上的系统数据源列表框中。 要编辑数据源的配置信息: 选择数据源名,并单击配置以打开“ODBC IBM DB2 — 添加”对话框。 更正您想更改的任何信息。 单击两次确定退出。 30.6.4 在 Windows 系统上配置“OLAP 元数据目录” 要在 Windows NT 或 Windows 2000 上配置“OLAP 元数据目录”,启动“ODBC 管理器”,然后创建与包含“OLAP 元数据目录”数据库的数据源的连接。 以下示例将创建一个 DB2 数据源;其它 RDBMS 的对话框将是不同的。要为“OLAP 元数据目录”创建数据源,应完成下列步骤: 在桌面上,打开“控制面板”窗口。 在“控制面板”窗口中,执行下列其中一个步骤: 在 Windows NT 上,双击 ODBC 图标以打开“ODBC 数据源管理器”对话框。 在 Windows 2000 上,双击管理工具图标,然后双击数据源(ODBC) 图标以打开“ODBC 数据源管理器”对话框。 在“ODBC 数据源管理器”对话框中,单击系统 DSN 选项卡。 单击添加以便打开“创建新的数据源”对话框。 在“ODBC 管理器”的“创建新的数据源”对话框的驱动程序列表框中,选择适当的驱动程序(例如 IBM DB2 ODBC 驱动程序),并单击完成以便打开“ODBC IBM DB2 驱动程序 — 添加”对话框。 在“ODBC IBM DB2 驱动程序 — 添加”对话框中,在数据库别名下拉列表中,选择“OLAP 元数据目录”的数据库的名称(例如,样本应用程序中的 TBC_MD)。所选的数据库的名称将自动显示在数据源名文本框中。 如果想要更改数据源的名称,选择数据源名文本框中所显示的名称,输入新名称以指示您如何使用此驱动程序,然后单击添加。例如,可以输入以下名称来指示您正在使用驱动程序来与第一个“OLAP 元数据目录”进行连接: OLAP Catalog first 应输入以下名称来指示您正在与样本应用程序“OLAP 元数据目录”数据库进行连接: TBC_MD 在描述文本框中,输入描述用来指示如何使用此驱动程序。例如,可以输入下列语句描述“OLAP 元数据目录”: 我的第一个模型和元轮廓 可以输入下列单词来描述样本应用程序“OLAP 元数据目录”数据库: 样本模型和元轮廓 当您从“OLAP Starter Kit 桌面”来与“OLAP 元数据目录”进行连接时,这些描述可以帮助您标识您想选择的目录。 单击“确定”,以便返回至“ODBC 数据源管理器”对话框。输入的数据源名以及映射至该数据源的驱动程序显示在系统 DSN 选项卡上的系统数据源列表框中。 要编辑数据源的配置信息: 选择数据源名,并单击配置以打开“ODBC IBM DB2 — 添加”对话框。 更正您想更改的任何信息。 单击两次确定退出。 30.6.5 在配置数据源之后 在配置关系数据源和“OLAP 元数据目录”之后,可以从 OLAP Starter Kit 中与它们进行连接。然后,可以创建、修改和保存 OLAP 模型和元轮廓。 在调用 SQL Server 数据库期间,SQL Server ODBC 驱动程序可能会超时。当数据库不忙时再试。增大驱动程序超时期间可能会避免此问题。有关更多信息,参见关于您正在使用的驱动程序的 ODBC 文档。 有关 ODBC 连接问题和解决方案的更多信息,参见 OLAP Integration Server System Administrator's Guide。 30.7 从“OLAP Starter Kit 桌面”进行登录 要使用“OLAP Starter Kit 桌面”来创建 OLAP 模型和元轮廓,必须将客户机软件连接至两个服务器组件:“DB2 OLAP 集成服务器”和“DB2 OLAP 服务器”。登录对话提示您输入要使“桌面”连接至这两个服务器所必需的信息。在对话的左边,输入有关“DB2 OLAP 集成服务器”的信息。在对话右边,输入有关“DB2 OLAP 服务器”的信息。 要连接至“DB2 OLAP 集成服务器”: 服务器:输入“集成服务器”的主机名或 IP 地址。如果已经在桌面所在的同一工作站上安装了“集成服务器”,则典型值为“localhost”或“127.0.0.1”。 OLAP 元数据目录:在连接至“OLAP 集成服务器”时,还必须指定“元数据目录”。“OLAP 集成服务器”会将有关您创建的 OLAP 模型和元轮廓的信息存储在称为“元数据目录”的关系数据库中。必须对 ODBC 注册此关系数据库。目录数据库包含一组特殊的关系表,“OLAP 集成服务器”可识别这些表。在登录对话上,您可指定“集成服务器”,然后展开“OLAP 元数据目录”字段的下拉菜单,以查看“OLAP 集成服务器”识别的 ODBC 数据源名称列表。选择包含元数据目录表的 ODBC 数据库。 用户名和密码:“OLAP 集成服务器”将使用在此屏面上指定的用户名和密码连接至“元数据目录”。这是一个存在于服务器(并非客户机,除非服务器和客户机运行于同一机器上)之上的登录帐户。用户名必须是创建“OLAP 元数据目录”的用户。否则,“OLAP 集成服务器”在目录数据库中将找不到关系表,原因是表模式名不同。 “DB2 OLAP 服务器”信息是可选的,所以“登录”对话右边的输入字段可能会留为空白。但是,“桌面”和“管理器”中的某些操作可能需要您连接至“DB2 OLAP 服务器”。如果将这些字段留为空白,则在“集成服务器”需要连接至“DB2 OLAP 服务器”以完成您请求的操作时,“桌面”将再次显示“登录”对话。建议总是在“登录”对话上填充“DB2 OLAP 服务器”字段。 要连接至“DB2 OLAP 服务器”: 服务器:输入“DB2 OLAP 服务器”的主机名或 IP 地址。如果正在运行 OLAP Starter Kit,则“OLAP 服务器”与“集成服务器”的主机名或 IP 地址相同。如果“集成服务器”与“OLAP 服务器”安装在不同主机上,则输入在“OLAP 集成服务器”上定义的主机名或 IP 地址。 用户名和密码:“OLAP 集成服务器”将使用在此屏面上指定的用户名和密码连接至“DB2 OLAP 服务器”。必须已经对“DB2 OLAP 服务器”定义了此用户名和密码。“OLAP 服务器”管理它自己的用户名和密码,与主机操作系统分开进行。 30.7.1 Starter Kit 登录示例 以下示例假定您创建了“OLAP 样本”,且选择了 db2admin 作为 OLAP Starter Kit 安装期间的管理员用户标识并将 password 作为管理员密码。 对于“OLAP 集成服务器”:“服务器”为 localhost,“OLAP 元数据目录”为 TBC_MD,“用户名”为 db2admin,“密码”为 password 对于“DB2 OLAP 服务器”:“服务器”为 localhost,“用户名”为 db2admin 30.8 手工创建和配置 OLAP Starter Kit 的样本数据库 这些样本数据库是在安装 OLAP Starter Kit 时自动创建的。下列指示信息说明如何手工设置“目录”和“样本”数据库(如果必要的话)。 在 Windows 中,通过单击开始 --> 程序 --> DB2 Windows NT 版 --> 命令窗口来打开“命令中心”窗口。 创建产品目录数据库: 输入 db2 create db OLAP_CAT 输入 db2 connect to OLAP_CAT 在数据库中创建表: 导航至 \SQLLIB\IS\ocscript\ocdb2.sql 输入 db2 -tf ocdb2.sql 创建样本源数据库: 输入 db2 connect reset 输入 db2 create db TBC 输入 db2 connect to TBC 在数据库中创建表: 导航至 \SQLLIB\IS\samples\ 将 tbcdb2.sql 复制至 \SQLLIB\samples\db2sampl\tbc 将 lddb2.sql 复制至 \SQLLIB\samples\db2sampl\tbc 导航至 \SQLLIB\samples\db2sampl\tbc 输入 db2 -tf tbcdb2.sql 输入 db2 - vf lddb2.sql 以将样本源数据装入到表中。 创建样本目录数据库: 输入 db2 connect reset 输入 db2 create db TBC_MD 输入 db2 connect to TBC_MD 在数据库中创建表: 导航至 \SQLLIB\IS\samples\tbc_md 将 ocdb2.sql 复制至 \SQLLIB\samples\db2sampl\tbcmd 将 lcdb2.sql 复制至 \SQLLIB\samples\db2sampl\tbcmd 导航至 \SQLLIB\samples\db2sampl\tbcmd 输入 db2 -tf ocdb2.sql 输入 db2 -vf lcdb2.sql 以将样本元数据装入到表中。 配置 TBC_MD、TBC 和 OLAP_CAT 的 ODBC: 通过单击开始 --> 设置 --> 控制面板来打开 NT 控制面板 从列表选择 ODBC(或 ODBC 数据源)。 选择“系统 DSM”选项卡。 单击添加。创建新数据源窗口打开。 从列表选择 IBM DB2 ODBC DRIVER。 单击完成。“ODBC IBM D2 驱动程序—添加”窗口打开。 在数据源名字段中输入数据源(OLAP_CAT)的名称。 在数据库别名字段中输入别名,或单击向下箭头并从列表选择 OLAP_CAT。 单击“确定”。 对 TBC_MD 和 TBC 数据库重复这些步骤。 30.9 将应用程序迁移至 OLAP Starter Kit 版本 7.2 安装程序不会重新安装 OLAP Starter Kit 样本应用程序、数据库和数据文件。现有应用程序和数据库不会受到任何影响。然而,最好是在安装之前备份应用程序和数据库。 当打开应用程序时,它们会被自动迁移到版本 7.2。 30.10 已知问题和限制 本节列示了 DB2 OLAP Starter Kit 的已知限制。 Informix RDBMS 与 Windows 平台上的 Merant 驱动程序兼容 为了使 Windows 平台的 Merant 驱动程序使用 Informix RDBMS,必须将下列两个条目添加至 PATH 语句: C:\Informix C:\Informix\bin 这两个条目都必须在 PATH 的开头。 OLAP 模型和相关联的元轮廓中的维之间可能存在的不一致性 在某些情况下,可在元轮廓中创建一个维,它在 OLAP 模型中没有相应维。在下列方案中就可能发生这种情况: 创建新的 OLAP 模型并保存它。 根据模型来创建元轮廓,但是不保存元轮廓。 返回至 OLAP 模型,并删除其中一个元轮廓维所基于的维。 返回至元轮廓,保存它,关闭它,然后重新打开它。元轮廓将包含一个维,该维在 OLAP 模型中没有相对应的维。 OLAP Starter Kit 不能区分以此方式创建的维与元轮廓中用户定义的维之间的不一致。因此,不一致的维将显示在元轮廓中,但是,元轮廓认为它是用户定义的维,因为 OLAP 模型中不存在相对应的维。 在 Windows 2000 平台上,TMP 的环境变量设置导致成员和数据装入失败 由于 Windows 2000 与 Windows NT 之间的缺省系统和 TMP 的用户环境变量设置的差异,当 OLAP Starter Kit 在 Windows 2000 平台上运行时,成员和数据装入将失败。所产生的错误消息告诉用户未能创建临时文件。在 Windows 2000 上,可以通过执行下列步骤来解除此限制: 创建一个称为 C:\TEMP 的目录 将系统和用户的环境变量 TMP 都设置为 TMP=C:\TEMP ODBC 的安装不会替换现有的 Merant 驱动程序 现有的 3.6 Merant ODBC 驱动程序将不会被此安装更新。如果您从 OLAP Starter Kit 版本 7.1 修订包 2 或更早的版本进行升级,则应该继续使用先前安装的 ODBC 驱动程序 在 UNIX 平台上使用 Merant Informix ODBC 驱动程序 要在 UNIX 平台上使用 Merant Informix ODBC 驱动程序,必须执行下列其中一个操作: 在启动 Starter Kit 之前,将 LANG 环境变量设置为“en_US”。例如,对于 korn 外壳程序,输入: export LANG='en_US' 每次启动 OLAP Starter Kit 时就设置此变量。 如果您的 LANG 环境变量已经设置为另一值,则在安装之后进行以下符号链接: ln -s $ISHOME/locale/en_US $ISHOME/locale/$LANG 混合 OLAP 客户机和服务器的服务级别 IBM 建议您使 DB2 OLAP Starter Kit 的客户机和服务器组件处于相同的版本和修订包级别。但是,在某些情况下,可能可以混合客户机和服务器组件的不同服务级别: 使用一个版本的但处于不同服务级别的客户机和服务器 IBM 不支持也不建议将较新的客户机与较旧的服务器配合使用。然而,可能可以将较旧的客户机与较新的服务器配合使用,尽管 IBM 不支持这种方式。这样做可能会遇到一些问题。例如: 来自服务器的消息可能不正确。可以通过将客户机上的 message.MDB 文件升级,使它与服务器上的级别相匹配,从而解决此问题。 新服务器功能部件不起作用。当您试图使用新功能部件时,客户机和/或服务器可能会失败。 客户机可能没有与服务器正确连接。 将一个版本内的多个服务器与单个客户机配合使用 如果需要将客户机与不同机器或操作系统上的几个 OLAP 服务器连接,IBM 建议让它们都处于同一版本和服务级别。客户机至少应该处于最低的服务器级别。如果遇到了问题,则可能需要使用不同的客户机来与适当的主机匹配,或者将所有客户机和服务器都升级到同一服务级别。 混合不同版本中的客户机和服务器 IBM 不支持将版本 7.1 的 OLAP Starter Kit 客户机和服务器与版本 7.2 的客户机和服务器一起使用。当 IBM OLAP 产品被升级到新的版本级别时,通常会有一些网络更新和数据格式更改,这要求客户机和服务器处于同一版本级别。 将 IBM 产品(DB2 OLAP Starter Kit)与 Hyperion 产品(Hyperion Essbase 和 Hyperion Integration Server)混合 IBM 不支持将 IBM 公司的 OLAP 客户机和服务器与 Hyperion Solutions 的 OLAP 客户机和服务器混合在一起使用。尽管在某些情况下将这些组件混合在一起可以工作,但是,功能部件上的某些差异可能会导致问题。 30.11 缺少 OLAP Spreadsheet Add-in EQD 文件 在 DB2 OLAP Starter Kit 中,Spreadsheet add-in 中有一个组件称为“查询设计程序”(EQD)。EQD 的联机帮助菜单包括一个称为教程的按钮,但它不显示任何内容。EQD 教程中应显示的内容是《OLAP Spreadsheet Add-in 用户指南 Excel 版》和《OLAP Spreadsheet Add-in 用户指南 1-2-3 版》的第二章中的一小部分。EQD 教程中的所有信息在“信息中心”中是在这些书籍的 HTML 版本中提供的,这些书籍的 PDF 版本也提供了所有这些信息。 Information Catalog Manager Administration Guide 31.1 信息目录管理器初始化实用程序 31.1.1 借助“初始化信息目录管理器”(ICM)实用程序,现在可以使用以下命令来将 SQL 语句追加到 CREATE TABLE 语句的末尾: CREATEIC \DBTYPE dbtype \DGNAME dgname \USERID userid \PASSWORD password \KA1 userid \TABOPT "directory:\tabopt.file" 可以从安装了 DB2 的目录中指定 CREATEIC 实用程序中的 TABOPT 关键字。TABOPT 关键字后面的值是具有全路径的 tabopt.file 文件名。如果目录名包含空白,则用引号将该名称引起来。tabopt.file 文件的内容必须包含要追加至 CREATE TABLE 语句的信息。可以使用下面的任何 SQL 语句来写入此 tabopt.file 文件。ICM 实用程序将读取此文件,然后将它追加至 CREATE TABLE 语句。 表 9. SQL 语句 IN MYTABLESPACE 利用它在 MYTABLESPACE 中的数据来创建表 DATA CAPTURE CHANGES 创建表,并且以扩展格式记录 SQL 更改 IN ACCOUNTING INDEX IN ACCOUNT_IDX 利用它在 ACCOUNTING 中的数据以及它在 ACCOUNT_IDX 中的索引来创建表 内容文件的最大大小为 1000 个单字节字符。 此新功能仅在 Windows 和 UNIX 系统上可用。 31.1.2 许可证发放问题 如果您接收到以下消息: FLG0083E:您没有“IBM 信息目录管理器初始化”实用程序的有效许可证。 请与当地的软件经销商或 IBM 市场营销代表联系。 您必须购买“DB2 仓库管理器”或“IBM DB2 OLAP 服务器”并安装“信息目录管理器”组件,该组件包括“信息目录初始化”实用程序。 31.1.3 安装问题 如果安装了“DB2 仓库管理器”或“IBM DB2 OLAP 服务器”,并在同一工作站上安装了另一“信息目录管理器管理员”组件(使用“DB2 通用数据库 CD-ROM”),则您可能已经覆盖了“信息目录初始化”实用程序。在这种情况下,从 \sqllib\bin 目录查找文件 createic.bak 和 flgnmwcr.bak,并分别将它们重命名为 createic.exe 和 flgnmwcr.exe。 如果从“DB2 通用数据库”安装其它“信息目录管理器”组件,则这些组件必须位于不同于安装有“数据仓库管理器”的工作站上。有关更多信息,参见《DB2 数据仓库管理器安装指南》中的『第 3 章 安装信息目录管理器组件』。 31.2 “信息目录管理器”的增强功能 “信息目录管理器”包含下列增强功能: ICM 现在支持源或目标数据库、表或列的 ETI 过滤器信息的导入。注册至仓库时,使用新的 ICM 对象类型“ETI 转换数据”来存储过滤器信息。然后,将这些对象链接至对其定义该对象的源或目标数据库、表或列。 因为将不同的“ETI 转换”注册至同一 ICM 目录,所以 ICM 能够将特定的源或目标数据库、表或列与多个“ETI 转换数据”对象进行链接。 相同的能力适用于“转换”:因为将不同的“ETI 转换”注册至同一 ICM 目录,所以特定目标列现在可以包含多个“转换”。为此,在导入 ETI*Extract 映射时,ICM 对“转换”键进行了更改。 要启用这些功能部件,将 ETI*Extract 4.2.1 与 MetaScheduler 4.1.0 配合使用,以便向“数据仓库管理器”注册。有关启用这些功能部件的更多信息,可以在“DB2 仓库管理器”的『提示与技巧』一节找到,其网址是: http://www.ibm.com/software/data/db2/datawarehouse/support.html。根据关键字“ETI”或“应用程序数据”进行搜索。 31.3 Windows 环境中的信息目录管理器与 Sybase 的不兼容性 在带有 Sybase Open Client 的 Windows NT 或 Windows 2000 机器上安装“信息目录管理器(ICM)版本 7.1”会导致错误,且“Sybase 实用程序”会停止运行。会出现类似如下的错误消息: 无法初始化 LIBTCL.DLL。请确保 SYBASE 环境变量设置正确。 通过从“Windows 环境”参数中除去环境参数 LC_ALL 来避免发生此情况。LC_ALL 是语言环境类别参数。语言环境类别是明显常量,本地化例程用它们来指定要使用程序的语言环境信息的哪一部分。语言环境是指可对其定制程序的某些方面的位置(国家或地区)。例如,与语言环境相关的方面包括日期的格式化和货币值的显示格式。LC_ALL 会影响所有特定于语言环境的行为(所有类别)。 如果除去 LC_ALL 环境参数,ICM 就可与 Sybase 在 Windows NT 平台上共存,而下列设施不再有效: 信息目录用户 信息目录管理员 信息目录管理器 除去 LC_ALL 参数不会影响任何对象,但 ICM 除外。 31.4 使用 DB2 版本 7 信息目录管理器来存取 DB2 版本 5 信息目录 “DB2 版本 7 信息目录管理器”子组件是由 DB2 版本 7 安装过程配置的,它支持对存储在 DB2 版本 6 和 DB2 版本 7 数据库中的信息目录的存取。可修改这些子组件的配置以存取存储在 DB2 版本 5 数据库中的信息目录。“DB2 版本 7 信息目录管理器”子组件不支持对 DB2 版本 2 或所有其它先前版本中的数据的存取。 要设置“信息目录管理员”、“信息目录用户”和“信息目录初始化实用程序”以存取存储在 DB2 版本 5 数据库中的信息目录: 在没有安装“DB2 版本 7 信息目录管理器”的工作站上安装“DB2 Connect 企业版版本 6”。 “DB2 通用数据库企业版”和“DB2 通用数据库扩充企业版”包括“DB2 Connect 企业版”。如果安装了这些 DB2 产品中任一种产品的版本 6,则不必单独安装 DB2 Connect。 限制: 不能在同一 Windows NT 或 OS/2 工作站上安装多个版本的 DB2。可在另一 Windows NT 工作站或在 OS/2 或 UNIX 工作站上安装 DB2 Connect。 配置“信息目录管理器”和 DB2 Connect 版本 6 以对 DB2 版本 5 数据进行存取。有关更多信息,参见《DB2 Connect 用户指南》。下列步骤是所需步骤的概述: 在 DB2 版本 5 系统上,使用“DB2 命令行处理器”来编目“信息目录管理器”将要存取的版本 5 数据库。 在 DB2 Connect 系统上,使用“DB2 命令行处理器”来编目: DB2 版本 5 系统的 TCP/IP 节点 DB2 版本 5 系统的数据库 DB2 版本 5 系统的 DCS 条目 在带有“信息目录管理器”的工作站上,使用“DB2 命令行处理器”来编目: DB2 Connect 系统的 TCP/IP 节点 DB2 Connect 系统的数据库 有关编目数据库的信息,参见《DB2 通用数据库安装和配置补遗》。 在带有“信息目录管理器”的仓库上,将 DB2 CLI 程序包与将要通过 DB2 Connect 存取的每个数据库进行绑定。 下列 DB2 命令给出了与 v5database 进行绑定的示例,一个假定的 DB2 版本 5 数据库。使用“DB2 命令行处理器”来发出下列命令。db2cli.lst 和 db2ajgrt 位于 \sqllib\bnd 目录中。 db2 connect to v5database user userid using password db2 bind db2ajgrt.bnd db2 bind @db2cli.lst blocking all grant public 其中,userid 是 v5database 的用户标识,而 password 是该用户标识的密码。 在 db2cli.list 与 DB2 版本 5 数据库进行绑定时出错。会出现此错误的原因是大对象(LOB)在此配置中不受支持。此错误将不会影响仓库代理程序对 DB2 版本 5 数据库的存取。 “DB2 通用数据库版本 5”的“修订包 14”(是在 2000 年 6 月提供的)是通过 DB2 Connect 存取“DB2 版本 5”所必需的。参考该“修订包”中的 APAR 号 JR14507。 31.5 设置信息目录 第一章“Setting up an information catalog”第一节中的第 2 步中说到: When you install either the DB2 Warehouse Manager or the DB2 OLAP Server, a default information catalog is created on DB2 Universal Database for Windows NT. 这种说法不正确。必须定义新的信息目录。参见“Creating the Information Catalog”一节以了解更多信息。 31.6 Exchanging Metadata with Other Products 在第 6 章“Exchanging metadata with other products”的“Identifying OLAP objects to publish”一节中,在第二段有一句的内容如下: When you publish DB2 OLAP Integration Server metadata, a linked relationship is created between an information catalog "dimensions within a multi-dimensional database" object type and a table object in the OLAP Integration Server. 这段话应为: When you publish DB2 OLAP Integration Server metadata, a linked relationship is created between an information catalog "dimensions within a multi-dimensional database object and a table object". 这段话还出现在“Appendix C. Metadata mappings”的“Metadata mappings between the Information Catalog Manager and OLAP Server”一节中。 31.7 使用 flgnxoln 命令来交换元数据 在第 6 章“Exchanging Metadata”中,有一节的标题是“Identifying OLAP objects to publish”。在此节的末尾有一个使用 flgnxoln 命令来将 OLAP 服务器元数据发布至信息目录的示例。该示例错误地将 db2olap.ctl 和 db2olap.ff 文件的目录显示为 x:\Program Files\sqllib\logging。目录名应为 x:\Program Files\sqllib\exchange,如第 87 页上所述。 31.8 使用 MDISDGC 命令来交换元数据 Chapter 6. Exchanging metadata with other products: "Converting MDIS-conforming metadata into a tag language file",第 97 页。不能从 MS-DOS 命令提示符发出 MDISDGC 命令。必须从 DB2 命令窗口发出 MDISDGC 命令。“Converting a tag language file into MDIS-conforming metadata”一节的第一句还提到必须从 MS-DOS 命令提示符发出 DGMDISC 命令。必须从 DB2 命令窗口发出 DGMDISC 命令。 31.9 调用程序 Information Catalog Administration Guide 中的某些示例显示了包含目录名 Program Files 的一些命令。当您调用包含作为路径名一部分的 Program Files 的程序时,必须用双引号将程序调用引起来。例如,“Appendix B. Predefined Information Catalog Manager object types”的“Initializing your information catalog with the predefined object types”一节中包含一个示例。若使用本节中的示例,则当您从 DOS 提示符运行它时将接收到错误。以下示例是正确的: "X:Program Files\SQLLIB\SAMPLES\SAMPDATA\DGWDEMO" /T userid password dgname Information Catalog Manager Programming Guide and Reference 32.1 信息目录管理器原因码 在“Appendix D: Information Catalog Manager reason codes”中,某些文本可能会在以下原因码的列的最右边被截断: 31014、32727、32728、32729、32730、32735、32736、32737、33000、37507、37511 和 39206。若文本被截断,则查看本书的 HTML 版本以查看完整列。 《信息目录管理器用户指南》 在第 2 章中,有一节是『注册服务器节点和远程信息目录』。本节列示了在使用“信息目录管理器”注册远程信息目录之前可通过“DB2 控制中心”完成的步骤。本节的最后一段提到:在通过“DB2 控制中心”完成一系列步骤之后(添加系统、添加实例和添加数据库),必须关闭“控制中心”才能打开“信息目录管理器”。该信息是错误的。不需要关闭“控制中心”就可以打开“信息目录管理器”。 同样的更正措施也适用于联机帮助任务“注册服务器节点和远程信息目录”,以及“注册服务器节点和信息目录”窗口的联机帮助。 信息目录管理器:联机消息 34.1 对 FLG 消息的更正 34.1.1 消息 FLG0260E 消息说明的第二句应为: 该错误导致失败的信息目录回滚。 信息目录处于不稳定状态,但未发生任何更改。 34.1.2 消息 FLG0051E 消息说明中的第二点应为: 信息目录包含了过多的对象或对象类型。 管理员响应应为: 使用导入功能从当前信息目录删除某些对象或对象类型。 34.1.3 消息 FLG0003E 消息说明应为: 信息目录必须在使用之前进行注册。 信息目录可能未正确注册。 34.1.4 消息 FLG0372E 消息说明的第一句应为: 对象的 ATTACHMENT-IND 值被忽略,原因是该对象是“附件”对象。 34.1.5 消息 FLG0615E 该消息的第二句应为: “信息目录管理器”遇到了意外的数据库错误,或者在当前目录或路径中找不到绑定文件。 信息目录管理器:联机帮助 “信息目录”窗口:“所选”菜单“打开”项的联机帮助为“打开选择的对象”,这是不正确的。它应为“打开“定义搜索”窗口”。 35.1 用于 Web 的“信息目录管理器” 在使用位于 DB2 UDB OS/390 版系统上的信息目录时,不区分大小写搜索不可用。对于简单搜索和高级搜索都是这样。联机帮助不解释以下情况:对于简单搜索,对 DB2 UDB OS/390 版信息目录的所有搜索都是区分大小写的。此外,所有分组类别对象都是可展开的,即使没有任何底层对象。 《DB2 仓库管理器安装指南》 36.1 提供的《DB2 仓库管理器安装指南》更新 已经更新了《DB2 仓库管理器安装指南》,可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。CD 上也提供了所有的更新文档。可以使用 PTF 号 U478862 来订购此 CD。此《发行说明》中的信息是对已更新的参考的补充。 36.2 仓库变换器的软件需求 必须在您计划使用仓库变换器的数据库上安装“Java 开发者工具箱”(JDK)版本 1.1.8 或更新版本。 36.3 iSeries 代理程序的后安装注意事项 在第 4 章中,将『安装 AS/400(iSeries)创建代理程序』一节的『后安装注意事项』这一小节下面的第一段更改为: 仓库代理进程在一个工作单元中执行所有步骤函数。在 V4R5 之前,“DB2 通用数据库 iSeries 版”将可插入单个落实作用域的行数限制为 4 百万。在 V4R5 中,该限制已增加到 500 百万。如果使用的是 V4R4(或更低版本)系统,在具有超过此大小的查询时,可将查询细分或使用仓库提供的 FTP 程序来移动数据。 36.4 在对 iSeries 仓库代理程序使用转换程序之前 在第 4 章中,删除『对 iSeries 代理程序使用变换器之前』这一节以及它下面的所有小节。 Query Patroller Administration Guide 37.1 DB2 Query Patroller 客户机是一个独立组件 DB2 Query Patroller 客户机是一个单独的组件,而不是 DB2 管理客户机的组件。这意味着它不是在“DB2 管理客户机”安装期间安装的,就象“Query Patroller 安装指南”中所指示的那样。而 Query Patroller 客户机必须单独安装。 Query Patroller 客户机和 Query Patroller 服务器的版本和级别必须相同。 37.2 更改节点状态 以下是对“Query Patroller Administration Guide”的“Node Administration”一节的更新。 Use the following procedure to change the node status: On the Node Administration page, select a node. Click on View / Edit. The Detailed Information for Node window opens. Select the new status in the Status Requested field. 注意: Status Requested is the only field in the Detailed Information for Node window that can be changed; all other fields display values that have been supplied by DB2 Query Patroller. Click on OK. The following list provides information for each node parameter: Node ID Provides the ID for the node. Node Status Contains the current node status: Active indicates that the node is able to run jobs. Inactive indicates that the node's DB2 Query Patroller component is shut down. The node is not available to DB2 Query Patroller. To reactivate the node, use the iwm administrative user account to issue the dqpstart command. Quiescing indicates that the node is in transition to the quiescent state. Running jobs will complete, but no new jobs will be scheduled on the node. Quiesced indicates that the node is quiescent. The node is available to DB2 Query Patroller but no new jobs are being scheduled to that node. Status Requested Indicates what the node status will be changed to: Active indicates that the node will be made active. Inactive indicates that the node will be made inactive. Running jobs will complete and no new jobs will be scheduled. Force indicates that the node will be made inactive immediately. Running jobs are terminated immediately and no new jobs will be scheduled. Quiesced indicates that the node will be made quiescent. Running jobs will complete. Date/Time Last Status Indicates the date and time node status was last changed. Scheduled Jobs Provides the number of jobs scheduled to run plus the number of jobs running on this node. CPU Utilization Provides the CPU utilization of the node as a percentage (0 - 100). If CPU utilization information is not being collected, the value is -1. Disk Available Indicates the bytes available in the file system where results are created. If disk utilization is not being monitored, the value is -1. Node Manager PID Indicates the process ID of the node manager process. 37.3 使用 dqpmigrate 从 DB2 Query Patroller 的版本 6 迁移 如果“版本 7 Query Patroller 服务器”是在“版本 6 Query Patroller 服务器”上覆盖安装的,必须使用 dqpmigrate 命令。对于“修订包 2”或更新版本,不需要手工运行 dqpmigrate,因为“修订包”的安装会运行此命令。如果不使用此命令,在 V6 中定义的现有用户对在版本 7 中添加的几个新存储过程没有 EXECUTE 特权。 注意: dqpmigrate.bnd 在 sqllib/bnd 目录中,而 dqpmigrate.exe 在 sqllib/bin 目录中。 要手工使用 dqpmigrate 授予 EXECUTE 特权,在安装“修订包”之后执行下列步骤: 通过输入以下命令,将 /sqllib/bnd/dqpmigrate.bnd 程序包文件绑定至安装有 Query Patroller 服务器的数据库: db2 bind dqpmigrate.bnd 通过输入以下命令来执行 dqpmigrate: dqpmigrate dbalias userid passwd 37.4 Enabling Query Management 在“Enabling Query Management”下的“Getting Started”一章中,文本应为: You must be the owner of the data base, or you must have SYSADM, SYSCTRL, or SYSMAINT authority to set database configuration parameters. 37.5 控制表的表空间的位置 在 Chapter 1 System Overview 的 DB2 Query Patroller Control Tables 中,在该节的第一段末尾将添加下列文本: The table space for the DB2 Query Patroller control tables must reside in a single-node nodegroup, or DB2 Query Patroller will not function properly. 37.6 dqpstart 命令的新参数 在 Chapter 2 Getting Started 的 Starting and Stopping DB2 Query Patroller 中,在最后一段后面将添加下列文本: New Parameters for the dqpstart command: RESTART parameter: Allows the user to replace the host name and/or the node type of the specified node in the dqpnodes.cfg file. DB2 Query Patroller will be started on this node. 注意: Before running the DQPSTART command with the RESTART parameter, ensure the following: DB2 Query Patroller is already stopped on the host that is going to be replaced. DB2 Query Patroller is not already running on the new host. The syntax is as follows: dqpstart nodenum node_num restart hostname server | agent | none ADDNODE parameter: Allows the user to add a new node to the dqpnodes.cfg file. DB2 Query Patroller will be started on this node after the new node entry is added to the dqpnodes.cfg file. The syntax is as follows: dqpstart nodenum node_num addnode hostname server | agent | none DROPNODE parameter: Allows the user to drop a node from the dqnodes.cfg file. DB2 Query Patroller will be stopped on this node before the node entry is dropped from the dqpnodes.cfg file. The syntax is as follows: dqpstop nodenum node_num dropnode 37.7 iwm_cmd 命令的新参数 已经将新的 -v 参数添加到 iwm_cmd 命令中,以允许用户恢复在指定节点上运行的作业的状态。只允许恢复不活动节点上的作业。节点发生故障且某些作业在该节点上运行或者被取消时,应该发出此命令。将重新提交处于“正在运行”状态的作业,并设置回到“已排队”状态。处于“正在取消”的作业将被设置为“已取消”状态。 部分语法为如下所示: >>-iwm_cmd--+-------------------------------+-------------------> '--u--user_id--+--------------+-' '--p--password-' >---v--node_id_to_recover-------------------------------------->< node_id_to_recover 指定将在它上面恢复作业的节点。 37.8 新的注册表变量:DQP_RECOVERY_INTERVAL 有一个称为 DQP_RECOVERY_INTERVAL 的新注册表变量,用来设置 iwm_scheduler 搜索恢复文件的时间间隔(以分钟计)。缺省值为 60 分钟。 37.9 启动 Query Administrator 在“Using QueryAdministrator to Administer DB2 Query Patroller”一章中,提供了用于在 Windows 上从“开始”菜单启动 QueryAdministrator 的指示信息。第一步提供了以下文本: If you are using Windows, you can select DB2 Query Patroller --> QueryAdministrator from the IBM DB2 program group. 该文本应为: DB2 Query Patroller --> QueryAdmin. 37.10 用户管理 在“Using QueryAdministrator to Administer DB2 Query Patroller”一章的“User Administration”一节中,Maximum Elapsed Time 参数指示如果值被设置为 0 或 -1,则查询将始终运行完成状态。此参数不能设置为负值。该文本应指示如果值被设置为 0,则查询将始终运行完成状态。 Max Queries 参数指定 DB2 Query Patroller 将同步运行的最大作业数。Max Queries 必须是 0 到 32767 范围内的整数。 37.11 数据源管理 在“Chapter 3, Using Query Administrator to Administer DB2 Query Patroller”中,具有对数据源参数的新描述和已更改的描述。 Static Cost is the DB2 estimated cost of the query in timerons. This cost is stored in the job entry for each job. You can see it as the Estimated Cost when using Query Monitor to look at the job details of a job. Zero Cost Query is the query with a static cost, or estimated cost, of zero. No query actually has an estimated cost of zero (even the very simplest ones have a cost of around 5). Rather, this occurs if a job is submitted with the do not do cost analysis option. You can only choose this option if you have set up the user profile to allow it. In most cases, you will not have your user profiles set up in this way. You should keep this option for superusers like other administrators, selected special users, or yourself. These users can then run whatever queries they want. The system treats queries from these users as zero cost so that the queries are treated as high priority. Cost Time Zero, Cost Time Slope, Cost Time Interval, and Cost Time Min are no longer used. The Cost Factor is the multiplier to convert the Static Cost in timerons is not the cost in the accounting table. The cost in the accounting table is equal to the Static Cost multiplied by the Cost Factor. 37.12 创建作业队列 在“Using QueryAdministrator to Administer DB2 Query Patroller”一章的“Job Queue Administration”一节中,“Creating a Job Queue”的步骤中的屏幕捕获应在第二步之后显示。一旦在 QueryAdministrator 工具的 Job Queue Administration 页上单击了新建按钮,有关新建 Job Queue 窗口的信息就会打开。 出现 Job Queue 页或 Job Queue 选项卡的地方应分别为 Job Queue Administration 页和 Job Queue Administration 选项卡。 37.13 作业记帐表 在“chapter 11, Monitoring the DB2 Query Patroller System”中,有关“作业记帐”的那一节中描述了“作业记帐”表中的列。表名是 IWM.IWM003_JOB_ACCT。 37.14 使用“命令行界面” 要让对 DB2 Query Patroller 系统具有“用户”权限的用户提交查询并创建结果表,用户可能需要对数据库具有 CREATETAB 权限。如果未设置 DQP_RES_TBLSPC 概要文件变量或是 DQP_RES_TBLSPC 概要文件变量被设置为缺省表空间名,则用户不需要数据库的 CREATETAB 权限。在这种情况下,将会成功地创建结果表,原因是用户具有在缺省表空间中创建表的权限。 37.15 “查询使能器”注释 在用使用键组游标的第三方查询工具时,查询将不会被截断。为使“查询使能器”截断这些查询,必须修改 db2cli.ini 文件以包括: [common] DisableKeySetCursor=1 对于 AIX 客户机,请确保未设置环境变量 LIBPATH。随 JDK 交付的库 libXext.a 与 /usr/lib/X11 子目录中的库不兼容。这会使“查询使能器 GUI”出现问题。 37.16 DB2 Query Patroller Tracker 可能会返回空白列页 修订包 3 包括对 DB2 Query Patroller Tracker 的修正。Tracker 现在将正确地报告没有命中任何列的查询。这样的查询的一个示例为“SELECT COUNT(*) FROM ...”。由于此种查询不会命中表中的任何列,所以 Tracker 将为列页提供一个空白页。此空白列页不是一个错误。 37.17 有关 DB2 Query Patroller Tracker GUI 工具的附加信息 当用来显示或分析历史作业数据时,Tracker 工具就会使用记帐表。为了使用 Tracker,管理员必须首先使用“查询管理员”来将“系统管理员”屏面上的“记帐状态”更改为“写入表中”。然后,一旦完成作业时,就将额外的信息保存在作业记帐表中。 下一步,管理员必须作为 iwm 用户登录到 Query Patroller 服务器,并运行 iwm_tracker(Tracker 后端)工具。当系统负荷很低时,应定期运行此工具,或者只是在使用 Tracker 工具之前运行此工具。 最后,当完成了这两项任务时,就可以运行 Tracker GUI 工具来查看或分析作业数据。 如果成本因子为 1(这是缺省值),则使用 Tracker 为每个作业显示的成本与使用 Query Monitor 来显示的成本相同。在这两种情况下,时间都以 timeron 为单位。 然而,您可能想使用其它单位的值。假定您想根据每个用户使用系统的情况来进行收费。例如,如果 10 000 timeron 的工作收费一美元,则应输入成本因子 0.0001。这使 Tracker 按美元来转换、存储和显示每个作业的成本。 Query Patroller Administration Guide 讨论了每一兆字节应收多少美元,这是不正确的,应该替换为每一 timeron 收多少美元。 37.18 Query Patroller 和复制工具 Query Patroller 版本 7 将拦截复制工具(asnapply、asnccp、djra 和 analyze)的查询,并导致这些工具失灵。一种解决方案是在运行这些工具时禁用动态查询管理。 37.19 改进 Query Patroller 性能 在“Chapter 6. Performance Tuning”的末尾应该出现下列文本: Using the BIND Option, INSERT BUF to Improve DB2 Query Patroller Performance By default, DB2 Query Patroller creates result tables to store the results of the queries it manages. To increase the performance of inserts to these result tables, include the INSERT BUF option when binding one of the DB2 Query Patroller bind files. Bind the DB2 Query Patroller bind files to the database as follows: From the DB2_RUNTIME\bnd directory on Windows, or the DB2_RUNTIME/bnd path on UNIX, enter the following commands: db2 connect to database user iwm using password db2 bind @db2qp.lst blocking all grant public db2 bind iwmsx001.bnd insert buf db2 bind @db2qp_sp.lst db2 commit where database is the database the replacement database that will be managed by DB2 Query Patroller, and password is the password for the administrative user account, iwm. 37.20 版本 6 中创建的 Query Patroller 用户的 EXECUTE 特权丢失 因为已在 Query Patroller 版本 7 中添加了某些新的存储过程(IWM.DQPGROUP、IWM.DQPVALUR、IWM.DQPCALCT 和 IWM.DQPINJOB),所以 Query Patroller 版本 6 中创建的现有用户不会保有对那些程序包的 EXECUTE 特权。用来自动更正此问题的应用程序已添加至“修订包 1”。 在尝试使用 DQP Query Admin 来修改 DQP 用户信息时,请不要试图从用户列表除去现有用户。 37.21 Query Patroller 限制 由于 JVM(Java 虚拟机)平台限制,Query Enabler 在 HP-UX 和 NUMA-Q 上不受支持。此外,Query Patroller Tracker 在 NUMA-Q 上也不受支持。若需要所有 Query Patroller 客户机工具,则建议使用另一平台(例如,Windows NT)来对 HP-UX 或 NUMA-Q 服务器运行这些工具。 37.22 Appendix B. Troubleshooting DB2 Query Patroller Clients 在“Appendix B. Troubleshooting DB2 Query Patroller Clients”的“Common Query Enabler Problems”一节的“problem #2”中,应该将第一点的文本更改为: Ensure that the path setting includes jre. 应用程序开发 部分目录 Administrative API Reference 38.1 db2ArchiveLog(新 API) db2ArchiveLog 38.2 db2ConvMonStream 38.3 db2DatabasePing(新 API) db2DatabasePing — Ping 数据库 38.4 db2HistData 38.5 db2HistoryOpenScan 38.6 db2XaGetInfo(新 API) db2XaGetInfo — 获取资源管理器的信息 38.7 db2XaListIndTrans(取代 sqlxphqr 的新 API) db2XaListIndTrans — 列示不确定事务 38.8 db2GetSnapshot — 获取快照 38.9 忘记日志记录 38.10 sqlaintp — 获取错误消息 38.11 sqlbctcq — 关闭表空间容器查询 38.12 sqleseti — 设置客户机信息 38.13 sqlubkp — 备份数据库 38.14 sqlureot — 重组表 38.15 sqlurestore — 复原数据库 38.16 关于“AIX 扩展共享内存支持”(EXTSHM)的文档错误 38.17 SQLFUPD 38.17.1 锁定列表 38.18 SQLEDBDESC 构建 OS/2 和 Windows 应用程序 39.1 提供的更新 39.2 S/390 和 zSeries 上的 Linux 支持 39.3 Linux Rexx 支持 39.4 关于分发已编译的 SQL 过程的附加注释 Application Development Guide 40.1 提供的更新 40.2 对“调试 Java 存储过程”的更正 40.3 executeQuery 和 executeUpdate 的新要求 40.4 其它方法的 JDBC 驱动程序支持 40.5 用于 DB2 UDB 的 IBM OLE DB 供应商 CLI 指南与参考 41.1 使用运行时客户机绑定数据库实用程序 41.2 在 CLI 应用程序中使用静态 SQL 41.3 创建静态 JDBC/ODBC/CLI 概要文件的限制 41.4 ADT 变换 41.5 Chapter 1. Introduction to CLI 41.5.1 Differences Between DB2 CLI and Embedded SQL 41.6 Chapter 3. Using Advanced Features 41.6.1 Writing Multi-Threaded Applications 41.6.2 Writing a DB2 CLI Unicode Application 41.6.2.1 Unicode Functions 41.6.2.2 New datatypes and Valid Conversions 41.6.2.3 Obsolete Keyword/Patch Value 41.6.2.4 Literals in Unicode Databases 41.6.2.5 New CLI Configuration Keywords 41.6.3 Microsoft Transaction Server (MTS) as Transaction Monitor 41.6.4 Scrollable Cursors 41.6.4.1 Server-side Scrollable Cursor Support for OS/390 41.6.5 Using Compound SQL 41.6.6 Using Stored Procedures 41.6.6.1 用于构建和调试 SQL 和 Java 存储过程的特权 41.6.6.2 Writing a Stored Procedure in CLI 41.6.6.3 CLI Stored Procedures and Autobinding 41.7 Chapter 4. Configuring CLI/ODBC and Running Sample Applications 41.7.1 Configuration Keywords 41.7.1.1 CURRENTFUNCTIONPATH 41.7.1.2 SKIPTRACE 41.8 Chapter 5. DB2 CLI Functions 41.8.1 SQLBindFileToParam - Bind LOB File Reference to LOB Parameter 41.8.2 SQLColAttribute -- Return a Column Attribute 41.8.3 SQLGetData - Get Data From a Column 41.8.4 SQLGetInfo - Get General Information 41.8.5 SQLGetLength - Retrieve Length of A String Value 41.8.6 SQLNextResult - Associate Next Result Set with Another Statement Handle 41.8.6.1 Purpose 41.8.6.2 Syntax 41.8.6.3 Function Arguments 41.8.6.4 Usage 41.8.6.5 Return Codes 41.8.6.6 Diagnostics 41.8.6.7 Restrictions 41.8.6.8 References 41.8.7 SQLSetEnvAttr - Set Environment Attribute 41.8.8 SQLSetStmtAttr — 设置与语句相关的选项 41.9 Appendix C. DB2 CLI and ODBC 41.9.1 ODBC Unicode Applications 41.9.1.1 ODBC Unicode Versus Non-Unicode Applications 41.10 Appendix D. Extended Scalar Functions 41.10.1 Date and Time Functions 41.11 Appendix K. Using the DB2 CLI/ODBC/JDBC Trace Facility 《消息参考》 42.1 提供的更新 42.2 消息更新 42.3 联机阅读消息文本 SQL Reference 43.1 提供的 SQL Reference 更新 43.2 Enabling the New Functions and Procedures 43.3 SET SERVER OPTION — 文档错误 43.4 对“创建表空间容器”子句和“容器”字符串信息的更正 Information 43.5 GRANT(表、视图或别名特权)— 文档错误 43.6 MQSeries Information 43.6.1 Scalar Functions 43.6.1.1 MQPUBLISH 43.6.1.2 MQREADCLOB 43.6.1.3 MQRECEIVECLOB 43.6.1.4 MQSEND 43.6.2 Table Functions 43.6.2.1 MQREADALLCLOB 43.6.2.2 MQRECEIVEALLCLOB 43.6.3 MQSeries 函数中现在支持 CLOB 数据 43.7 Data Type Information 43.7.1 Promotion of Data Types 43.7.2 Casting between Data Types 43.7.3 Assignments and Comparisons 43.7.3.1 String Assignments 43.7.3.2 String Comparisons 43.7.4 Rules for Result Data Types 43.7.4.1 Character and Graphic Strings in a Unicode Database 43.7.5 Rules for String Conversions 43.7.6 Expressions 43.7.6.1 With the Concatenation Operator 43.7.7 Predicates 43.8 Unicode Information 43.8.1 Scalar Functions and Unicode 43.9 GRAPHIC 类型与 DATE/TIME/TIMESTAMP 的兼容性 43.9.1 日期时间值的字符串表示法 43.9.1.1 日期字符串、时间字符串和日期时间字符串 43.9.2 数据类型之间的转型 43.9.3 指定和比较 43.9.4 日期时间指定 43.9.5 DATE 43.9.6 GRAPHIC 43.9.7 TIME 43.9.8 TIMESTAMP 43.9.9 VARGRAPHIC 43.10 Unicode 数据库的大型索引键 43.10.1 ALTER TABLE 43.10.2 CREATE INDEX 43.10.3 CREATE TABLE 43.11 ALLOCATE CURSOR 语句注释部分不正确 43.12 GET DIAGNOSTICS 语句中的附加选项 GET DIAGNOSTICS 语句 43.13 Subselect 中的 ORDER BY 43.13.1 fullselect 43.13.2 subselect 43.13.3 order-by-clause 43.13.4 select-statement SELECT INTO 语句 43.13.5 OLAP 函数(window-order-clause) GET_ROUTINE_SAR 过程的新输入自变量 SET INTEGRITY 语句所需的权限 附录 N 异常表 Unicode 更新 47.1 介绍 47.1.1 DB2 Unicode 数据库和应用程序 47.1.2 文档更新 Administrative API Reference 38.1 db2ArchiveLog(新 API) db2ArchiveLog 关闭并截断可恢复数据库的活动日志文件。如果启用了用户出口,则发出归档请求。 权限 下列其中一项: sysadm sysctrl sysmaint dbadm 必需的连接 此 API 自动建立与指定数据库的连接。如果与指定数据库的连接已经存在,则 API 将返回错误。 API 包含文件 db2ApiDf.h C API 语法 /* File: db2ApiDf.h */ /* API: Archive Active Log */ SQL_API_RC SQL_API_FN db2ArchiveLog ( db2Uint32 version, void *pDB2ArchiveLogStruct, struct sqlca * pSqlca); typedef struct { char *piDatabaseAlias; char *piUserName; char *piPassword; db2Uint16 iAllNodeFlag; db2Uint16 iNumNodes; SQL_PDB_NODE_TYPE *piNodeList; db2Uint32 iOptions; } db2ArchiveLogStruct 一般 API 语法 /* File: db2ApiDf.h */ /* API: Archive Active Log */ SQL_API_RC SQL_API_FN db2gArchiveLog ( db2Uint32 version, void *pDB2ArchiveLogStruct, struct sqlca * pSqlca); typedef struct { db2Uint32 iAliasLen; db2Uint32 iUserNameLen; db2Uint32 iPasswordLen; char *piDatabaseAlias; char *piUserName; char *piPassword; db2Uint16 iAllNodeFlag; db2Uint16 iNumNodes; SQL_PDB_NODE_TYPE *piNodeList; db2Uint32 iOptions; } db2ArchiveLogStruct API 参数 版本 输入。指定作为第二个参数 pDB2ArchiveLogStruct 传送的变量的版本和发行版级别。 pDB2ArchiveLogStruct 输入。指向 db2ArchiveLogStruct 结构的指针。 pSqlca 输出。指向 sqlca 结构的指针。 iAliasLen 输入。一个 4 字节不带符号的整数,表示数据库别名的长度(以字节计)。 iUserNameLen 一个 4 字节不带符号的整数,表示用户名的长度(以字节计)。如果未使用任何用户名,则设置为零。 iPasswordLen 输入。一个 4 字节不带符号的整数,表示密码的长度(以字节计)。如果未使用任何密码,则设置为零。 piDatabaseAlias 输入。一个字符串,包含要归档的归档日志的数据库的数据库别名(在系统数据库目录中作了编目)。 piUserName 输入。一个字符串,包含要在尝试连接时使用的用户名。 piPassword 输入。一个字符串,包含要在尝试连接时使用的密码。 iAllNodeFlag 仅 MPP。输入。一个标志,指示是否应该将操作应用于 db2nodes.cfg 文件中列示的所有节点。有效值为: DB2ARCHIVELOG_NODE_LIST 应用于在 piNodeList 中传送的节点列表中的节点。 DB2ARCHIVELOG_ALL_NODES 应用于所有节点。piNodeList 应该为 NULL。这是缺省值。 DB2ARCHIVELOG_ALL_EXCEPT 应用于所有节点,但是在 piNodeList 中传送的节点列表中的节点除外。 iNumNodes 仅 MPP。输入。指定 piNodeList 数组中的节点数。 piNodeList 仅 MPP。输入。指向要对其应用归档日志操作的节点号数组的指针。 iOptions 输入。留作将来使用。 38.2 db2ConvMonStream 在 Usage Notes 中,快照变量数据流类型 SQLM_ELM_SUBSECTION 的结构应为 sqlm_subsection。 38.3 db2DatabasePing(新 API) db2DatabasePing — Ping 数据库 测试客户机与数据库服务器之间的基本连接的网络响应时间。如果主机数据库服务器是直接通过 DB2 Connect 或通过网关访问的,则应用程序可使用此 API。 权限 无 必需的连接 数据库 API 包含文件 db2ApiDf.h C API 语法 /* File: db2ApiDf.h */ /* API: Ping Database */ /* ... */ SQL_API_RC SQL_API_FN db2DatabasePing ( db2Uint32 versionNumber, void *pParmStruct, struct sqlca *pSqlca); /* ... */ typedef SQL_STRUCTURE db2DatabasePingStruct { char iDbAlias[SQL_ALIAS_SZ + 1]; db2Uint16 iNumIterations; db2Uint32 *poElapsedTime; } 一般 API 语法 /* File: db2ApiDf.h */ /* API: Ping Database */ /* ... */ SQL_API_RC SQL_API_FN db2gDatabasePing ( db2Uint32 versionNumber, void *pParmStruct, struct sqlca *pSqlca); /* ... */ typedef SQL_STRUCTURE db2gDatabasePingStruct { db2Uint16 iDbAliasLength; char iDbAlias[SQL_ALIAS_SZ]; db2Uint16 iNumIterations; db2Uint32 *poElapsedTime; } API 参数 versionNumber 输入。应用程序正在使用的“DB2 通用数据库”或 DB2 Connect 产品的版本和发行版。 注意: 应对 DB2 版本 7.1 或更高版本使用常量 db2Version710 或更高值。 pParmStruct 输入。指向“db2DatabasePingStruct 结构”的指针。 iDbAliasLength 输入。数据库别名的长度。 注意: 目前不使用此参数。它被留作将来使用。 iDbAlias 输入。数据库别名。 注意: 目前不使用此参数。它被留作将来使用。 iNumIterations 输入。测试请求迭代数。该值必须在 1 和 32767 之间,包括 1 和 32767。 poElapsedTime 输出。指向 32 位整数数组的指针,其中元素数等于 iNumIterations。该数组中的每个元素都将包含一个测试请求迭代的所用时间(以微秒计)。 注意: 应用程序负责在调用此 API 之前为此数组分配内存。 pSqlca 输出。指向 sqlca 结构的指针。有关此结构的更多信息,参见 Administrative API Reference。 使用说明 数据库连接必须存在,才能调用此 API,否则将会产生错误。 此函数还可使用 PING 命令来调用。有关此命令的描述,参见 命令参考。 38.4 db2HistData 下列条目应添加至表 11。db2HistData 结构中的字段: 字段名 数据类型 描述 oOperation char 参见表 12。 oOptype char 参见表 13。 应在表 11 后添加下表。 表 12。db2HistData 结构中的 oOperation 的有效事件值 值 描述 C 定义 COBOL/FORTRAN 定义 A 添加表空间 DB2HISTORY_OP_ADD_TABLESPACE DB2HIST_OP_ADD_TABLESPACE B 备份 DB2HISTORY_OP_BACKUP DB2HIST_OP_BACKUP C 装入副本 DB2HISTORY_OP_LOAD_COPY DB2HIST_OP_LOAD_COPY D 已删除的表 DB2HISTORY_OP_DROPPED_TABLE DB2HIST_OP_DROPPED_TABLE F 前滚 DB2HISTORY_OP_ROLLFWD DB2HIST_OP_ROLLFWD G 重组表 DB2HISTORY_OP_REORG DB2HIST_OP_REORG L 装入 DB2HISTORY_OP_LOAD DB2HIST_OP_LOAD N 重命名表空间 DB2HISTORY_OP_REN_TABLESPACE DB2HIST_OP_REN_TABLESPACE O 删除表空间 DB2HISTORY_OP_DROP_TABLESPACE DB2HIST_OP_DROP_TABLESPACE Q 停顿 DB2HISTORY_OP_QUIESCE DB2HIST_OP_QUIESCE R 复原 DB2HISTORY_OP_RESTORE DB2HIST_OP_RESTORE S 运行统计 DB2HISTORY_OP_RUNSTATS DB2HIST_OP_RUNSTATS T 改变表空间 DB2HISTORY_OP_ALT_TABLESPACE DB2HIST_OP_ALT_TBS U 卸装 DB2HISTORY_OP_UNLOAD DB2HIST_OP_UNLOAD 还将添加下列表。 表 13。有效 oOptype 值 db2HistData 结构 oOperation oOptype 描述 C/COBOL/FORTRAN 定义 B F 脱机 DB2HISTORY_OPTYPE_OFFLINE N 联机 DB2HISTORY_OPTYPE_ONLINE I 增量脱机 DB2HISTORY_OPTYPE_INCR_OFFLINE O 增量联机 DB2HISTORY_OPTYPE_INCR_ONLINE D Delta 脱机 DB2HISTORY_OPTYPE_DELTA_OFFLINE E Delta 联机 DB2HISTORY_OPTYPE_DELTA_ONLIN F E 日志结束 DB2HISTORY_OPTYPE_EOL P 时间点 DB2HISTORY_OPTYPE_PIT L I 插入 DB2HISTORY_OPTYPE_INSERT R 替换 DB2HISTORY_OPTYPE_REPLACE Q S 停顿共享 DB2HISTORY_OPTYPE_SHARE U 停顿更新 DB2HISTORY_OPTYPE_UPDATE X 停顿专用 DB2HISTORY_OPTYPE_EXCL Z 停顿复位 DB2HISTORY_OPTYPE_RESET R F 脱机 DB2HISTORY_OPTYPE_OFFLINE N 联机 DB2HISTORY_OPTYPE_ONLINE I 增量脱机 DB2HISTORY_OPTYPE_INCR_OFFLINE O 增量联机 DB2HISTORY_OPTYPE_INCR_ONLINE T C 添加容器 DB2HISTORY_OPTYPE_ADD_CONT R 再平衡 DB2HISTORY_OPTYPE_REB 38.5 db2HistoryOpenScan 以下值将被添加至 iCallerAction 参数。 DB2HISTORY_LIST_CRT_TABLESPACE 只选择传送其它过滤器的 CREATE TABLESPACE 和 DROP TABLESPACE 记录。 38.6 db2XaGetInfo(新 API) db2XaGetInfo — 获取资源管理器的信息 一旦进行了 xa_open 调用,就会抽取特定资源管理器的信息。 权限 无 必需的连接 数据库 API 包含文件 sqlxa.h C API 语法 /* File: sqlxa.h */ /* API: Get Information for Resource Manager */ /* ... */ SQL_API_RC SQL_API_FN db2XaGetInfo ( db2Uint32 versionNumber, void * pParmStruct, struct sqlca * pSqlca); typedef SQL_STRUCTURE db2XaGetInfoStruct { db2int32 iRmid; struct sqlca oLastSqlca; } db2XaGetInfoStruct; API 参数 versionNumber 输入。指定作为第二个参数 pParmStruct 传送的结构的版本和发行版级别。 pParmStruct 输入。指向 db2XaGetInfoStruct 结构的指针。 pSqlca 输出。指向 sqlca 结构的指针。有关此结构的更多信息,参见 Administrative API Reference。 iRmid 输入。指定需要信息的资源管理器。 oLastSqlca 输出。包含上一个 XA API 调用的 sqlca。 注意: 仅可检索上一个失败的 XA API 产生的 sqlca。 38.7 db2XaListIndTrans(取代 sqlxphqr 的新 API) db2XaListIndTrans — 列示不确定事务 为当前连接的数据库提供了所有不确定事务的列表。 作用域 此 API 仅影响在其上发出该 API 的节点。 权限 下列其中一项: sysadm dbadm 必需的连接 数据库 API 包含文件 db2ApiDf.h C API 语法 /* File: db2ApiDf.h */ /* API: List Indoubt Transactions */ /* ... */ SQL_API_RC SQL_API_FN db2XaListIndTrans ( db2Uint32 versionNumber, void * pParmStruct, struct sqlca * pSqlca); typedef SQL_STRUCTURE db2XaListIndTransStruct { db2XaRecoverStruct * piIndoubtData; db2Uint32 iIndoubtDataLen; db2Uint32 oNumIndoubtsReturned; db2Uint32 oNumIndoubtsTotal; db2Uint32 oReqBufferLen; } db2XaListIndTransStruct; typedef SQL_STRUCTURE db2XaRecoverStruct { sqluint32 timestamp; SQLXA_XID xid; char dbalias[SQLXA_DBNAME_SZ]; char applid[SQLXA_APPLID_SZ]; char sequence_no[SQLXA_SEQ_SZ]; char auth_id[SQL_USERID_SZ]; char log_full; char connected; char indoubt_status; char originator; char reserved[8]; } db2XaRecoverStruct; API 参数 versionNumber 输入。指定作为第二个参数 pParmStruct 传送的结构的版本和发行版级别。 pParmStruct 输入。指向 db2XaListIndTransStruct 结构的指针。 pSqlca 输出。指向 sqlca 结构的指针。有关此结构的更多信息,参见 Administrative API Reference。 piIndoubtData 输入。指向将在其中返回不确定数据的应用程序提供的缓冲区的指针。不确定数据为 db2XaRecoverStruct 格式。应用程序可通过使用 db2XaRecoverStruct 结构的大小,并从此参数提供的地址开始,遍历不确定事务的列表。 如果值为 NULL,DB2 将计算所需缓冲区的大小,并以 oReqBufferLen 的形式返回此值。oNumIndoubtsTotal 将包含不确定事务的总数。该应用程序可分配所需的缓冲区大小并再次发出该 API。 oNumIndoubtsReturned 输出。在由 pIndoubtData 指定的缓冲区中返回的不确定事务记录数。 oNumIndoubtsTotal 输出。调用 AIP 时可用的不确定事务记录总数。如果 piIndoubtData 缓冲区太小,难以容纳所有记录,则 oNumIndoubtsTotal 将大于 oNumIndoubtsReturned 的总数。应用程序可重新发出 API,以获取所有记录。 注意: 此数目可能会视不同的 API 调用而有所不同,这是由于自动的或试探性的不确定事务再同步,或是其它事务的状态变成不确定状态而造成的。 oReqBufferLen 输出。在 API 调用时保存所有不确定事务记录所需的缓冲区长度。应用程序可通过调用 API 并将 pIndoubtData 设置为 NULL 来用此值确定所需的缓冲区大小。然后,可用此值来分配所需缓冲区,并且将 pIndoubtData 设置为所分配缓冲区的地址来发出 API。 注意: 所需缓冲区大小可能会视各 API 调用的不同而有所不同,这是由于自动的或试探性的不确定事务再同步,或是由于其它事务的状态变成不确定状态而造成的。应用程序可分配更大的缓冲区来达到此目的。 timestamp 输出。指定事务变成不确定状态的时间。 xid 输出。指定由事务管理器分配的用以唯一地标识全局事务的 XA 标识符。 dbalias 输出。指定不确定事务所在的数据库的别名。 applid 输出。指定数据库管理器对此事务分配的应用程序标识符。 sequence_no 输出。指定由数据库管理器分配的作为 applid 的扩展的序列号。 auth_id 输出。指定运行事务的用户的授权标识。 log_full 输出。指示此事务是否导致了日志已满状态。有效值为: SQLXA_TRUE 此不确定事务导致了日志已满状态。 SQLXA_FALSE 此不确定事务未导致日志已满状态。 connected 输出。指示是否连接了应用程序。有效值为: SQLXA_TRUE 事务正在进行正常的同步点处理,且正在等待两阶段落实的第二阶段。 SQLXA_FALSE 由于较早前发生的故障,事务处于不确定状态,现在正等待与事务管理器的再同步。 indoubt_status 输出。指示此不确定事务的状态。有效值为: SQLXA_TS_PREP 事务已准备就绪。连接的参数可用来确定事务是否正等待正常落实处理的第二阶段,或是否发生了错误,需要与事务管理器的再同步。 SQLXA_TS_HCOM 已试探性落实事务。 SQLXA_TS_HROL 已试探性回滚事务。 SQLXA_TS_MACK 未从分区数据库中的节点进行事务落实确认。 SQLXA_TS_END 事务在此数据库中结束。稍后此事务可能被重新激活、落实或回滚。还可能是事务管理器遇到了错误,事务将不能完成。如果出现这种情况,则此事务需要试探性操作,原因是它可能会挂起锁定并阻止其它应用程序存取数据。 使用说明 在设置了与数据库或分区数据库协调节点的当前连接之后,典型的应用程序将执行下列步骤: 调用 db2XaListIndTrans,而 piIndoubtData 被设置为 NULL。这将在 oReqBufferLen 和 oNumIndoubtsTotal 中返回值。 使用 oReqBufferLen 中的返回值来分配缓冲区。此缓冲区可能不够大(如果有其它不确定事务存在的话),原因是为获取 oReqBufferLen 而对此 API 进行了初始调用。该应用程序可提供大于 oReqBufferLen 的缓冲区。 确定是否获得了所有的不确定事务记录。可通过将 oNumIndoubtsReturned 与 oNumIndoubtTotal 进行比较来完成此任务。如果 oNumIndoubtsTotal 大于 oNumIndoubtsReturned,应用程序可以重复上述步骤。 另见 Administrative API Reference 中的“sqlxhfrg - Forget Transaction Status”、“sqlxphcm - Commit an Indoubt Transaction”和“sqlxphrl - Roll Back an Indoubt Transaction”。 38.8 db2GetSnapshot — 获取快照 db2GetSnapshot API 的语法应为如下所示: int db2GetSnapshot( unsigned char version; db2GetSnapshotData *data, struct sqlca *sqlca); 数据中描述的参数如下所示: typedef struct db2GetSnapshotData{ sqlma *piSqlmaData; sqlm_collected *poCollectedData void *poBuffer; db2uint32 iVersion; db2int32 iBufferSize; db2uint8 iStoreResult; db2uint16 iNodeNumber; db2uint32 *poOutputFormat; }db2GetSnapshotData; 38.9 忘记日志记录 将把以下信息添加到“MPP Subordinator Prepare”一节后面的“Appendix F”中。 This log record is written after a rollback of indoubt transactions or after a commit of two-phase commit. The log record is written to mark the end of the transaction and releases any log resources held. In order for the transaction to be forgotten, it must be in a heuristically completed state. 表 10. Forget Log Record Structure 描述 类型 偏移量(字节数) Log header LogManagerLogRecordHeader 0(20) time sqluint64 20(8) Total Length: 28 bytes 38.10 sqlaintp — 获取错误消息 以下使用说明将被添加至此 API 的描述: In a multi-threaded application, sqlaintp must be attached to a valid context; otherwise, the message text for SQLCODE -1445 cannot be obtained. 38.11 sqlbctcq — 关闭表空间容器查询 对于此 API,装入并非有效的“权限”级别。 38.12 sqleseti — 设置客户机信息 还可以通过 SQL 专用寄存器来存取由 API 提供的数据值。这些寄存器中的值存储在数据库代码页中。在将这些数据值存储到专用寄存器之前,由此 API 提供的数据值会转换为数据库代码页。在转换为数据库代码页之后,超过受支持的最大大小的任何数据值在存储至服务器之前都将被截断。专用寄存器将返回这些被截断的值。初始数据值也将存储在服务器中,并且不会转换为数据库代码页。可以通过调用 sqleqryi API 来返回未转换的值。 38.13 sqlubkp — 备份数据库 对于 BackupType 参数,SQLUB_FULL 值将被替换为 SQLUB_DB。将会对数据库中的所有表空间进行备份。 要支持新的增量备份功能,还应添加 SQLUB_INCREMENTAL 和 SQLUB_DELTA 参数。增量备份映象是自上次成功地进行完全备份之后发生了更改的所有数据库数据的副本。delta 备份映象是自上次成功地进行任何类型的备份之后发生更改的所有数据库数据的副本。 38.14 sqlureot — 重组表 以下语句将添加至“Usage Notes”: REORGANIZE TABLE cannot use an index that is based on an index extension. 38.15 sqlurestore — 复原数据库 对于 RestoreType 参数,SQLUD_FULL 值将被替换为 SQLUD_DB。将会对数据库中的所有表空间进行复原。这将会脱机运行。 要支持新的增量复原功能,还应添加 SQLUD_INCREMENTAL 参数。 增量备份映象是自上次成功地进行完全备份之后发生了更改的所有数据库数据的副本。 38.16 关于“AIX 扩展共享内存支持”(EXTSHM)的文档错误 在“Appendix E. Threaded Applications with Concurrent Access”中,注释 2 现在应为: 2. By default, AIX does not permit 32-bit applications to attach to more than 11 shared memory segments per process, of which a maximum of 10 can be used for local DB2 connections. To use EXTSHM with DB2, do the following: In client sessions: export EXTSHM=ON When starting the DB2 server: export EXTSHM=ON db2set DB2ENVLIST=EXTSHM db2start On EEE, also add the following lines to sqllib/db2profile: EXTSHM=ON export EXTSHM 38.17 SQLFUPD 38.17.1 锁定列表 记号的名称已从 SQLF_DBTN_LOCKLIST 更改为 SQLF_DBTN_LOCK_LIST。锁定列表参数已从 SMALLINT 更改为 64 位不带符号的 INTEGER。还应对“Updatable Database Configuration Parameters”表添加以下附加项。 参数名称 标记 标记值 数据类型 locklist SQLF_DBTN_LOCK_LIST 704 Uint64 此参数的新的最大值为 524 288。 另外,在 "Chapter 3. Data Structures" 的“Table 53. Updatable Database Configuration Parameters”中,将 dbheap的标记值错误地列示为 701。正确的值为 58。 38.18 SQLEDBDESC 将会对 SQLDBCSS(在 sqlenv 中作了定义)的有效值列表添加两个值。它们是: SQL_CS_SYSTEM_NLSCHAR 对字符类型使用 NLS 版本的比较例程的系统的整理顺序。 SQL_CS_USER_NLSCHAR 对字符类型使用 NLS 版本的比较例程的用户的整理顺序。 构建 OS/2 和 Windows 应用程序 39.1 提供的更新 在“修订包 4”中已对构建 OS/2 和 Windows 应用程序作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 39.2 S/390 和 zSeries 上的 Linux 支持 S/390 和 zSeries 上的“DB2 Linux 版”支持下列操作系统环境: SuSE v7.0 SuSE SLES 7 TurboLinux v6.1 注意: 要在 SuSE SLES 7 上运行 DB2 版本 7,需要在路径“CD1/suse/a1/compat.rpm”中安装 libstdc++ v6.1 兼容 RPM,它在 SuSE Linux Enterprise Server Developer's Edition CD 集的第 1 张 CD 上。必须作为 root 用户来完成此步骤。要安装 RPM,将 CD 映象安装到一个目录中。例如,要将它安装到目录 /mnt 中,使用以下命令来安装 RPM: rpm -Uh /mnt/CD1/suse/a1/compat.rpm 然后运行 ldconfig。 39.3 Linux Rexx 支持 Intel x86(32 位)的“DB2 Linux 版”支持“对象 REXX 解释器 Linux 版版本 2.1”。 S/390 上的“DB2 Linux 版”支持“对象 REXX 2.2.0 Linux/390 版”。 39.4 关于分发已编译的 SQL 过程的附加注释 在 UNIX 系统上,确保实例所有者(即,DB2 引擎以其执行的用户)与 $DB2PATH/adm/.fenced 文件的所有者属于同一个主组。另外,这两个用户中的每个用户都应该属于另一个用户的主组。 如果未能成功执行 GET ROUTINE 或 PUT ROUTINE 操作(或它们的相应过程),则始终都将返回一个错误(SQLSTATE 38000)以及诊断文本(它提供了有关故障原因的信息)。例如,如果为 GET ROUTINE 提供的过程名不标识 SQL 过程,则将返回诊断文本“100,02000”,其中,“100”和“02000”分别是用来标识问题原因的 SQLCODE 和 SQLSTATE。此示例中的 SQLCODE 和 SQLSTATE 指示在目录表中找不到为给定的过程名所指定的行。 Application Development Guide 40.1 提供的更新 在“修订包 4”中已对 Application Development Guide 作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 40.2 对“调试 Java 存储过程”的更正 在第 21 章的“准备调试”一节中,将指导您使用 db2dbugd 命令。这是不正确的。而应使用以下命令: idebug -qdaemon -quiport=portno 缺省端口号为 8000。idebug 是 IBM Distributed Debugger 的客户机端守护程序,它是随 VisualAge for Java 和“WebSphere Studio 应用程序开发程序”一起交付的。 40.3 executeQuery 和 executeUpdate 的新要求 为了符合 J2EE 1.3 标准,从修订包 5 开始,DB2 JDBC 驱动程序就不再允许对 executeQuery 使用非查询语句,也不允许对 executeUpdate 使用查询语句。如果试图这样做,将导致发生下列异常: 找不到 CLI0637E QUERY。 找不到 CLI0637E UPDATE。 如果不知道语句类型,则使用 execute()。 40.4 其它方法的 JDBC 驱动程序支持 CallableStatement.getBlob() 和 CallableStatement.getClob() JDBC 驱动程序现在支持方法 CallableStatement.getBlob() 和 CallableStatement.getClob()。因为 DB2 不支持存储过程参数中存在 LOB 定位器,所以,必须具有足够的系统内存来容纳 LOB 数据可能具有的最大大小,该值是在 CREATE PROCEDURE 中指定的。如果没有足够的内存,则将导致内存不足的异常。 此支持不可用于未编目的存储过程。 Statement.setFetchSize(int rows) 和 ResultSet.setFetchSize(int rows) JDBC 驱动程序现在支持 Statement.setFetchSize(int rows) 和 ResultSet.setFetchSize(int rows)。现在,可以使用这些方法来提高“类型 3”(或“net”)驱动程序的 ResultSet 性能。 40.5 用于 DB2 UDB 的 IBM OLE DB 供应商 有关使用“IBM OLE DB 供应商 DB2 版”的更多信息,参考 http://www.ibm.com/software/data/db2/udb/ad/v71/oledb.html。 CLI 指南与参考 41.1 使用运行时客户机绑定数据库实用程序 在可将数据库实用程序(导入、导出、重组或命令行处理器)和 DB2 CLI 绑定文件与每个数据库配合使用之前,不能使用“DB2 运行时客户机”来将这些实用程序和文件与该数据库绑定。必须转而使用“DB2 管理客户机”或“DB2 应用程序开发客户机”。 必须将这些数据库实用程序和 DB2 CLI 绑定文件与每个数据库绑定,这些程序和文件才能与该数据库配合使用。在网络环境中,如果使用运行于不同操作系统之上的多个客户机,或这些客户机处于不同的 DB2 版本或服务级别,则必须对每个操作系统和 DB2 版本组合都绑定这些实用程序一次。 41.2 在 CLI 应用程序中使用静态 SQL 有关在 CLI 应用程序中使用静态 SQL 的更多信息,参见网址如下的 Web 页面: http://www.ibm.com/software/data/db2/udb/staticcli/ 41.3 创建静态 JDBC/ODBC/CLI 概要文件的限制 创建 JDBC/ODBC/CLI 静态概要文件当前主要用于简明应用程序。它不适用于带有许多功能组件以及在执行期间要进行复杂程序逻辑运算的复杂应用程序。 SQL 语句必须已成功地执行,才能捕获到创建概要文件会话中。在语句匹配会话中,不匹配的动态语句将继续作为动态 JDBC/ODBC/CLI 调用来执行。 SQL 语句必须与被捕获和绑定为语句匹配的有效候选语句的每个字符都相同。空格也是有意义的:例如,"COL = 1" 会被认为与 "COL=1" 不同。使用参数标记取代文字,可增大匹配的命中率。 执行预先绑定了静态 SQL 语句的应用程序时,控制动态语句行为的动态寄存器对转换为静态方式的语句将没有影响。 如果应用程序对后续 DML 语句中引用的对象发出 DDL 语句,将会在捕获文件中找到全部这些语句。JDBC/ODBC/CLI 静态创建概要文件绑定工具将尝试绑定它们。对于支持 VALIDATE(RUN)绑定选项的 DBMS,绑定尝试将会成功,但对于不支持 VALIDATE(RUN)绑定选项的 DBMS,绑定尝试将会失败。在这种情况中,应用程序不应使用创建静态概要文件。 数据库管理员可能会根据应用程序特定的要求来编辑捕获文件,以添加、更改或除去 SQL 语句。 41.4 ADT 变换 以下内容会取代本书中的现有信息。 There is a new descriptor type (smallint) SQL_DESC_USER_DEFINED_TYPE_CODE, with values: SQL_TYPE_BASE 0 (this is not a USER_DEFINED_TYPE) SQL_TYPE_DISTINCT 1 SQL_TYPE_STRUCTURED 2 This value can be queried with either SQLColAttribute or SQLGetDescField (IRD only). The following attributes are added to obtain the actual type names: SQL_DESC_REFERENCE_TYPE SQL_DESC_STRUCTURED_TYPE SQL_DESC_USER_TYPE The above values can be queried using SQLColAttribute or SQLGetDescField (IRD only). Add SQL_DESC_BASE_TYPE in case the application needs it. For example, the application may not recognize the structured type, but intends to fetch or insert it, and let other code deal with the details. Add a new connection attribute called SQL_ATTR_TRANSFORM_GROUP to allow an application to set the transform group (rather than use the SQL "SET CURRENT DEFAULT TRANSFORM GROUP" statement). Add a new statement/connection attribute called SQL_ATTR_RETURN_USER_DEFINED_TYPES that can be set or queried using SQLSetConnectAttr, which causes CLI to return the value SQL_DESC_USER_DEFINED_TYPE_CODE as a valid SQL type. This attribute is required before using any of the transforms. By default, the attribute is off, and causes the base type information to be returned as the SQL type. When enabled, SQL_DESC_USER_DEFINED_TYPE_CODE will be returned as the SQL_TYPE. The application is expected to check for SQL_DESC_USER_DEFINED_TYPE_CODE, and then to retrieve the appropriate type name. This will be available to SQLColAttribute, SQLDescribeCol, and SQLGetDescField. The SQLBindParameter does not give an error when you bind SQL_C_DEFAULT, because there is no code to allow SQLBindParameter to specify the type SQL_USER_DEFINED_TYPE. The standard default C types will be used, based on the base SQL type flowed to the server. For example: sqlrc = SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 30, 0, &c2, 30, NULL); 41.5 Chapter 1. Introduction to CLI 41.5.1 Differences Between DB2 CLI and Embedded SQL 忽略从“Advantages of Using DB2 CLI”一节的列表末尾算起的第三项。正确的信息为如下所示: DB2 CLI provides the ability to retrieve multiple rows and result sets generated from a stored procedure residing on a DB2 Universal Database server, a DB2 for MVS/ESA server (Version 5 or later), or an OS/400 server (Version 5 or later). Support for multiple result sets retrieval on OS/400 requires that PTF (Program Temporary Fix) SI01761 be applied to the server. Contact your OS/400 system administrator to ensure that this PTF has been applied. 41.6 Chapter 3. Using Advanced Features 41.6.1 Writing Multi-Threaded Applications 应将以下内容添加至“Multi-Threaded Mixed Applications”一节的末尾: 注意: It is recommended that you do not use the default stack size, but instead increase the stack size to at least 256 000. DB2 requires a minimum stack size of 256 000 when calling a DB2 function. You must ensure therefore, that you allocate a total stack size that is large enough for both your application and the minimum requirements for a DB2 function call. 41.6.2 Writing a DB2 CLI Unicode Application 以下是本章中新增的一节: There are two main areas of support for DB2 CLI Unicode Applications: The addition of a set of functions that can accept Unicode string arguments in place of ANSI string arguments. The addition of new C and SQL data types to describe Unicode data. The following sections provide more information for both of these areas. To be considered a Unicode application, the application must set the SQL_ATTR_ANSI_APP connection attribute to SQL_AA_FALSE, before a connection is made.This will ensure that the CLI will use Unicode as the preferred method of communication between itself and the database. 41.6.2.1 Unicode Functions ODBC API functions have suffixes to indicate the format of their string arguments: those that accept unicode end in W; those that accept ANSI have no suffix. 注意: ODBC adds equivalent functions with names that end in A, but these are not used by DB2 CLI. The following is a list of those functions that are available in DB2 CLI, which have both ANSI and Unicode Versions. SQLBrowseConnect SQLForeignKeys SQLPrimaryKeys SQLColAttribute SQLGetConnectAttr SQLProcedureColumns SQLColAttributes SQLGetConnectOption SQLProcedures SQLColumnPrivileges SQLGetCursorName SQLSetConnectAttr SQLColumns SQLGetDescField SQLSetConnectOption SQLConnect SQLGetDescRec SQLSetCursorName SQLDataSources SQLGetDiagField SQLSetDescField SQLDescribeCol SQLGetDiagRec SQLSetStmtAttr SQLDriverConnect SQLGetInfo SQLSpecialColumns SQLGetStmtAttr SQLStatistics SQLError SQLNativeSQL SQLTablePrivileges SQLExecDirect SQLPrepare SQLTables Unicode functions whose arguments are always the length of strings interpret these arguments as count-of-characters. Functions that return length information for server data also describe the display size and precision in terms of characters. When the length (transfer size of the data) could refer to string or nonstring data, the length is interpreted as a count of bytes. For example, SQLGetInfoW will still take the length as count-of-bytes, but SQLExecDirectW will use count-of-characters. CLI will return data from result sets in either Unicode or ANSI, depending on the application's binding. If an application binds to SQL_C_CHAR, the driver will convert SQL_WCHAR data to SQL_CHAR. An ODBC driver manager, if used, maps SQL_C_WCHAR to SQL_C_CHAR for ANSI drivers but does no mapping for Unicode drivers. 41.6.2.2 New datatypes and Valid Conversions Additional ODBC and CLI defined data types have been added to accommodate Unicode databases. These types supplement the set of C and SQL types that already exist. The new C type, SQL_C_WCHAR, indicates that the C buffer contains UCS-2 data in native endian format. The new SQL types, SQL_WCHAR, SQL_WVARCHAR, and SQL_WLONGVARCHAR, indicate that a particular column or parameter marker contains Unicode data. For DB2 Unicode databases, graphic columns will be described using the new types. 表 11. Supported Data Conversions SQL Data Type S Q L _ C_ CH A R S Q L _ C_ W CH A R S Q L _ C_ L O N G S Q L _ C_ S H O R T S Q L _ C_ T I N Y I N T S Q L _ C_ F L O A T S Q L _ C_ D O U B L E S Q L _ C_ T Y P E _ D A T E S Q L _ C_ T Y P E _ T I M E S Q L _ C_ T Y P E _ T I M E S T A M P S Q L _ C_ B I N A R Y S Q L _ C_ B I T S Q L _ C_ D B CH A R S Q L _ C_ CL O B _ L O CA T O R S Q L _ C_ B L O B _ L O CA T O R S Q L _ C_ D B CL O B _ L O CA T O R S Q L _ C_ B I G I N T S Q L _ C_ N U M E R I C BLOB X X D X CHAR D X X X X X X X X X X X X X CLOB D X X X DATE X X D X DBCLOB X X D X DECIMAL D X X X X X X X X X X DOUBLE X X X X X X D X X X FLOAT X X X X X X D X X X GRAPHIC(Non-Unicode) X X D GRAPHIC(Unicode) X X X X X X X X X X X X D X INTEGER X X D X X X X X X X LONG VARCHAR D X X LONG VARGRAPHIC(Non-Unicode) X X X D LONG VARGRAPHIC(Unicode) X X X D NUMERIC D X X X X X X X X REAL X X X X X D X X X SMALLINT X X X D X X X X X X BIGINT X X X X X X X X X D X TIME X X D X TIMESTAMP X X X X D VARCHAR D X X X X X X X X X X X X X VARGRAPHIC(Non-Unicode) X X D VARGRAPHIC(Unicode) X X X X X X X X X X X X D X 注意: D Conversion is supported. This is the default conversion for the SQL data type. X All IBM DBMSs support the conversion. blank No IBM DBMS supports the conversion. Data is not converted to LOB Locator types, rather locators represent a data value, refer to Using Large Objects for more information. SQL_C_NUMERIC is only available on 32-bit Windows operating systems. 41.6.2.3 Obsolete Keyword/Patch Value Before Unicode applications were supported, applications that were written to work with single-byte character data could be made to work with double-byte graphic data by a series of cli ini file keywords, such as GRAPHIC=1,2 or 3, Patch2=7. These workarounds presented graphic data as character data, and also affected the reported length of the data. These keywords are no longer required for Unicode applications, and should not be used due to the risk of potential side effects. If it is not known if a particular application is a Unicode application, we suggest you try without any of the keywords that affect the handling of graphic data. 41.6.2.4 Literals in Unicode Databases In non-unicode databases, data in LONG VARGRAPHIC and LONG VARCHAR columns cannot be compared. Data in GRAPHIC/VARGRAPHIC and CHAR/VARCHAR columns can only be compared, or assigned to each other, using explicit cast functions since no implicit code page conversion is supported. This includes GRAPHIC/VARGRAPHIC and CHAR/VARCHAR literals where a GRAPHIC/VARGRAPHIC literal is differentiated from a CHAR/VARCHAR literal by a G prefix. For Unicode databases, casting between GRAPHIC/VARGRAPHIC and CHAR/VARCHAR literals is not required. Also, a G prefix is not required in front of a GRAPHIC/VARGRAPHIC literal. Provided at least one of the arguments is a literal, implicit conversions occur. This allows literals with or without the G prefix to be used within statements that use either SQLPrepareW() or SQLExecDirect(). Literals for LONG VARGRAPHICs still must have a G prefix. For more information, see "Casting Between Data Types" in "Chapter 3. Language Elements" of the SQL Reference. 41.6.2.5 New CLI Configuration Keywords The following three keywords have been added to avoid any extra overhead when Unicode applications connect to a database. DisableUnicode Keyword Description: Disables the underlying support for Unicode. db2cli.ini Keyword Syntax: DisableUnicode = 0 | 1 Default Setting: 0 (false) DB2 CLI/ODBC Settings Tab: This keyword cannot be set using the CLI/ODBC Settings notebook. The db2cli.ini file must be modified directly to make use of this keyword. Usage Notes: With Unicode support enabled, and when called by a Unicode application, CLI will attempt to connect to the database using the best client code page possible to ensure there is no unnecessary data loss due to code page conversion. This may increase the connection time as code pages are exchanged, or may cause code page conversions on the client that did not occur before this support was added. Setting this keyword to True (1) will cause all Unicode data to be converted to the application's local code page first, before the data is sent to the server. This can cause data loss for any data that cannot be represented in the local code page. ConnectCodepage Keyword Description: Specifies a specific code page to use when connecting to the data source to avoid extra connection overhead. db2cli.ini Keyword Syntax: ConnectCodepage = 0 | 1 | Default Setting: 0 DB2 CLI/ODBC Settings Tab: This keyword cannot be set using the CLI/ODBC Settings notebook. The db2cli.ini file must be modified directly to make use of this keyword. Usage Notes: Non-Unicode applications always connect to the database using the application's local code page, or the DB2Codepage environment setting. By default, CLI will ensure that Unicode applications will connect to Unicode databases using UTF-8 and UCS-2 code pages. The default for connecting to non-unicode databases is to use the databases's code page if the database server is running DB2 for Windows, DB2 for Unix or DB2 for OS/2. This ensures that there is no unnecessary data loss due to code page conversion. This keyword allows the user to specify the database's code page when connecting to a non-Unicode database in order to avoid any extra overhead on the connection. Specifying a value of 1 causes SQLDriverConnect() to return the correct value in the output connection string, so the value can be used on future SQLDriverConnect() calls. UnicodeServer Keyword Description: Indicates that the data source is a unicode server. Equivalent to setting ConnectCodepage=1208. db2cli.ini Keyword Syntax: UnicodeServer = 0 | 1 Default Setting: 0 DB2 CLI/ODBC Settings Tab: This keyword cannot be set using the CLI/ODBC Settings notebook. The db2cli.ini file must be modified directly to make use of this keyword. Usage Notes: This keyword is equivalent to ConnectCodepage=1208, and is added only for convenience. Set this keyword to avoid extra connect overhead when connecting to DB2 for OS/390 Version 7 or higher. There is no need to set this keyword for DB2 for Windows, DB2 for Unix or DB2 for OS/2 databases, since there is no extra processing required. 41.6.3 Microsoft Transaction Server (MTS) as Transaction Monitor 以下命令更正了“Installation and Configuration”这一小节中的 DISABLEMULTITHREAD 配置关键字的缺省值: DISABLEMULTITHREAD keyword (default 0) 41.6.4 Scrollable Cursors 应该将以下信息添加到“Scrollable Cursors”一节中: 41.6.4.1 Server-side Scrollable Cursor Support for OS/390 The UDB client for the Unix, Windows, and OS/2 platforms supports updatable server-side scrollable cursors when run against OS/390 Version 7 databases. To access an OS/390 scrollable cursor on a three-tier environment, the client and the gateway must be running DB2 UDB Version 7.1, FixPak 3 or later. There are two application enablement interfaces that can access scrollable cursors: ODBC and JDBC. The JDBC interface can only access static scrollable cursors, while the ODBC interface can access static and keyset-driven server-side scrollable cursors. Cursor Attributes The table below lists the default attributes for OS/390 Version 7 cursors in ODBC. 表 12. Default attributes for OS/390 cursors in ODBC Cursor Type Cursor Sensitivity Cursor Updatable Cursor Concurrency Cursor Scrollable forward-onlya unspecified non-updatable read-only concurrency non-scrollable static insensitive non-updatable read-only concurrency scrollable keyset-driven sensitive updatable values concurrency scrollable a Forward-only is the default behavior for a scrollable cursor without the FOR UPDATE clause. Specifying FOR UPDATE on a forward-only cursor creates an updatable, lock concurrency, non-scrollable cursor. Supported Fetch Orientations All ODBC fetch orientations are supported via the SQLFetchScroll or SQLExtendedFetch interfaces. Updating the Keyset-Driven Cursor A keyset-driven cursor is an updatable cursor. The CLI driver appends the FOR UPDATE clause to the query, except when the query is issued as a SELECT ... FOR READ ONLY query, or if the FOR UPDATE clause already exists. The keyset-driven cursor implemented in DB2 for OS/390 is a values concurrency cursor. A values concurrency cursor results in optimistic locking, where locks are not held until an update or delete is attempted. When an update or delete is attempted, the database server compares the previous values the application retrieved to the current values in the underlying table. If the values match, then the update or delete succeeds. If the values do not match, then the operation fails. If failure occurs, the application should query the values again and re-issue the update or delete if it is still applicable. An application can update a keyset-driven cursor in two ways: Issue an UPDATE WHERE CURRENT OF "" or DELETE WHERE CURRENT OF "" using SQLPrepare() with SQLExecute() or SQLExecDirect(). Use SQLSetPos() or SQLBulkOperations() to update, delete, or add a row to the result set. 注意: Rows added to a result set via SQLSetPos() or SQLBulkOperations() are inserted into the table on the server, but are not added to the server's result set. Therefore, these rows are not updatable nor are they sensitive to changes made by other transactions. The inserted rows will appear, however, to be part of the result set, since they are cached on the client. Any triggers that apply to the inserted rows will appear to the application as if they have not been applied. To make the inserted rows updatable, sensitive, and to see the result of applicable triggers, the application must issue the query again to regenerate the result set. Troubleshooting for Applications Created Before Scrollable Cursor Support Since scrollable cursor support is new, some ODBC applications that were working with previous releases of UDB for OS/390 or UDB for Unix, Windows, and OS/2 may encounter behavioral or performance changes. This occurs because before scrollable cursors were supported, applications that requested a scrollable cursor would receive a forward-only cursor. To restore an application's previous behavior before scrollable cursor support, set the following configuration keywords in the db2cli.ini file: 表 13. Configuration keyword values restoring application behavior before scrollable cursor support Configuration Keyword Setting Description PATCH2=6 Returns a message that scrollable cursors (both keyset-driven and static) are not supported. CLI automatically downgrades any request for a scrollable cursor to a forward-only cursor. DisableKeysetCursor=1 Disables both the server-side and client-side keyset-driven scrollable cursors. This can be used to force the CLI driver to give the application a static cursor when a keyset-driven cursor is requested. UseServerKeysetCursor=0 Disables the server-side keyset-driven cursor for applications that are using the client-side keyset-driven cursor library to simulate a keyset-driven cursor. Only use this option when problems are encountered with the server-side keyset-driven cursor, since the client-side cursor incurs a large amount of overhead and will generally have poorer performance than a server-side cursor. 41.6.5 Using Compound SQL 本书中缺少以下注释: Any SQL statement that can be prepared dynamically, other than a query, can be executed as a statement inside a compound statement. Note: Inside Atomic Compound SQL, savepoint, release savepoint, and rollback to savepoint SQL statements are also disallowed. Conversely, Atomic Compound SQL is disallowed in savepoint. 41.6.6 Using Stored Procedures 41.6.6.1 用于构建和调试 SQL 和 Java 存储过程的特权 必须为想要构建、调试和运行 SQL 存储过程的用户授予下列特权: db2 将对数据库的 CONNECT 特权授予用户标识 db2 将对数据库的 IMPLICIT_SCHEMA 特权授予用户标识 db2 将对数据库的 BINDADD 特权授予用户标识 db2 将对 SYSIBM.SYSDUMMY1 的 SELECT 特权授予用户标识 db2 将对 SYSCAT.PROCEDURES 的 SELECT 特权授予用户标识 db2 将对 DB2DBG.ROUTINE_DEBUG 的 UPDATE 特权授予用户标识 必须为想要构建、调试和运行 Java 存储过程的用户授予下列特权: db2 将对数据库的 CONNECT 特权授予用户标识 db2 将对数据库的 IMPLICIT_SCHEMA 特权授予用户标识 db2 将对数据库的 BINDADD 授予用户标识(仅当利用使用了 SQLJ 的静态 SQL 来构建 Java 存储过程时才需要) db2 将对 SYSIBM.SYSDUMMY1 的 SELECT 特权授予用户标识 db2 将对 SYSCAT.PROCEDURES 的 SELECT 特权授予用户标识 db2 将对 DB2DBG.ROUTINE_DEBUG 的 UPDATE 特权授予用户标识 要创建 DB2DBG.ROUTINE_DEBUG 表,发出以下命令: db2 -tf sqllib/misc/db2debug.ddl 有关调试 Java 存储过程的更多信息,参见 Application Development Guide。 41.6.6.2 Writing a Stored Procedure in CLI 以下是未说明的对 CLI 存储过程的限制: If you are making calls to multiple CLI stored procedures, the application must close the open cursors from one stored procedure before calling the next stored procedure. More specifically, the first set of open cursors must be closed before the next stored procedure tries to open a cursor. 41.6.6.3 CLI Stored Procedures and Autobinding 本书中补充了下列信息: The CLI/ODBC driver will normally autobind the CLI packages the first time a CLI/ODBC application executes SQL against the database, provided the user has the appropriate privilege or authorization. Autobinding of the CLI packages cannot be performed from within a stored procedure, and therefore will not take place if the very first thing an application does is call a CLI stored procedure. Before running a CLI application that calls a CLI stored procedure against a new DB2 database, you must bind the CLI packages once with this command: UNIX db2 bind /@db2cli.lst blocking all Windows and OS/2 db2bind "%DB2PATH%\bnd\@db2cli.lst" blocking The recommended approach is to always bind these packages at the time the database is created to avoid autobind at runtime. Autobind can fail if the user does not have privilege, or if another application tries to autobind at the same time. 41.7 Chapter 4. Configuring CLI/ODBC and Running Sample Applications 41.7.1 Configuration Keywords 41.7.1.1 CURRENTFUNCTIONPATH 忽略 CURRENTFUNCTIONPATH 关键字中的最后一段。正确的信息为如下所示: This keyword is used as part of the process for resolving unqualified function and stored procedure references that may have been defined in a schema name other than the current user's schema. The order of the schema names determines the order in which the function and procedure names will be resolved. For more information on function and procedure resolution, refer to the SQL Reference. 41.7.1.2 SKIPTRACE 下文描述这一新配置关键字: Keyword Description: Allows CLI applications to be excluded from the trace function. db2cli.ini Keyword Syntax: SKIPTRACE = 0 | 1 Default Setting: Do not skip the trace function. DB2 CLI/ODBC Settings Tab: This keyword cannot be set using the CLI/ODBC Settings notebook. The db2cli.ini file must be modified directly to make use of this keyword. Usage Notes: This keyword can improve performance by allowing the trace function to bypass CLI applications. Therefore, if the DB2 trace facility db2trc is turned on and this keyword is set to 1, the trace will not contain information from the execution of the CLI application. Turning SKIPTRACE on is recommended for production environments on the UNIX platform where trace information is not required. Test environments may benefit, however, from having trace output, so this keyword can be turned off (or left at its default setting) when detailed execution information is desired. SKIPTRACE must be set in the [COMMON] section of the db2cli.ini configuration file. 41.8 Chapter 5. DB2 CLI Functions 41.8.1 SQLBindFileToParam - Bind LOB File Reference to LOB Parameter SQLBindFileToParam() CLI 函数中的最后一个参数 IndicatorValue 当前被描述为“output (deferred)”。它应为“input (deferred)”。 41.8.2 SQLColAttribute -- Return a Column Attribute SQL_DESC_AUTO_UNIQUE_VALUE 和 SQL_DESC_UPDATABLE 自变量的“Description”列增加了下列更新: SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE is returned in NumericAttributePtr for all DB2 SQL data types. Currently DB2 CLI is not able to determine if a column is an identity column, therefore SQL_FALSE is always returned. This limitation does not fully conform to the ODBC specifications. Future versions of DB2 CLI for Unix and Windows servers will provide auto-unique support. SQL_DESC_UPDATABLE Indicates if the column data type is an updateable data type: SQL_ATTR_READWRITE_UNKNOWN is returned in NumericAttributePtr for all DB2 SQL data types. It is returned because DB2 CLI is not currently able to determine if a column is updateable. Future versions of DB2 CLI for Unix and Windows servers will be able to determine if a column is updateable. 41.8.3 SQLGetData - Get Data From a Column 以下文本替换 SQLGetData 的 SQLSTATE 表中的 SQLSTATE 22007 的 Explanation 列中的当前语句: Conversion from a string to a datetime format was indicated, but an invalid string representation or value was specified, or the value was an invalid date. 41.8.4 SQLGetInfo - Get General Information 下列内容更正了“Information Returned by SQLGetInfo”下面的“Usage”一节中的信息: InfoType SQL_CURSOR_CLOSE_BEHAVIOR 应该为 SQL_CLOSE_BEHAVIOR。 SQL_DATABASE_NAME(字符串)的注释应该为如下所示: 注意: This string is the same as that returned by the SELECT CURRENT SERVER statement on non-host systems. For host databases, such as DB2 for OS/390 or DB2 for OS/400, the string returned is the DCS database name that was provided when the CATALOG DCS DATABASE DIRECTORY command was issued at the DB2 Connect gateway. 41.8.5 SQLGetLength - Retrieve Length of A String Value 下列内容更正了“Table 113. SQLGetLength Arguments”中的脚注: Note: a This is in characters for DBCLOB data. 41.8.6 SQLNextResult - Associate Next Result Set with Another Statement Handle 应将以下文本添加至第 5 章“DB2 CLI Functions”: 41.8.6.1 Purpose Specification: DB2 CLI 7.x 41.8.6.2 Syntax SQLRETURN SQLNextResult (SQLHSTMT StatementHandle1 SQLHSTMT StatementHandle2); 41.8.6.3 Function Arguments 表 14. SQLNextResult Arguments Data Type Argument Use Description SQLHSTMT StatementHandle input Statement handle. SQLHSTMT StatementHandle input Statement handle. 41.8.6.4 Usage A stored procedure returns multiple result sets by leaving one or more cursors open after exiting. The first result set is always accessed by using the statement handle that called the stored procedure. If multiple result sets are returned, either SQLMoreResults() or SQLNextResult() can be used to describe and fetch the result set. SQLMoreResults() is used to close the cursor for the first result set and allow the next result set to be processed, whereas SQLNextResult() moves the next result set to StatementHandle2, without closing the cursor on StatementHandle1. Both functions return SQL_NO_DATA_FOUND if there are no result sets to be fetched. Using SQLNextResult() allows result sets to be processed in any order once they have been transferred to other statement handles. Mixed calls to SQLMoreResults() and SQLNextResult() are allowed until there are no more cursors (open result sets) on StatementHandle1. When SQLNextResult() returns SQL_SUCCESS, the next result set is no longer associated with StatementHandle1. Instead, the next result set is associated with StatementHandle2, as if a call to SQLExecDirect() had just successfully executed a query on StatementHandle2. The cursor, therefore, can be described using SQLNumResultSets(), SQLDescribeCol(), or SQLColAttribute(). After SQLNextResult() has been called, the result set now associated with StatementHandle2 is removed from the chain of remaining result sets and cannot be used again in either SQLNextResult() or SQLMoreResults(). This means that for 'n' result sets, SQLNextResult() can be called successfully at most 'n-1' times. If SQLFreeStmt() is called with the SQL_CLOSE option, or SQLFreeHandle() is called with HandleType set to SQL_HANDLE_STMT, all pending result sets on this statement handle are discarded. SQLNextResult() returns SQL_ERROR if StatementHandle2 has an open cursor or StatementHandle1 and StatementHandle2 are not on the same connection. If any errors or warnings are returned, SQLError() must always be called on StatementHandle1. 注意: SQLMoreResults() also works with a parameterized query with an array of input parameter values specified with SQLParamOptions() and SQLBindParameter(). SQLNextResult(), however, does not support this. 41.8.6.5 Return Codes SQL_SUCCESS SQL_SUCCESS_WITH_INFO SQL_STILL_EXECUTING SQL_ERROR SQL_INVALID_HANDLE SQL_NO_DATA_FOUND 41.8.6.6 Diagnostics 表 15. SQLNextResult SQLSTATE SQLSTATE Description Explanation 40003 08S01 Communication Link failure. The communication link between the application and data source failed before the function completed. 58004 Unexpected system failure. Unrecoverable system error. HY001 Memory allocation failure. DB2 CLI is unable to allocate the memory required to support execution or completion of the function. HY010 Function sequence error. The function was called while in a data-at-execute (SQLParamData(), SQLPutData()) operation. StatementHandle2 has an open cursor associated with it. The function was called while within a BEGIN COMPOUND and END COMPOUND SQL operation. HY013 Unexpected memory handling error. DB2 CLI was unable to access the memory required to support execution or completion of the function. HYT00 Time-out expired. The time-out period expired before the data source returned the result set. Time-outs are only supported on non-multitasking systems such as Windows 3.1 and Macintosh System 7. The time-out period can be set using the SQL_ATTR_QUERY_TIMEOUT attribute for SQLSetConnectAttr(). 41.8.6.7 Restrictions Only SQLMoreResults() can be used for parameterized queries. 41.8.6.8 References "SQLMoreResults - Determine If There Are More Result Sets" on page 535 "Returning Result Sets from Stored Procedures" on page 120 41.8.7 SQLSetEnvAttr - Set Environment Attribute 以下是“Usage”的“Environment Attributes”一节中的附加环境属性: SQL_ATTR_KEEPCTX A 32-bit integer value that specifies whether the context should be kept when the environment handle is freed. This attribute should be set at the environment level. It can be used by mutli-threaded applications to manage contexts associated with each thread's connections, database resources, and data transmission. The possible values are: SQL_FALSE: The application will release the context when a thread's environment handle is freed. This is the default value. SQL_TRUE: The context will remain valid when a thread's environment handle is freed, making the context available for other existing threads on the same connection. Setting SQL_ATTR_KEEPCTX to SQL_TRUE may resolve some problems associated with conflicting contexts in multi-threaded applications. 注意: This is an IBM extension. 41.8.8 SQLSetStmtAttr — 设置与语句相关的选项 下列内容将替换语句属性 SQL_ATTR_QUERY_TIMEOUT 的现有信息: SQL_ATTR_QUERY_TIMEOUT (DB2 CLI v2) A 32-bit integer value that is the number of seconds to wait for an SQL statement to execute between returning to the application. This option can be set and used to terminate long running queries. The value of 0 means there is no time out. DB2 CLI supports non-zero values for all platforms that support multithreading. 41.9 Appendix C. DB2 CLI and ODBC 以下是添加至本附录的新的一节: 41.9.1 ODBC Unicode Applications A Unicode ODBC application sends and retrieves character data primarily in UCS-2. It does this by calling Unicode versions of the ODBC functions (those with a 'W' suffix) and by indicating Unicode data types. The application does not explicitly specify a local code page. The application can still call the ANSI functions and pass local code page strings. For example, the application may call SQLConnectW() and pass the DSN, User ID and Password as Unicode arguments. It may then call SQLExecDirectW() and pass in a Unicode SQL statement string, and then bind a combination of ANSI local code page buffers (SQL_C_CHAR) and Unicode buffers (SQL_C_WCHAR). The database data types may or may not be Unicode. If a CLI application calls SQLSetConnectAttr with SQL_ATTR_ANSI_APP set to SQL_AA_FALSE or calls SQLConnectW without setting the value of SQL_ATTR_ANSI_APP, then the application is considered a Unicode application. This means all CHAR data is sent and received from a Unicode database in UTF-8 format. The application can then fetch CHAR data into SQL_C_CHAR buffers in local code page (with possible data loss), or into SQL_C_WCHAR buffers in UCS-2 without any data loss. If the application does not do either of the two calls above, CHAR data is converted to the applications local code page at the server. This means CHAR data fetched into SQL_C_WCHAR may suffer data loss. If the DB2CODEPAGE instance variable is set (using db2set) to code page 1208 (UTF-8), the application will receive all CHAR data in UTF-8 since this is now the local code page. The application must also ensure that all CHAR input data is also in UTF-8. ODBC also assumes that all SQL_C_WCHAR data is in the native endian format. CLI will perform any required byte-reversal for SQL_C_WCHAR. 41.9.1.1 ODBC Unicode Versus Non-Unicode Applications This release of DB2 Universal Database contains the SQLConnectW() API. A Unicode driver must export SQLConnectW in order to be recognized as a Unicode driver by the driver manager. It is important to note that many ODBC applications (such as Microsoft Access and Visual Basic) call SQLConnectW(). In previous releases of DB2 Universal Database, DB2 CLI has not supported this API, and thus was not recognized as a Unicode driver by the ODBC driver manager. This caused the ODBC driver manager to convert all Unicode data to the application's local code page. With the added support of the SQLConnectW() function, these applications will now connect as Unicode applications and DB2 CLI will take care of all required data conversion. DB2 CLI now accepts Unicode APIs (with a suffix of "W") and regular ANSI APIs. ODBC defines a set of functions with a suffix of "A", but the driver manager does not pass ANSI functions with the "A" suffix to the driver. Instead, it converts these functions to ANSI function calls without the suffix, and then passes them to the driver. An ODBC application that calls the SQLConnectW() API is considered a Unicode application. Since the ODBC driver manager will always call the SQLConnectW() API regardless of what version the application called, ODBC introduced the SQL_ATTR_ANSI_APP connect attribute to notify the driver if the application should be considered an ANSI or UNICODE application. If SQL_ATTR_ANSI_APP is set to SQL_AA_TRUE, the DB2 CLI converts all Unicode data to the local code page before sending it to the server. 41.10 Appendix D. Extended Scalar Functions 41.10.1 Date and Time Functions 下列函数是“Appendix D. Extended Scalar Functions”的“Date and Time Functions”一节中所缺少的函数: DAYOFWEEK_ISO( date_exp ) Returns the day of the week in date_exp as an integer value in the range 1-7, where 1 represents Monday. Note the difference between this function and the DAYOFWEEK() function, where 1 represents Sunday. WEEK_ISO( date_exp ) Returns the week of the year in date_exp as an integer value in the range of 1-53. Week 1 is defined as the first week of the year to contain a Thursday. Therefore, Week1 is equivalent to the first week that contains Jan 4, since Monday is considered to be the first day of the week. Note that WEEK_ISO() differs from the current definition of WEEK(), which returns a value up to 54. For the WEEK() function, Week 1 is the week containing the first Saturday. This is equivalent to the week containing Jan. 1, even if the week contains only one day. DAYOFWEEK_ISO() 和 WEEK_ISO() 在版本 7 中创建的数据库中是自动提供的。如果数据库是在版本 7 之前创建的,则可能未提供这些函数。要使 DAYOFWEEK_ISO() 和 WEEK_ISO() 函数在这种数据库中可用,使用 db2updb 系统命令。有关 db2updb 的更多信息,参见《发行说明》中的“Command Reference”一节。 41.11 Appendix K. Using the DB2 CLI/ODBC/JDBC Trace Facility 此附录中的各节已更新。查看 故障诊断指南 中的“Traces”一章以获取有关此跟踪设施的最新信息。 《消息参考》 42.1 提供的更新 在“修订包 4”中已对《消息参考》作了更新。可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 42.2 消息更新 下表指示自从上次发布 《消息参考》 以来已经更改的消息。这些注释中包括关于联机查看消息文本的指示信息。 表 16. 新消息和已更改的消息 消息代码 更改性质 SQL2554N 新原因码 SQL0490N 新消息 SQL20214N 新消息 SQL20211N 新消息 下表指示自从上次发布 《消息参考》 以来已经更改的 SQL 状态。这些注释中包括关于联机查看消息文本的指示信息。 表 17. 新 SQLSTATE 消息 SQLSTATE 值 含义 428B7 在 SQL 语句中指定的数字超出有效范围。 428FI 指定了 ORDER OF,但表标志符不包含 ORDER BY 子句。 428FJ 视图或摘要表的外部 fullselect 中不允许 ORDER BY。 42.3 联机阅读消息文本 假定您已熟悉安装了 DB2 的操作系统的功能。 可从操作系统命令行存取下列 DB2 消息: 前缀 描述 ASN “DB2 复制”生成的消息 CCA “客户机配置辅助程序”生成的消息 CLI “调用层接口”生成的消息 DBA “DB2 控制中心”和“数据库管理实用程序”生成的消息 DBI 安装和配置生成的消息 DB2 命令行处理器生成的消息 DWC 数据仓库中心生成的消息 FLG “信息目录管理器”生成的消息和原因码 GSE DB2 Spatial Extender 生成的消息 SAT “DB2 卫星”生成的消息 SPM 同步点管理器生成的消息 SQJ Java 嵌入式 SQL(SQLJ)生成的消息 SQL 当检测到警告或错误状态时由数据库管理器生成的消息。 另外,还以联机方式提供了与 SQLSTATE 值相关联的消息文本。 消息标识符由三个字符的消息前缀(参见上表),后跟四位或五位消息号组成。结尾位的字母用来描述错误消息的严重性,它是可选的。 要存取关于这些错误消息的帮助,在操作系统命令提示处输入以下命令: db2 "? XXXnnnnn" 其中,XXX 表示消息前缀,而 nnnnn 表示消息号。 注意: 作为 db2 命令的一个参数接受的消息标识符是不区分大小写的,并且不需要终止字母。 因此,下列命令将生成相同的结果: db2 "? SQL0000N" db2 "? sql0000" db2 "? SQL0000n" 若消息文本对于您的屏幕来说太长的话,则(在基于 Unix 的系统和其它支持 'more' 的系统上)使用以下命令: db2 "? XXXnnnnn" | more 还可以交互式输入方式来调用帮助。要输入交互式输入方式,可在操作系统命令提示处输入以下命令: db2 一旦处于交互式输入方式,就可在下列命令提示处输入命令: db2 => 要以此方式获取 DB2 消息,在命令提示处输入以下命令: ? XXXnnnnn 注意: 若消息文本超过了屏幕的长度,则具有非图形工作站的用户可将输出传输至 'more'(在基于 Unix 的系统上)程序中,或者将输出重定向至稍后可以浏览的文件中。 可以通过发出以下命令来检索与给定的 SQLSTATE 值相关联的消息文本: db2 "? nnnnn" 或 db2 "? nn" 其中,nnnnn 五位 SQLSTATE(字母数字),而 nn 是两位 SQLSTATE 类码(SQLSTATE 值的前两位)。 SQL Reference 43.1 提供的 SQL Reference 更新 已经更新了 SQL Reference,可从 http://www.ibm.com/software/data/db2/udb/winos2unix/support 联机下载获得最新的 PDF。此《发行说明》中的信息是对已更新的参考的补充。CD 上也提供了所有的更新文档。可以通过 DB2 服务中心使用 PTF 号 U478862 来订购此 CD。在以下网址处可以获得与“DB2 服务中心”联系的信息: http://www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/help.d2w/report。 43.2 Enabling the New Functions and Procedures 在“版本 7 修订包”中提供了新的 SQL 内置标量函数。有关这些新函数的描述,参考 SQL Reference 更新。当数据库服务器代码升级为新的服务级别时,不会在每个数据库上自动启用新函数。要启用这些新函数,系统管理员必须发出命令 db2updv7,以指定服务器上的每个数据库。此函数在数据库生成一个条目,以确保在执行此命令之前所创建的数据库对象使用可与新函数签名匹配的现有函数签名。 有关启用 MQSeries 函数(在 DB2MQ 模式中定义的那些函数)的信息,参见 MQSeries。 43.3 SET SERVER OPTION — 文档错误 SET SERVER OPTION 语句的“注释”部分包含令人容易误解的信息。当前的注释为: SET SERVER OPTION currently only supports the password, fold_id, and fold_pw server options. 这种声明不正确。SET SERVER OPTION 可支持所有服务器选项,包括不是由 IBM 提供的包装器的服务器选项。应当忽略该注释。 43.4 对“创建表空间容器”子句和“容器”字符串信息的更正 Information 当前,仅当使用 Network Appliance Filers、IBM iSCSI 或 IBM Network Attached Storage 时,才支持远程资源(例如,LAN 重定向的驱动器或 NFS 安装的文件系统)。这是对指示远程资源不受支持的当前文档的更正。 43.5 GRANT(表、视图或别名特权)— 文档错误 GRANT(表、视图或别名特权)语句的“注释”部分包含令人容易误解的内容。当前的注释为: DELETE, INSERT, SELECT and UPDATE privileges are not defined for nicknames since operations on nicknames depend on the privileges of the authorization ID used at the data source when the statement referencing the nickname is processed. 应当忽略此文本。因为不提出此注释的话,这一节中的其余文本将更准确。 43.6 MQSeries Information 43.6.1 Scalar Functions 43.6.1.1 MQPUBLISH >>-MQPUBLISH--(-------------------------------------------------> >--+---------------------------------------------+--msg-data----> '-publisher-service--,--+-------------------+-' '-service-policy--,-' >--+---------------------------------+--)---------------------->< '-,--topic--+-------------------+-' | (1) | '-,--correl-id------' 记录: 不能指定 correl-id,除非先前定义了 service 和 policy。 模式为 DB2MQ。 MQPUBLISH 函数将数据发布给 MQSeries。此函数要求安装“MQSeries 发布/预订”或“MQSeries 集成器”。请参考 www.ibm.com/software/MQSeries 以获取更详细的信息。 MQPUBLISH 函数将 msg-data 中包含的数据发布给在 publisher-service 中指定的 MQSeries 发布方,并使用由 service-policy 定义的服务质量策略。可以指定消息的可选主题,还可以指定可选的用户定义消息相关标识符。如果成功的话,该函数将返回值 '1',如果失败,则返回 '0'。 publisher-service 是包含要将消息发送至的逻辑 MQSeries 目的地的字符串。如果指定了该字符串,则 publisher-service 必须是指在 AMT.XML 库文件中定义的发布方“服务点”。服务点是一个逻辑端点,可以在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface。如果未指定 publisher-service,则将使用 DB2.DEFAULT.PUBLISHER。publisher-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时要使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 必须是指在 AMT.XML 库文件中定义的“策略”。“服务策略”定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 service-policy,则将使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 msg-data 一个字符串表达式,包含要通过 MQSeries 来发送的数据。如果字符串的类型为 VARCHAR,则最大大小为 4000 个字节。如果字符串类型为 CLOB,则其大小可达 1MB。 topic 一个字符串表达式,包含消息发布的主题。如果未指定主题,则没有任何主题将与该消息相关联。topic 的最大大小为 40 个字节。在一个字符串中可以指定多个主题(最长可达 40 个字符)。必须用冒号将每个主题隔开。例如,“t1:t2:the third topic”指示消息与所有三个主题 t1、t2 和“the third topic”相关联。 correl-id 一个可选的字符串表达式,包含要与此消息相关联的相关标识符。correl-id 通常是在请求和应答方案中指定的,以将请求与应答相关联。如果未指定该表达式,则不会向消息添加相关标识。 correl-id 的最大大小为 24 个字节。 示例 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 123”发布至缺省发布方服务(DB2.DEFAULT.PUBLISHER)。没有为消息指定相关标识符或主题。 VALUES MQPUBLISH('Testing 123') 示例 2:此示例将字符串“Testing 345”发布至主题“TESTS”下的发布方服务“MYPUBLISHER”。使用了缺省策略,但是未指定相关标识符。 VALUES MQPUBLISH('MYPUBLISHER','Testing 345', 'TESTS') 示例 3:此示例使用具有相关标识符“TEST1”的策略“MYPOLICY”来将字符串“Testing 678”发布至发布方服务“MYPUBLISHER”。消息是使用主题“TESTS”来发布的。 VALUES MQPUBLISH('MYPUBLISHER','MYPOLICY','Testing 678','TESTS','TEST1') 示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 901”发布主题“TESTS”下的发布方服务“MYPUBLISHER”,且没有任何相关标识符。 VALUES MQPUBLISH('Testing 901','TESTS') 如果成功的话,所有示例都将返回值 '1'。 43.6.1.2 MQREADCLOB >>-MQREADCLOB--(--+----------------------------------------+----> '-receive-service--+-------------------+-' '-,--service-policy-' >--)----------------------------------------------------------->< 模式为 DB2MQ。 MQREADCLOB 函数通过使用在 service-policy 中定义的服务质量策略来从由 receive-service 指定的 MQSeries 位置返回消息。执行此操作不会从与 receive-service 相关联的队列中除去消息,而是在队列开头返回消息。返回值是最大长度为 1MB 的 CLOB(包含该消息)。如果没有要返回的消息,则将返回 NULL。 receive-service 是一个字符串,包含要从其中接收消息的逻辑 MQSeries 目的地。如果指定了该字符串,则 receive-service 必须是指在 AMT.XML 库文件中定义的“服务点”。服务点是一个逻辑端点,可以在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface。如果未指定 receive-service,则将使用 DB2.DEFAULT.SERVICE。receive-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时所使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 必须是指在 AMT.XML 库文件中定义的“策略”。“服务策略”定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 service-policy,则将使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 示例: 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头的消息。 VALUES MQREADCLOB() 示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取服务“MYSERVICE”指定的队列开头的消息。 VALUES MQREADCLOB('MYSERVICE') 示例 3:此示例使用策略“MYPOLICY”来读取服务“MYSERVICE”指定的队列开头的消息。 VALUES MQREADCLOB('MYSERVICE','MYPOLICY') 如果成功的话,所有这些示例都会将消息的内容作为最大大小为 1MB 的 CLOB 返回。如果没有任何消息,则将返回 NULL。 43.6.1.3 MQRECEIVECLOB >>-MQRECEIVECLOB------------------------------------------------> >--(--+----------------------------------------------------------+--)->< '-receive-service--+-------------------------------------+-' '-,--service-policy--+--------------+-' '-,--correl-id-' 模式为 DB2MQ。 MQRECEIVECLOB 函数通过使用服务质量策略 service-policy 来从由 receive-service 指定的 MQSeries 位置处返回消息。执行此操作时将从与 receive-service 相关联的队列中除去消息。如果指定了 correl-id,则将返回具有匹配的相关标识符的第一条消息。如果未指定 correl-id,则将返回队列开头的消息。返回值是包含该消息的最大长度为 1MB 的 CLOB。如果没有要返回的消息,则将返回 NULL。 receive-service 是一个字符串,包含从其中接收消息的逻辑 MQSeries 目的地。如果指定了该字符串,则 receive-service 必须是指在 AMT.XML 库文件中定义的“服务点”。服务点是一个逻辑端点,可以在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface。如果未指定 receive-service,则使用 DB2.DEFAULT.SERVICE。receive-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时要使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 必须是指在 AMT.XML 库文件中定义的“策略” 1 。如果未指定 service-policy,则使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 correl-id 一个字符串,包含要与此消息相关联的可选相关标识符。correl-id 通常是在请求和应答方案中指定的,以将请求与应答相关联。如果未指定该字符串,则将不会使用相关标识。 correl-id 的最大大小为 24 个字节。 示例: 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头的消息。 VALUES MQRECEIVECLOB() 示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务“MYSERVICE”指定的队列开头的消息。 VALUES MQRECEIVECLOB('MYSERVICE') 示例 3:此示例使用策略“MYPOLICY”来接收服务“MYSERVICE”指定的队列开头的消息。 VALUES MQRECEIVECLOB('MYSERVICE','MYPOLICY') 示例 4:此示例使用策略“MYPOLICY”来从服务“MYSERVICE”指定的队列开头接收相关标识与 '1234' 相匹配的第一条消息。 VALUES MQRECEIVECLOB('MYSERVICE',MYPOLICY','1234') 如果成功的话,所有这些示例都会将消息的内容作为最大大小为 1MB 的 CLOB 返回。如果没有任何消息,则将返回 NULL。 43.6.1.4 MQSEND >>-MQSEND--(--+----------------------------------------+--------> '-send-service--,--+-------------------+-' '-service-policy--,-' >--msg-data--+-------------------+--)-------------------------->< | (1) | '-,--correl-id------' 记录: 不能指定 correl-id,除非先前定义了 service 和 policy。 模式为 DB2MQ。 MQSEND 函数使用 service-policy 定义的服务质量策略来将 msg-data 中包含的数据发送至 send-service 指定的 MQSeries 位置。可用 correl-id 来指定可选的用户定义消息相关标识符。如果成功的话,该函数将返回值 '1',如果失败,则返回 '0'。 msg-data 一个字符串表达式,包含要通过 MQSeries 来发送的数据。如果数据类型为 VARCHAR,则最大大小为 4000 个字节,如果数据类型为 CLOB,则最大大小为 1MB。 send-service 是包含要将消息发送至的逻辑 MQSeries 目的地的字符串。如果指定了该字符串,则 send-service 是指在 AMT.XML 库文件中定义的服务点。服务点是一个逻辑端点,可在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 send-service,则使用值 DB2.DEFAULT.SERVICE。send-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时所使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 必须是指在 AMT XML 库文件中定义的服务策略。“服务策略”定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 service-policy,则将使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 correl-id 一个可选的字符串,包含与此消息相关联的相关标识符。correl-id 通常是在请求和应答方案中指定的,以将请求与应答相关联。如果未指定该字符串,则将不会发送相关标识。 correl-id 的最大大小为 24 个字节。 示例: 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 123”发送至缺省服务(DB2.DEFAULT.SERVICE),且不带相关标识符。 VALUES MQSEND('Testing 123') 示例 2:此示例使用策略“MYPOLICY”来将字符串“Testing 345”发送至服务“MYSERVICE”,且不带相关标识符。 VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 345') 示例 3:此示例使用策略“MYPOLICY”来将字符串“Testing 678”发送至服务“MYSERVICE”,且带有相关标识符“TEST3”。 VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 678','TEST3') 示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来将字符串“Testing 901”发送至服务“MYSERVICE”,且不带相关标识符。 VALUES MQSEND('MYSERVICE','Testing 901') 如果成功的话,所有示例都将返回标量值 '1'。 43.6.2 Table Functions 43.6.2.1 MQREADALLCLOB >>-MQREADALLCLOB--(---------------------------------------------> >--+----------------------------------------+--+----------+-----> '-receive-service--+-------------------+-' '-num-rows-' '-,--service-policy-' >--)----------------------------------------------------------->< 模式为 DB2MQ。 MQREADALLCLOB 函数通过使用服务质量策略 service-policy 从 receive-service 指定的 MQSeries 位置返回包含消息和消息元数据的表。执行此操作不会从与 receive-service 相关联的队列中除去消息。 如果指定了 num-rows,则将返回最多为 num-rows 的消息。如果未指定 num-rows,则将返回所有可用的消息。返回的表包含下列各列: MSG - CLOB 列,包含 MQSeries 消息的内容。 CORRELID - VARCHAR(24) 列,用来保存用于关联消息的相关标识。 TOPIC - VARCHAR(40) 列,用来保存发布了消息的主题(如果有的话)。 QNAME - VARCHAR(48) 列,用来保存接收到消息的队列名。 MSGID - CHAR(24) 列,用来保存为此消息指定的 MQSeries 唯一标识符。 MSGFORMAT - VARCHAR(8) 列,用来保存 MQSeries 定义的消息的格式。通常字符串具有 MQSTR 格式。 receive-service 是一个字符串,包含从其中读取消息的逻辑 MQSeries 目的地。如果指定了该字符串,则 receive-service 必须是指在 AMT.XML 库文件中定义的服务点。服务点是一个逻辑端点,可以在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface。如果未指定 receive-service,则将使用 DB2.DEFAULT.SERVICE。receive-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时所使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 是指在 AMT XML 库文件中定义的“策略”。服务策略定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 service-policy,则将使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 num-rows 一个正整数,包含要由该函数返回的最大消息数。 示例: 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列中的所有消息。消息和所有元数据都是作为表返回的。 SELECT * FROM table (MQREADALLCLOB()) T 示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务 MYSERVICE 指定的队列开头的所有消息。只返回 MSG 和 CORRELID 列。 SELECT T.MSG, T.CORRELID FROM table (MQREADALLCLOB('MYSERVICE')) T 示例 3:此示例使用缺省策略(DB2.DEFAULT.POLICY)来读取缺省服务(DB2.DEFAULT.SERVICE)指定的队列开头。只返回 CORRELID 为 '1234' 的消息。将返回所有列。 SELECT * FROM table (MQREADALLCLOB()) T WHERE T.CORRELID = '1234' 示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列的前 10 条消息。将返回所有列。 SELECT * FROM table (MQREADALLCLOB(10)) T 43.6.2.2 MQRECEIVEALLCLOB >>-MQRECEIVEALLCLOB--(------------------------------------------> >--+----------------------------------------------------------+--> '-receive-service--+-------------------------------------+-' '-,--service-policy--+--------------+-' '-,--correl-id-' >--+-----------------+--)-------------------------------------->< '-+---+--num-rows-' '-,-' 模式为 DB2MQ。 MQRECEIVEALLCLOB 函数通过使用服务质量策略 service-policy 从 receive-service 指定的 MQSeries 位置返回包含消息和消息元数据的表。执行此操作时将从与 receive-service 相关联的队列中除去消息。 如果指定了 correl-id,则将只返回具有匹配的相关标识符的那些消息。如果未指定 correl-id,则将返回队列开头的消息。 如果指定了 num-rows,则将返回最多为 num-rows 的消息。如果未指定 num-rows,则返回所有可用的消息。返回的表包含下列各列: MSG - CLOB 列,包含 MQSeries 消息的内容。 CORRELID - VARCHAR(24) 列,用来保存用于关联消息的相关标识。 TOPIC - VARCHAR(40) 列,用来保存发布了消息的主题(如果有的话)。 QNAME - VARCHAR(48) 列,用来保存接收到消息的队列名。 MSGID - CHAR(24) 列,用来保存为此消息指定的 MQSeries 唯一标识符。 MSGFORMAT - VARCHAR(8) 列,用来保存 MQSeries 定义的消息的格式。通常字符串具有 MQSTR 格式。 receive-service 是一个字符串,包含从其中接收消息的逻辑 MQSeries 目的地。如果指定了该字符串,则 receive-service 必须是指在 AMT.XML 库文件中定义的服务点。服务点是一个逻辑端点,可以在其中发送或接收消息。服务点定义包括“MQSeries 队列管理器和队列”的名称。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 receive-service,则将使用 DB2.DEFAULT.SERVICE。receive-service 的最大大小为 48 个字节。 service-policy 一个字符串,包含在处理此消息时所使用的“MQSeries AMI 服务策略”。如果指定了该字符串,则 service-policy 是指在 AMT XML 库文件中定义的“策略”。服务策略定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。如果未指定 service-policy,则将使用缺省值 DB2.DEFAULT.POLICY。service-policy 的最大大小为 48 个字节。 correl-id 一个可选的字符串,包含与此消息相关联的相关标识符。correl-id 通常是在请求和应答方案中指定的,以将请求与应答相关联。如果未指定该字符串,则不会指定相关标识。correl-id 的最大大小为 24 个字节。 num-rows 一个正整数,包含要由该函数返回的最大消息数。 示例: 示例 1:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列中的所有消息。消息和所有元数据都是作为表返回的。 SELECT * FROM table (MQRECEIVEALLCLOB()) T 示例 2:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收服务 MYSERVICE 指定的队列开头的所有消息。只返回 MSG 和 CORRELID 列。 SELECT T.MSG, T.CORRELID FROM table (MQRECEIVEALLCLOB('MYSERVICE')) T 示例 3:此示例使用策略“MYPOLICY”来接收服务“MYSERVICE”指定的队列开头的所有消息。只返回 CORRELID 为 '1234' 的消息。只返回 MSG 和 CORRELID 列。 SELECT T.MSG, T.CORRELID FROM table (MQRECEIVEALLCLOB('MYSERVICE','MYPOLICY','1234')) T 示例 4:此示例使用缺省策略(DB2.DEFAULT.POLICY)来接收缺省服务(DB2.DEFAULT.SERVICE)指定的队列的前 10 条消息。将返回所有列。 SELECT * FROM table (MQRECEIVEALLCLOB(10)) T 43.6.3 MQSeries 函数中现在支持 CLOB 数据 MQSeries 函数(在 DB2MQ 模式中定义的那些函数)现在允许与 VARCHAR 数据和 CLOB 数据配合使用。在某些情况下,现在存在新函数处理 CLOB 数据类型,换句话说,已经存在的函数现在同时处理 CLOB 和 VARCHAR 数据。在任何一种情况下,CLOB 函数的语法与它的 VARCHAR 等价物的语法完全相同。下表中列示了支持使用 CLOB 数据的函数以及其等价 VARCHAR 函数: 表 18. 支持 CLOB 数据类型的 MQSeries 函数 用于 VARCHAR 数据的函数 用于 CLOB 数据的函数 MQPUBLISH MQPUBLISH MQREAD MQREADCLOB MQRECEIVE MQRECEIVECLOB MQSEND MQSEND MQREADALL MQREADALLCLOB MQRECEIVEALL MQRECEIVEALLCLOB 有关启用 MQSeries 函数(在 DB2MQ 模式中定义的那些函数)的信息,参见 MQSeries。 43.7 Data Type Information 43.7.1 Promotion of Data Types 在本节中,表 5 显示每个数据类型的优先权列表。请注意: 对于 Unicode 数据库,下列各项被认为是数据类型: CHAR 和 GRAPHIC VARCHAR 和 VARGRAPHIC LONG VARCHAR 和 LONG VARGRAPHIC CLOB 和 DBCLOB 在 Unicode 数据库中,可以创建这样的函数:函数签名中的唯一区别在于等效的 CHAR 和 GRAPHIC 数据类型之间的区别。例如,foo(CHAR(8)) and foo(GRAPHIC(8))。我们强烈建议您不要定义这样的重复函数,因为迁移到未来的发行版时将要求在继续迁移之前删除其中一个函数。 若确实存在这样的重复函数,则选择调用哪个函数是由两遍算法来确定的。第一遍尝试使用用于解析非 Unicode 数据库中的函数的算法来查找匹配项。若找不到匹配项,则会根据 CHAR 和 GRAPHIC 字符串的以列提升优先权来执行第二遍算法: GRAPHIC-->CHAR-->VARGRAPHIC-->VARCHAR-->LONG VARGRAPHIC-->LONG VARCHAR--> -->DBCLOB-->CLOB 43.7.2 Casting between Data Types 以下条目已经添加至列表,并指出“涉及单值类型的下列强制转型是受支持的”: 对于 Unicode 数据库,从 VARCHAR 或 VARGRAPHIC 强制转型为其源数据类型为 CHAR 或 GRAPHIC 的单值类型 DT。 以下是对“Table 6. Supported Casts between Built-in Data Types”的更新。只包括了该表中受影响的行。 表 19. Supported Casts between Built-in Data Types Target Data Type > Source Data Type V CH A R V A R CH A R L O N G V A R CH A R CL O B G R A P H I C V A R G R A P H I C L O N G V A R G R A P H I C D B CL O B CHAR Y Y Y Y Y1 Y1 - - VARCHAR Y Y Y Y Y1 Y1 - - LONGVARCHAR Y Y Y Y - - Y1 Y1 CLOB Y Y Y Y - - - Y1 GRAPHIC Y1 Y1 - - Y Y Y Y VARGRAPHIC Y1 Y1 - - Y Y Y Y LONGVARGRAPHIC - - Y1 Y1 Y Y Y Y DBCLOB - - Y2 Y1 Y Y Y Y 1 Cast is only supported for Unicode databases. 2 Cast is only supported for Unicode databases.Only explicit casting is supported. 43.7.3 Assignments and Comparisons 涉及到字符和图形数据的指定和比较仅当其中一个字符串为文字时才受支持。对于函数解析,图形文字和字符文字都将与字符和图形函数参数相匹配。 以下是对“Table 7. Data Type Compatibility for Assignments and Comparisons”的更新。仅包括受影响的表行和新脚注 6: Operands Binary Integer Decimal Number Floating Point Character String Graphic String Date Time Time- stamp Binary String UDT Character String No No No Yes Yes 6 1 1 1 No 3 2 Graphic String No No No Yes 6 Yes No No No No 2 6 Only supported for Unicode databases. 43.7.3.1 String Assignments Storage Assignment 这一小节的最后一段修改为如下所示: When a string is assigned to a fixed-length column and the length of the string is less than the length attribute of the target, the string is padded to the right with the necessary number of single-byte, double-byte, or UCS-22 blanks. The pad character is always a blank even for columns defined with the FOR BIT DATA attribute. Retrieval Assignment 这一小节的第三段修改为如下所示: When a character string is assigned to a fixed-length variable and the length of the string is less than the length attribute of the target, the string is padded to the right with the necessary number of single-byte, double-byte, or UCS-22 blanks. The pad character is always a blank even for strings defined with the FOR BIT DATA attribute. 2 UCS-2 defines several SPACE characters with different properties. For a Unicode database, the database manager always uses the ASCII SPACE at position x'0020' as UCS-2 blank. For an EUC database, the IDEOGRAPHIC SPACE at position x'3000' is used for padding GRAPHIC strings. Conversion Rules for String Assignments 已将以下段落添加至这一小节的末尾: For Unicode databases, character strings can be assigned to a graphic column, and graphic strings can be assigned to a character column. DBCS Considerations for Graphic String Assignments 这一小节的第一段已修改为如下所示: Graphic string assignments are processed in a manner analogous to that for character strings. For non-Unicode databases, graphic string data types are compatible only with other graphic string data types, and never with numeric, character string, or datetime data types. For Unicode databases, graphic string data types are compatible with character string data types. 43.7.3.2 String Comparisons Conversion Rules for Comparison 这一小节已修改为如下所示: When two strings are compared, one of the strings is first converted, if necessary, to the encoding scheme and code page of the other string. For details, see the "Rules for String Conversions" section of "Chapter 3. Language Elements" in the SQL Reference. 43.7.4 Rules for Result Data Types 43.7.4.1 Character and Graphic Strings in a Unicode Database 这是插入到“Graphic Strings”小节后面的新的小节。 In a Unicode database, character strings and graphic strings are compatible. If one operand is... And the other operand is... The data type of the result is... GRAPHIC(x) CHAR(y) or GRAPHIC(y) GRAPHIC(z) where z = max(x,y) VARGRAPHIC(x) CHAR(y) or VARCHAR(y) VARGRAPHIC(z) where z = max(x,y) VARCHAR(x) GRAPHIC(y) or VARGRAPHIC VARGRAPHIC(z) where z = max(x,y) LONG VARGRAPHIC CHAR(y) or VARCHAR(y) or LONG VARCHAR LONG VARGRAPHIC LONG VARCHAR GRAPHIC(y) or VARGRAPHIC(y) LONG VARGRAPHIC DBCLOB(x) CHAR(y) or VARCHAR(y) or CLOB(y) DBCLOB(z) where z = max(x,y) DBCLOB(x) LONG VARCHAR DBCLOB(z) where z = max(x,16350) CLOB(x) GRAPHIC(y) or VARGRAPHIC(y) DBCLOB(z) where z = max(x,y) CLOB(x) LONG VARGRAPHIC DBCLOB(z) where z = max(x,16350) 43.7.5 Rules for String Conversions 第三点已添加至本节的以下列表: For each pair of code pages, the result is determined by the sequential application of the following rules: If the code pages are equal, the result is that code page. If either code page is BIT DATA (code page 0), the result code page is BIT DATA. In a Unicode database, if one code page denotes data in an encoding scheme different from the other code page, the result is UCS-2 over UTF-8 (that is, the graphic data type over the character data type).1 Otherwise, the result code page is determined by Table 8 of the "Rules for String Conversions" section of "Chapter 3. Language Elements" in the SQL Reference. An entry of "first" in the table means the code page from the first operand is selected and an entry of "second" means the code page from the second operand is selected. 1 In a non-Unicode database, conversion between different encoding schemes is not supported. 43.7.6 Expressions 已经添加了下列内容: In a Unicode database, an expression that accepts a character or graphic string will accept any string types for which conversion is supported. 43.7.6.1 With the Concatenation Operator 已将以下内容添加至这一小节的末尾: In a Unicode database, concatenation involving both character string operands and graphic string operands will first convert the character operands to graphic operands. Note that in a non-Unicode database, concatenation cannot involve both character and graphic operands. 43.7.7 Predicates 以下条目已添加至由语句“The following rules apply to all types of predicates”所指示的列表: In a Unicode database, all predicates that accept a character or graphic string will accept any string types for which conversion is supported. 43.8 Unicode Information 43.8.1 Scalar Functions and Unicode 在 Unicode 数据库中,接受字符或图形字符串的所有标量函数都将接受支持转换的所有字符串类型。 43.9 GRAPHIC 类型与 DATE/TIME/TIMESTAMP 的兼容性 在下列各节中,已经将对具有“character string”表示法的日期时间值更改为“string”表示法。DB2 现在仅对于 Unicode 数据库支持日期时间值的“graphic string”表示法。 43.9.1 日期时间值的字符串表示法 数据类型为 DATE、TIME 或 TIMESTAMP 的值是以对用户透明的内部格式表示的。然而,也可以用字符串来表示日期、时间和时间戳记值。这是很有用的,因为没有常量或变量的数据类型为 DATE、TIME 或 TIMESTAMP。必须在为字符串变量指定日期时间值之后才能检索它。可以使用 CHAR 函数或 GRAPHIC 函数(仅对于 Unicode 数据库)来将日期时间值更改为字符串表示法。与数据库的国家/地区代码相关联的日期时间值的缺省格式通常为字符串表示法,除非它在程序进行预编译或者绑定至数据库时被 DATETIME 选项的规范所覆盖。 不管其长度如何,大对象字符串、LONG VARCHAR 值或 LONG VARGRAPHIC 值都不能用来表示日期时间值(SQLSTATE 42884)。 当在对内部日期时间值的操作中使用了日期时间值的有效字符串表示法时,在执行该操作之前,字符串表示法被转换成日期、时间或时间戳记的内部格式。 日期、时间和时间戳记字符串只能包含字符和数字。 43.9.1.1 日期字符串、时间字符串和日期时间字符串 已经稍微更改了这些术语的定义。已经将对“character string”表示法的引用更改为“string”表示法。 43.9.2 数据类型之间的转型 现在,DATE、TIME 和 TIMESTAMP 可以转型为 GRAPHIC 和 VARGRAPHIC。GRAPHIC 和 VARGRAPHIC 现在可以转型为 DATE、TIME 和 TIMESTAMP。图形字符串支持只能用于 Unicode 数据库。 43.9.3 指定和比较 对于图形字符串与 DATE、TIME 和 TIMESTAMP 值之间的指定和比较,现在存在数据类型兼容性问题。图形字符串支持只能用于 Unicode 数据库。 43.9.4 日期时间指定 指定日期时间的基本规则是:只能为具有相匹配的数据库(DATE、TIME 或 TIMESTAMP)的列或者是定长或变长字符串变量或字符串列指定 DATE、TIME 或 TIMESTAMP 值。一定不能为 LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB 或 BLOB 变量或列指定 DATE、TIME 或 TIMESTAMP 值。 当为字符串变量或字符串列指定了日期时间值时,将自动转换为字符串表示法。日期、时间或时间戳记的任何部分都不会省略前导零。根据字符串表示法的格式不同,目标的必需长度也将有所不同。如果目标的长度大于必需的长度,并且目标是定长字符串,则将在右边填充空白。如果目标的长度小于必需的长度,则结果将取决于所涉及的日期时间值的类型以及目标的类型。 当目标是主变量时,应满足下列规则: DATE: 如果变量长度少于 10 个字符,则会发生错误。 TIME: 如果使用了 USA 格式,则变量的长度一定不能少于 8 个字符;如果使用其它格式,则长度一定不能少于 5 个字符。 如果使用了 ISO 或 JIS 格式,并且如果主变量的长度少于 8 个字符,如果提供了时间的秒部分,则从结果中省略它,并将它指定给指示器。设置 SQLCA 的 SQLWARN1 字段以指示省略。 TIMESTAMP: 如果主变量少于 19 个字符,则会发生错误。如果长度少于 26 个字符,但是大于或等于 19 个字符,则将省略值的微秒部分的结尾数字。设置 SQLCA 的 SQLWARN1 字段以指示省略。 43.9.5 DATE >>-DATE--(--表达式--)------------------------------------------>< 模式为 SYSIBM。 DATE 函数从值中返回一个日期。 自变量必须是日期、时间戳记、小于或等于 3 652 059 的正数、日期或时间戳记的有效字符串表示法,长度为 7 的不是 LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB 或 BLOB 数据类型的字符串。 只有 Unicode 数据库才支持是日期或时间戳记的图形字符串表示法的自变量。 如果自变量是长度为 7 的字符串,则必须以 yyyynnn 格式来表示有效日期,其中,yyyy 是用来表示年份的数字,nnn 是 001 到 366 之间的数字,表示该年份中的某一天。 该函数的结果为日期。如果自变量可以为空,则结果就可以为空;如果自变量为空,则结果为空值。 其它规则取决于自变量的数据类型: 如果自变量是日期、时间戳记或者是日期或时间戳记的有效字符串表示法: 结果为值的日期部分。 如果自变量是一个数字: 结果是 0001 年 1 月 1 日之后 n-1 天的日期,其中,n 是数字的整数部分。 如果自变量是长度为 7 的字符串: 结果是用字符串表示的日期。 示例: 假定 RECEIVED 列(时间戳记)具有相当于 '1988-12-25-17.12.30.000000' 的内部值。 此示例将导致内部表示法 '1988-12-25'。 DATE(RECEIVED) 此示例将导致内部表示法 '1988-12-25'。 DATE('1988-12-25') 此示例将导致内部表示法 '1988-12-25'。 DATE('25.12.1988') 此示例将导致内部表示法 '0001-02-04'。 DATE(35) 43.9.6 GRAPHIC >>-GRAPHIC--(--graphic-expression--+------------+--)----------->< '-,--integer-' 模式为 SYSIBM。 GRAPHIC 函数返回图形字符串类型的 GRAPHIC 表示法或者是日期时间类型的 GRAPHIC 表示法。 graphic-expression 它是一个返回值为图形字符串的表达式。 integer 用来指定所得到的 GRAPHIC 数据类型的长度属性的整数值。该值必须在 1 和 127 之间。如果未指定 integer,则结果的长度与第一个自变量的长度相同。 该函数的结果为 GRAPHIC。如果自变量可以为空,则结果就可以为空;如果自变量为空,则结果为空值。 图形的日期时间: >>-GRAPHIC--(--datetime-expression--+--------------+--)-------->< '-,--+-ISO---+-' +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-' 图形的日期时间: datetime-expression 是下列三种数据类型之一的表达式 date 结果是日期的图形字符串表示法,其格式由第二个自变量指定。结果的长度为 10。如果指定了第二个自变量,但不是有效值,则会发生错误(SQLSTATE 42703)。 time 结果是时间的图形字符串表示法,其格式由第二个自变量指定。结果的长度为 8。如果指定了第二个自变量,但不是有效值,则会发生错误(SQLSTATE 42703)。 timestamp 第二个自变量不适用,一定不能指定(SQLSTATE 42815)。结果是时间戳记的图形字符串表示法。结果的长度为 26。 字符串的代码页是应用程序服务器中的数据库的代码页。 43.9.7 TIME >>-TIME--(--表达式--)------------------------------------------>< 模式为 SYSIBM。 TIME 函数从值中返回时间。 自变量必须是时间、时间戳记或者不是 LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB 或 BLOB 的时间或时间戳记的有效字符串表示法。 只有 Unicode 数据库才支持是时间或时间戳记的图形字符串表示法的自变量。 该函数的结果为时间。如果自变量可以为空,则结果就可以为空;如果自变量为空,则结果为空值。 其它规则取决于自变量的数据类型: 如果自变量是一个时间: 则结果就是该时间。 如果自变量是一个时间戳记: 则结果是时间戳记的时间部分。 如果自变量是一个字符串: 结果是由字符串表示的时间。 示例: 选择在一天(任何一天)中至少比当前时间晚一个小时接收到的 IN_TRAY 样本表中的所有注释。 SELECT * FROM IN_TRAY WHERE TIME(RECEIVED) >= CURRENT TIME + 1 HOUR 43.9.8 TIMESTAMP >>-TIMESTAMP--(--表达式--+----------+--)----------------------->< '-,表达式-' 模式为 SYSIBM。 TIMESTAMP 函数从一个值或一对值中返回时间戳记。 只有 Unicode 数据库才支持是日期、时间或时间戳记的图形字符串表示法的自变量。 自变量的规则取决于是否指定了第二个自变量。 如果只指定了一个自变量: 则它必须是时间戳记、时间戳记的有效字符串表示法、长度为 14 的不是 LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB 或 BLOB 的字符串。 长度为 14 的字符串必须是表示有效日期和时间的数字的字符串,其格式为 yyyyxxddhhmmss,其中 yyyy 是年份、 xx 是月份、dd 是日、hh 是小时、 mm 是分钟、ss 是秒。 如果两个自变量都指定了: 则第一个自变量必须是日期或日期的有效字符串表示法,第二个自变量必须是时间或时间的有效字符串表示法。 该函数的结果为时间戳记。如果其中一个自变量可以为空,则结果就可以为空;如果其中一个自变量为空,则结果为空值。 其它规则取决于是否指定了第二个自变量: 如果两个自变量都指定了: 则结果为时间戳记,其日期是由第一个自变量指定的,时间是由第二个自变量指定的。该时间戳记的微秒部分为零。 如果只指定了一个自变量并且是时间戳记: 则结果就是该时间戳记。 如果只指定了一个自变量并且是字符串: 则结果是由该字符串表示的时间戳记。如果该自变量是长度为 14 的字符串,则时间戳记的微秒部分为零。 示例: 假定 START_DATE(日期)列的值等价于 1988-12-25, START_TIME(时间)列的值等价于 17.12.30。 TIMESTAMP(START_DATE, START_TIME) 则返回的值将为“1988-12-25-17.12.30.000000”。 43.9.9 VARGRAPHIC Vargraphic 的字符: >>-VARGRAPHIC--(--character-string-expression--)--------------->< Vargraphic 的日期时间: >>-VARGRAPHIC--(--datetime-expression--)----------------------->< Vargraphic 的图形: >>-VARGRAPHIC--(--graphic-string-expression--+------------+-----> '-,--integer-' >--)----------------------------------------------------------->< 模式为 SYSIBM。 VARGRAPHIC 函数返回下列值的图形字符串表示法: 字符串值,将单字节字符转换为双字节字符, 日期时间值(仅在 Unicode 数据库中受支持) 图形字符串值,如果第一个自变量是任何类型的图形字符串。 该函数的结果为变长图形字符串(VARGRAPHIC 数据类型)。如果第一个自变量可以为空,则结果就可以为空;如果第一个自变量为空,则结果为空值。 Vargraphic 的字符: character-string-expression 一个表达式,其值必须是除了 LONG VARCHAR 或 CLOB 之外的字符串数据类型,其最大长度一定不能大于 16 336 个字节。 结果的长度属性等于自变量的长度属性。 让 S 来表示 character-string-expression 的值。将 S 中的每个单字节字符转换为其等价的双字节表示法或者转换为结果中的双字节替代字符; S 中的每个双字节字符都“按现状”映射。如果双字节字符的第一个字节作为 S 的最后一个字节来出现,则将把它转换为双字节替代字符。保持 S 中的字符的顺序。 以下是关于转换的其它注意事项。 对于 Unicode 数据库,此函数将操作数的代码页中的字符串转换成 UCS-2。将转换操作数的每个字符(包括 DBCS 字符)。如果给定了第二个自变量,则它指定所得到的 UCS-2 字符串的期望长度(UCS-2 字符数)。 由 VARGRAPHIC 函数来转换成双字节代码点是根据操作数的代码页来转换的。 将不转换操作数的双字节字符。所有其它字符都将转换为它们相应的双字节形式。如果没有相应的双字节形式,则使用代码页的双字节替代字符。 如果结果中返回了一个或多个双字节替代字符,则不会产生警告或错误代码。 Vargraphic 的日期时间 datetime-expression 一个表达式,其值必须为 DATE、TIME 或 TIMESTAMP 数据类型。 Vargraphic 的图形: graphic-string-expression 它是一个返回值为图形字符串的表达式。 integer 所得到的变长图形字符串的长度属性。该值必须在 0 和 16 336 之间。如果未指定此自变量,则结果的长度与自变量的长度相同。 如果 graphic-string-expression 的长度大于结果的长度属性,则会执行截断和返回警告(SQLSTATE 01004),除非被截断的字符全部都是空白,并且 graphic-string-expression 不是长字符串(LONG VARGRAPHIC 或 DBCLOB)。 43.10 Unicode 数据库的大型索引键 43.10.1 ALTER TABLE 可以将注册表变量 DB2_INDEX_2BYTEVARLEN 为 ON 时定义的作为任何索引(包括主索引和唯一索引)的一部分的变长列的长度改变为大于 255 个字节的长度。外键涉及变长列这一事实不再会导致不能将该列的长度改变为大于 255 个字节,无论该注册表变量是如何设置的均如此。然而,不能将长度大于 255 个字节的数据插入到表中,除非相应主键中列的长度大于 255 个字节(如果主键是在该注册表变量为 ON 时创建的,则这是不可能的)。 43.10.2 CREATE INDEX 如果注册表变量 DB2_INDEX_2BYTEVARLEN 为 ON,则可以对长度大于 255 个字节的变长列定义索引。 43.10.3 CREATE TABLE 如果注册表变量 DB2_INDEX_2BYTEVARLEN 为 ON,则带有变量键部件的主键和唯一键的大小可以大于 255。可以对长度大于 255 个字节的变长列定义外键。 43.11 ALLOCATE CURSOR 语句注释部分不正确 ALLOCATE CURSOR 语句的“注释”部分中有两项存在错误。忽略这些项中包含的信息。 43.12 GET DIAGNOSTICS 语句中的附加选项 GET DIAGNOSTICS 语句 GET DIAGNOSTICS 语句用来获取有关先前执行的 SQL 语句的信息。此语句的语法已作了如下更新。 命令语法 >>-GET DIAGNOSTICS----------------------------------------------> >--+-SQL-variable-name--=--+-ROW_COUNT-----+-+----------------->< | '-RETURN_STATUS-' | '-| condition-information |---------------' condition-information |--EXCEPTION--1-------------------------------------------------> .-,------------------------------------------. V | >----SQL-variable-name--=--+-MESSAGE_TEXT-----+-+---------------| '-DB2_TOKEN_STRING-' 命令参数 SQL-variable-name 标识作为赋值目标的变量。如果指定 ROW_COUNT 或 RETURN_STATUS,该变量必须是整数变量。否则,该变量必须是 CHAR 或 VARCHAR。SQL 变量可在复合语句中定义。 ROW_COUNT 标识与先前的 SQL 语句相关联的行数。如果先前的 SQL 语句为 DELETE、INSERT 或 UPDATE 语句,则 ROW_COUNT 标识该语句删除的、插入的或更新的行数,受触发器或引用完整性约束影响的行除外。如果先前的语句为 PREPARE 语句,则 ROW_COUNT 标识准备语句中的结果行的估计数目。 RETURN_STATUS 如果该语句是调用返回状态的过程的 CALL 语句,则此项标识与先前执行的 SQL 语句相关联的存储过程返回的状态值。如果先前的语句不是这样一个语句,则返回值没有任何意义,且可能是任何整数。 condition-information 指定要返回的关于先前执行的 SQL 语句的错误或警告信息。如果需要关于错误的信息,则 GET DIAGNOSTICS 语句必须是在将处理该错误的处理程序中指定的第一个语句。如果需要关于警告的信息,且如果处理程序将控制警告条件,则 GET DIAGNOSTICS 语句必须是在该处理程序中指定的第一个语句。如果该处理程序不控制警告条件,则 GET DIAGNOSTICS 语句必须是要执行的下一个语句。 MESSAGE_TEXT 标识先前执行的 SQL 语句返回的任何错误或警告信息文本。信息文本是以处理该语句的数据库服务器使用的语言返回的。如果语句完成且 SQLCODE 为零,则返回空字符串或空白。 DB2_TOKEN_STRING 标识先前执行的 SQL 语句返回的任何错误或警告信息记号。如果语句完成且 SQLCODE 为零,或者 SQLCODE 没有任何记号,则返回空字符串或空白。 43.13 Subselect 中的 ORDER BY DB2 现在支持在 subselect 和 fullselect 中使用 ORDER BY。 43.13.1 fullselect 以下是已修改的 fullselect 的部分语法图,它显示了 order-by-clause 的位置。 >>-+-subselect---------+----------------------------------------> +-(fullselect)------+ '-| values-clause |-' .----------------------------------------------. V | >----+------------------------------------------+-+-------------> '-+-UNION---------+--+-subselect---------+-' +-UNION ALL-----+ +-(fullselect)------+ +-EXCEPT--------+ '-| values-clause |-' +-EXCEPT ALL----+ +-INTERSECT-----+ '-INTERSECT ALL-' >--+-----------------+----------------------------------------->< '-order-by-clause-' 包含 ORDER BY 子句的 fullselect 不能以下对象中指定: 摘要表 视图的最外部 fullselect(SQLSTATE 428FJ SQLCODE -20211) fullselect 中的 ORDER BY 子句不会影响查询返回的行的次序。如果在最外部 fullselect 中指定 ORDER BY 子句,它只会影响返回的行的次序。 43.13.2 subselect 以下是已修改的 subselect 的完整语法图,它显示了 order-by-clause 的位置。 >>-select-clause--from-clause--+--------------+-----------------> '-where-clause-' >--+-----------------+--+---------------+-----------------------> '-group-by-clause-' '-having-clause-' >--+-----------------+----------------------------------------->< '-order-by-clause-' subselect 的子句是按以下顺序处理的: FROM 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 SELECT 子句 ORDER BY 子句 不能在下列对象中指定包含 ORDER BY 的 subselect: 在视图的最外部 fullselect 中 在摘要表中 除非将 subselect 用括号括起来 例如,以下语句无效(SQLSTATE 428FJ SQLCODE -20211): SELECT * FROM T1 ORDER BY C1 UNION SELECT * FROM T2 ORDER BY C1 以下示例有效: (SELECT * FROM T1 ORDER BY C1) UNION (SELECT * FROM T2 ORDER BY C1) subselect 中的 ORDER BY 子句不会影响查询返回的行的次序。如果在最外部 fullselect 中指定 ORDER BY 子句,它只会影响返回的行的次序。 43.13.3 order-by-clause 以下是已修改的 order-by-clause 的完整语法图。 .-,------------------------------. V .-ASC--. | >>-ORDER BY----+-sort-key--+------+---------+-+---------------->< | '-DESC-' | '-ORDER OF--table-designator-' sort-key |--+-simple-column-name--+--------------------------------------| +-simple-integer------+ '-sort-key-expression-' ORDER OF table-designator 指定在 table-designator 中使用的同一次序应应用于 subselect 的结果表。在指定此子句的 subselect 的 FROM 子句中,必须有与 table-designator 相匹配的表引用(SQLSTATE 42703)。与指定 table-designator 相对应的 subselect(或 fullselect)必须包括依赖于数据的 ORDER BY 子句(SQLSTATE 428FI SQLCODE -20210)。应用的次序就象是外部 subselect(或 fullselect)中包括的嵌套 subselect(或 fullselect)中的 ORDER BY 子句的列一样,而这些列是代替 ORDER OF 子句指定的。有关表标志符的更多信息,参见 SQL Reference 中的“Column Name Qualifiers to Avoid Ambiguity”。 注意,此表单在 fullselect 中是不允许的(不同于 fullselect 的退化表单)。例如,以下语句无效: (SELECT C1 FROM T1 ORDER BY C1) UNION SELECT C1 FROM T2 ORDER BY ORDER OF T1 以下示例有效: SELECT C1 FROM (SELECT C1 FROM T1 UNION SELECT C1 FROM T2 ORDER BY C1 ) AS UTABLE ORDER BY ORDER OF UTABLE 43.13.4 select-statement 以下是已修改的 select-statement 的完整语法图: >>-+-----------------------------------+--fullselect------------> | .-,-----------------------. | | V | | '-WITH----common-table-expression-+-' >--fetch-first-clause--*--+--------------------+----------------> +-read-only-clause---+ | (1) | '-update-clause------' >--*--+---------------------+--*--+--------------+------------->< '-optimize-for-clause-' '-WITH--+-RR-+-' +-RS-+ +-CS-+ '-UR-' 记录: 如果 fullselect 包含 order-by-clause,则不能指定 update-clause. SELECT INTO 语句 语法 .-,-------------. V | >>-select-clause--INTO----host-variable-+--from-clause----------> >--+--------------+--+-----------------+--+---------------+-----> '-where-clause-' '-group-by-clause-' '-having-clause-' >--+-----------------+--+--------------+----------------------->< '-order-by-clause-' '-WITH--+-RR-+-' +-RS-+ +-CS-+ '-UR-' 43.13.5 OLAP 函数(window-order-clause) 以下是 OLAP 函数的部分语法图,显示已修改的 window-order-clause。 window-order-clause .-,--------------------------------------------. V .-| asc option |--. | |--ORDER BY----+-sort-key-expression--+-----------------+-+-+---| | '-| desc option |-' | '-ORDER OF--table-designator---------------' asc option .-NULLS LAST--. |--ASC--+-------------+-----------------------------------------| '-NULLS FIRST-' desc option .-NULLS FIRST-. |--DESC--+-------------+----------------------------------------| '-NULLS LAST--' ORDER BY (sort-key-expression,...) 定义分区内行的次序,该次序确定 OLAP 函数的值或 window-aggregation-group-clause 中的 ROW 值的意义(它不会定义查询结果集的次序)。 sort-key-expression 定义窗口分区内行的次序时使用的表达式。sort-key-expression 中引用的每个列名都必须是毫无歧义地引用 subselect 的结果集中的一列,包括 OLAP 函数(SQLSTATE 42702 或 42703)。每个 sort-key-expression 的长度一定不能超过 255 字节(SQLSTATE 42907)。sort-key-expression 不能包括标量 fullselect(SQLSTATE 42822)或不确定的或具有外部操作的任何函数(SQLSTATE 42845)。此子句是 RANK 和 DENSE_RANK 函数(SQLSTATE 42601)所必需的。 ASC 按升序使用 sort-key-expression 的值。 DESC 按降序使用 sort-key-expression 的值。 NULLS FIRST 在排序次序中,窗口次序将空值放在所有非空值之前。 NULLS LAST 在排序次序中,窗口次序将空值放在所有非空值之后。 ORDER OF table-designator 指定在 table-designator 中使用的同一次序应应用于 subselect 的结果表。在指定此子句的 subselect 的 FROM 子句中,必须有与 table-designator 相匹配的表引用(SQLSTATE 42703)。与指定 table-designator 相对应的 subselect(fullselect)必须包括依赖于数据的 ORDER BY 子句(SQLSTATE 428FI SQLCODE -20210)。应用的次序就象是外部 subselect(或 fullselect)中包括的嵌套 subselect(或 fullselect)中的 ORDER BY 子句的列一样,而这些列是代替 ORDER OF 子句指定的。有关表标志符的更多信息,参见 SQL Reference 中的“Column Name Qualifiers to Avoid Ambiguity”。 GET_ROUTINE_SAR 过程的新输入自变量 此过程现在支持 hide_body_flag,类型为 INTEGER 的输入自变量指定在从目录中抽取例程文本时,是否应隐藏例程主体(使用下列其中一个值): 0 完整保留例程文本。这是缺省值。 1 在从目录中抽取例程文本时将例程主体替换为空主体。 >>-GET_ROUTINE_SAR----------------------------------------------> >--(--sarblob--,--type--,--routine_name_string--+-------------------+--)->< '-,--hide_body_flag-' SET INTEGRITY 语句所需的权限 在使用此语句来关闭完整性检查时,该语句的授权标识的特权必须包括至少下列其中一项: 对下列对象的 CONTROL 特权: 指定表,以及 该语句已对其关闭完整性检查的后代外键表,以及 该语句已对其关闭完整性检查的后代即时摘要表 SYSADM 或 DBADM 权限 LOAD 权限 附录 N 异常表 在表“Exception Table Message Column Structure”的第 2 行和第 6 行(这两行分别描述了用来指示所找到的第一个约束违例和下一个约束违例的字符)中缺少了对下列内容的引用: 'D' - Delete Cascade violation Unicode 更新 47.1 介绍 Unicode 标准是编写的字符和文本的通用字符编码方案。它非常精确地定义字符集,并为它定义少量的编码。它定义对多语言文本进行编码所采用的一致方式,这允许在国际间进行文本数据交换,同时也创建了软件全球化的基础。 Unicode 提供的两种编码方案是 UTF-16 和 UTF-8。 缺省编码方案是 UTF-16,它采用 16 位编码格式。UCS-2 是 UTF-16 的子集,它使用两个字节来表示一个字符。UCS-2 通常被认为是能够表示所有现有单字节和双字节代码页中的所有必需字符的通用代码页。UCS-2 在 IBM 公司被注册为代码页 1200。 另一 Unicode 编码格式是 UTF-8,它是面向字节的,并且已经被设计为更易于配合现有的基于 ASCII 的系统使用。UTF-8 使用变化的字节数(通常为 1-3,有时为 4)来存储每个字符。不可变的 ASCII 字符被作为单个字节存储下来。所有其它字符都是使用多字节来存储的。通常,UTF-8 数据可被未对多字节代码页指定的代码视作扩充 ASCII 数据。UTF-8 在 IBM 公司被注册为代码页 1208。 非常重要的一点是,当在本地代码页、UCS-2 和 UTF-8 之间转换数据时,应用程序应考虑这些数据的需求。例如,在 UCS-2 中,20 个字符刚好需要 40 个字节,而在 UTF-8 中,有时需要 20 到 60 个字节,这取决于原始代码页和所使用的字符。 47.1.1 DB2 Unicode 数据库和应用程序 通过指定代码集 UTF-8 创建的 DB2 通用数据库 Unix 版、Windows 版或 OS/2 版可以用来存储 UCS-2 和 UTF-8 格式的数据。这种数据库被称为 Unicode 数据库。SQL 字符数据是使用 UTF-8 编码的,而 SQL 图形数据是使用 UCS-2 编码的。这意味着 MBCS 字符(包括单字节和双字节字符)存储在字符列中,而 DBCS 字符存储在图形列中。 应用程序的代码页可能与 DB2 用来存储数据的代码页不匹配。在非 Unicode 数据库中,当代码页不相同时,数据库管理器会对在客户机和服务器之间传送的字符和图形(纯 DBCS)数据进行转换。在 Unicode 数据库中,客户机代码页与 UTF-8 之间的字符数据转换是由数据库管理器自动执行的,但是所有图形(UCS-2)数据在传送时在客户机和服务器之间没有执行任何转换。 图 1. 数据库管理器执行的代码页转换 记录: 当连接至 Unicode 数据库时,如果应用程序设置为 DB2CODEPAGE=1208,且本地代码页为 UTF-8,则不需要执行代码页转换。 当连接至 Unicode 数据库时,CLI 应用程序还可以将字符数据作为图形数据接收,及将图形数据作为字符数据接收。 应用程序可以指定 UTF-8 代码页,指示它将发送和接收采用 UCS-2 格式的所有图形数据以及采用 UTF-8 的字符数据。此应用程序代码页仅用于 Unicode 数据库时才是受支持的。 使用 Unicode 时应考虑的其它事项: 数据库代码页是在创建数据库时确定的,并且缺省情况下,它的值是根据操作系统语言环境(或代码页)来确定的。可以使用 CODESET 和 TERRITORY 关键字来显式创建 Unicode DB2 数据库。例如: CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US 应用程序代码页也被缺省为本地代码页,但是它可以被 UTF-8 以以下两种方式的其中一种进行覆盖: 用以下命令来将应用程序代码页设置为 UTF-8(1208): db2set DB2CODEPAGE=1208 对于 CLI/ODBC 应用程序,通过调用 SQLSetConnectAttr() 并将 SQL_ATTR_ANSI_APP 设置为 SQL_AA_FALSE 进行。缺省设置为 SQL_AA_TRUE。 GRAPHIC 列中的数据将对每个 Unicode 字符采用刚好两个字节,而 CHAR 列中的数据将对每个 Unicode 字符采用 1 到 3 个字节。在字符的 SQL 限制方面,GRAPHIC 列中的字符的 SQL 限制通常是 CHAR 列中的字符的 SQL 限制的一半,但是字节数方面是相等的。例如,CHAR 列的最大字符长度为 254,而图形列的最大字符长度为 127。有关更多信息,参见 SQL Reference 的“Functions”一章中的 MAX。 图形文字与带有 G 前缀的字符文字是不同的。例如: SELECT * FROM mytable WHERE mychar = 'utf-8 data' AND mygraphic = G'ucs-2 data' 注意: 对于 Unicode 数据库,G 前缀是可选的。 有关更多信息及更新支持,参见41.6.2.4, "Literals in Unicode Databases"。 对 CLI/ODBC 和 JDBC 应用程序的支持与对嵌入式应用程序的支持有所不同。参见"CLI 指南与参考" 以获取有关特定于 CLI/ODBC 支持的信息。 平台间的 UCS-2 数据的字节排序可能有所不同。在平台内部,DB2 使用大尾数法格式。 47.1.2 文档更新 这些《发行说明》包括对下列有关将 Unicode 与 DB2 版本 7.1 配合使用的信息的更新: SQL Reference: Chapter 3. Language Elements Chapter 4. Functions Chapter 6. SQL Statements CLI Guide and Reference: Chapter 3. Using Advanced Features Appendix C. DB2 CLI and ODBC “Data Movement Utilities Guide and Reference”的“Appendix C. Export/Import/Load Utility File Formats” 有关将 Unicode 与 DB2 配合使用的更多信息,参考《管理指南》的『本地语言支持(NLS)』附录:『DB2 UDB 中的 Unicode 支持』。 连接至主机系统 部分目录 《DB2 Connect 用户指南》 48.1 提高 DB2 Connect 数据传送速率 48.1.1 额外查询块 48.1.2 RFC-1323 窗口缩放 48.2 松散耦合的事务的 DB2 Connect 支持 48.3 Kerberos 支持 Connectivity Supplement 49.1 在 VM 环境中设置应用程序服务器 49.2 CLI/ODBC/JDBC 配置 PATCH1 和 PATCH2 设置 《DB2 Connect 用户指南》 48.1 提高 DB2 Connect 数据传送速率 虽然查询结果集的行的分块没有任何新内容,但是,“DB2 z/OS 版”(以前称为“DB2 OS/390 版”)自从版本 6.1 发行版以来就能够返回多个查询块来作为对远程客户机(例如,DB2 Connect)的 OPEN 或 FETCH 请求的响应。客户机现在可以选择请求服务器发送回附加数量的查询块,而不用反复向“DB2 z/OS 版”服务器发送请求,一次请求一块行数据。这样的附加请求块称为额外查询块。 此新功能部件允许客户机将网络线路交接数减至最少,这对网络性能有很大的影响。减少客户机发送至服务器的对查询块的请求数目将显著地提高性能,因为发送和接收之间的交换对于性能而言是一种代价很高的操作。缺省情况下,DB2 Connect 现在可以通过向“DB2 z/OS 版”服务器请求额外查询块来利用此性能增强功能。 为了让首选网络协议 TCP/IP 充分利用返回的额外查询块(每个查询块可以长达 32K),还启用了“窗口缩放”扩展功能,它是在 DB2 Connect 中的 RFC-1323 下面构造的。此功能部件允许 TCP/IP 动态地并且有效地调整发送和接收窗口大小,以容纳通过额外查询块返回的潜在的大量数据。 48.1.1 额外查询块 版本 6.1 或更新版本的“DB2 z/OS 版”服务器中的额外查询块支持是通过 DB2 DDF 安装面板上的 EXTRA BLOCKS SRV 参数来配置的。此参数控制 DB2 可以对请求发送回客户机的最大额外查询块数目,可以将此参数设置为 0 和 100 之间的值。将该参数值设置为 0 将禁止返回额外查询块。应该使用缺省值 100 以最好地利用此功能部件,防止网络中将使此设置小于理想值的任何特殊情况。 在客户机端,应用程序直接通过并驻的 DB2 Connect 安装或通过单独的 DB2 Connect 服务器安装来存取“DB2 z/OS 版”,通过使用下列各项,就可以每个游标或语句为基础利用各种方法来激活相应的 DB2 Connect 支持: 游标的查询行集大小 在与游标相关联的选择语句上的 'OPTIMIZE for N ROWS' 子句 在与游标相关联的选择语句上的 'FETCH FIRST N ROWS ONLY' 子句。 本节中未包含选项 1,因为已经将它作为“DB2 Connect 版本 7.1 修订包 2”中的“DB2 z/OS 版的可卷动支持”一部分实现。我们的重点是使用选项 2 和选项 3,而不是启用使用不同 SQL API 的额外查询块支持,如下所示: 嵌入式 SQL 通过在选择语句本身上指定 'OPTIMIZE for N ROWS' 子句和/或 'FETCH FIRST N ROWS ONLY' 子句来调用查询的额外查询块支持。 借助 'OPTIMIZE for N ROWS' 子句,“DB2 z/OS 版”试图将期望数目的行分块以返回至 DB2 Connect,这取决于 EXTRA BLOCKS SRV DDF 安装参数设置。应用程序可以选择取装超过 N 行,因为“DB2 z/OS 版”未将可对查询结果集最大限度返回的总行数限制为 N。 'FETCH FIRST N ROWS ONLY' 子句的作用与此类似,但“DB2 z/OS 版”将查询结果集限制为 N 行。取装 N 行以上将导致 SQL 代码加上 100(数据结尾)。 CLI/ODBC 通过 SQL_MAX_ROWS 语句属性来对查询调用额外查询块支持。 DB2 Connect 将会在“DB2 z/OS 版 6.x”服务器的 'OPTIMIZE for N ROWS' 子句上作标记。尽管“DB2 z/OS 版”未将可对查询结果集最大限度返回的行数限制为 N,但是,如果试图取装超过 N 行,则 CLI/ODBC 会将 SQL_NO_DATA_FOUND 返回至应用程序。 转而对“DB2 z/OS 版 7.1”或更新版本的服务器使用 'FETCH FIRST N ROWS ONLY' 子句。与嵌入式 SQL 的情况类似,“DB2 z/OS 版”将查询结果集限制为 N 行。取装 N 行以上将导致 SQL_NO_DATA_FOUND。 JDBC 通过 setMaxRows 方法来对查询调用额外查询块支持。与 CLI/ODBC 启用类似,对于“DB2 z/OS 版”服务器版本 6.x,DB2 Connect 将在 'OPTIMIZE for N ROWS' 子句上作标记,而对于“DB2 z/OS 版”服务器版本 7.1 或更新版本,则会在 'FETCH FIRST N ROWS ONLY' 子句上作标记。 48.1.2 RFC-1323 窗口缩放 在支持 TCP/IP 的 RFC-1323 扩展的所有 Windows 和 UNIX 平台上,从“修订包 4”开始就支持“窗口缩放”。可以通过 DB2 注册表变量 DB2SORCVBUF 在“DB2 Windows 版”和“DB2 UNIX 版”上启用此功能部件。要启用“窗口缩放”,将 DB2 注册表变量 DB2SORCVBUF 设置为大于 64K 的任何值(例如,在“DB2 Windows 版”或“DB2 UNIX 版”上,可发出 db2set DB2SORCVBUF =65537)。最大发送和接收缓冲区大小取决于特定的操作系统。为确保已接受所配置的缓冲区大小,用户可以将数据库管理器配置参数 DIAGLEVEL 设置为 4(供参考)并检查 db2diag.log 文件以获取消息。 要使“窗口缩放”生效,必须在连接的两端都启用它。例如,要在 DB2 Connect 工作站与主机之间启用“窗口缩放”,则此功能部件在工作站和主机上都必须是活动的,可直接通过操作系统 TCP/IP 堆栈或间接地通过 DB2 产品来激活它。例如,对于“DB2 z/OS 版”,目前只能将 TCPRCVBUFRSIZE 设置为任何大于 64K 的值通过操作系统激活“窗口缩放”。 如果使用远程 DB2 客户机以通过 DB2 Connect 服务器工作站访问主机 DB2,则还可以在客户机上启用“窗口缩放”。通过使用同一令牌,在不涉及主机 DB2 的情况下,还可以在远程 DB2 客户机和工作站 DB2 服务器之间启用“窗口缩放”。 虽然“窗口缩放”可用来提高网络性能,但是,并不是一直都能实现期望的网络性能改进。在各种因素(例如,用于以太网或令牌环 LAN 适配器的帧大小、IP MTU 大小以及路由器吞吐量中的其它设置)的交互作用下,通信链路甚至可能会导致在启用“窗口缩放”时使性能降低。缺省情况下,禁用“窗口缩放”,并将发送和接收缓冲区设置为 64K。用户应当估计打开“窗口缩放”所产生的影响,并对网络执行所有必需的调整。有关调整网络以改进网络性能的介绍,参考 http://www.networking.ibm.com/per/per10.html 处的白皮书。 48.2 松散耦合的事务的 DB2 Connect 支持 松散耦合事务的 DB2 Connect 中的支持打算供这样的用户使用:需要实现存取“DB2 OS/390 版”版本 6 或更新版本的 XA 分布式应用程序的用户。此支持允许同一全局事务的不同分支共享 “DB2 OS/390 版”的锁定空间。此功能部件减少了分布式事务的一个分支因同一全局事务中的另一个分支而遇到锁定超时或死锁的窗口。 “DB2 OS/390 版的版本 6”共享锁定空间,在此情况下,假定 DB2 Connect 在每个连接上发送 XID 来为同一全局事务的不同分支服务。 48.3 Kerberos 支持 “DB2 通用数据库”当前支持使用 Kerberos 安全协议来认证非 DRDA 环境中的用户。由于 DB2/390 V7.1 将开始支持 Kerberos 安全性,因此,DB2 Connect 将添加 DRDA AR 功能,以允许使用 Kerberos 认证来连接至 DB2/390。 “Win2K 活动目录”机制中已集成了 Kerberos 认证层(它处理凭单系统)。应用程序的客户机端和服务器端分别与 Kerberos SSP(安全支持供应商)客户机和服务器模块通信。“安全支持供应商接口”(SSPI)提供与 Kerberos SSP 和其它安全协议的高级接口 通信协议支持 对于 SNA 连接,在编目 APPC 节点时必须使用 SECURITY=NONE 典型设置 配置 DB2 以使用 Kerberos 认证这一过程涉及到设置下列事项: 在“活动目录”中设置用于 DB2 的授权策略(作为一项服务),它在网络上是共享的,并且 建立“Kerberos 密钥分发中心”(KDC)之间的信赖关系 在最简单的方案中,至少要配置一种 KDC 信赖关系,即,控制客户机工作站和 OS/390 系统的 KDC 之间的信赖关系。OS/390 R10 通过它的 RACF 设施(它允许主机充当 UNIX KDC)来提供 Kerberos 凭单处理。 DB2 Connect 仍然在 3 层设置中提供路由器功能。当使用 Kerberos 安全性时,它在认证中不假定任何角色。然而,它只是将客户机的安全性令牌传送给 DB2/390。因此,不需要使 DB2 Connect 网关作为客户机或主机的 Kerberos 域的成员。 要使用 Kerberos,DB2 Connect 网关必须利用认证类型 KERBEROS 来为它的连接编目。客户机可以使用认证 NOT_SPEC 或 Kerberos 来编目。客户机和网关上的认证类型的其它任何组合都将导致 sqlcode -1401(认证类型不匹配)。 低级兼容 Kerberos 支持的 DB2 需求: DB2 UDB 客户机: 版本 7.1(OS:Win2K) DB2 Connect: 版本 7.1 + 修订包 1(OS:任何) DB2/390: 版本 7.1 DB2/390 还具有要在 OS/390 版本 2 发行版 10 或更新版本上运行的需求。当从 DB2 Connect 版本 7.1 客户机进行连接时,在低级 DB2/390 系统上还具有附加的隐含需求。尽管这些 DB2/390 系统不支持 Kerberos,但是,它们不会正确响应不受支持的 DRDA SECMEC。要解决此问题,应用正确的 PTF: UQ41941(对于 DB2/390 V5.1) UQ41942(对于 DB2/390 V6.1) Connectivity Supplement 49.1 在 VM 环境中设置应用程序服务器 在“Provide Network Information”一节的“Defining the Application Server”小节中,在第一个(且是唯一的)句子后面添加以下句子: The RDB_NAME is provided on the SQLSTART EXEC as the DBNAME parameter. 49.2 CLI/ODBC/JDBC 配置 PATCH1 和 PATCH2 设置 CLI/ODBC/JDBC 驱动程序可通过“客户机配置辅助程序”或“ODBC 驱动程序管理器”来进行配置(如果它安装在系统上的话),或者通过手工编辑 db2cli.ini 文件来进行配置。有关更多信息,参见《安装和配置补遗》或 CLI Guide and Reference。 可通过 db2cli.ini 文件,或通过 SQLDriverConnect() 或 SQLBrowseConnect() CLI API,为 PATCH1 和 PATCH2 关键字指定值,来修改 DB2 CLI/ODBC 驱动程序的缺省行为。 将用户要设置的所有关键字加在一起来指定 PATCH1 关键字。例如,如果指定了补丁程序 1、2 和 8,则 PATCH1 将具有值 11。以下是每个关键字值以及它对驱动程序的影响的描述: 1 这会使驱动程序搜索“count(exp)”,并将其替换为“count(distinct exp)”。这是必需的,因为 DB2 的某些版本支持“count(exp)”语法,而该语法是由某些 ODBC 应用程序生成的。这是服务器不支持“count(exp)”语法时 Microsoft 应用程序所需的。 2 SQLGetTypeInfo() 函数中对 LITERAL_PREFIX 或 LITERAL_SUFFIX 列返回 SQL_NULL_DATA 时,某些 ODBC 应用程序被捕获。这会强制驱动程序反而返回空的字符串。这是 Impromptu 2.0 所需的。 4 如果时间戳记的时间和分数部分被设置为零的话,这会强制驱动程序将输入时间戳记数据视作日期数据,这是 Microsoft Access 所需的。 8 这会强制驱动程序将输入时间戳记数据视作时间数据(如果时间戳记的日期部分为 1899-12-30 的话)。这是 Microsoft Access 所需要的。 16 未使用。 32 这会强制驱动程序不返回有关 SQL_LONGVARCHAR、SQL_LONGVARBINARY 和 SQL_LONGVARGRAPHIC 列的信息。对于应用程序,它表现得好象不支持长字段一样。这是 Lotus 123 所需的。 64 这会强制驱动程序使终止图形输出字符串为 NULL。这是双字节环境中的 Microsoft Access 所需要的。 128 这会强制驱动程序让查询“SELECT Config, nValue FROM MSysConf”转至服务器。驱动程序当前返回一个错误,相关联的 SQLSTATE 值为 S0002(找不到表)。如果用户已经在数据库中创建了此配置表,且想要应用程序存取它,则这是必需的。 256 这会强制驱动程序在 SQLStatistics() 调用中首先返回主键列,驱动程序当前返回了根据索引名排序的索引,这就是标准的 ODBC 行为。 512 这会强制驱动程序在 SQLGetFunctions() 中对 SQL_API_SQLTABLEPRIVILEGES 和 SQL_API_SQLCOLUMNPRIVILEGES 返回 FALSE。 1024 这会强制驱动程序在 SQLExecute() 或 SQLExecDirect() 中返回 SQL_SUCCESS 而不是 SQL_NO_DATA_FOUND,如果执行的 UPDATE 或 DELETE 语句未影响任何行的话。这是 Visual Basic 应用程序所需的。 2048 未使用。 4096 这会强制驱动程序在处于自动落实方式时关闭游标之后不发出 COMMIT。 8192 这会强制驱动程序在调用存储过程后返回额外的结果集。此结果集是组成该存储过程的输出值的一行结果集。可通过 Powerbuild 应用程序进行存取。 32768 这会强制驱动程序使 Microsoft Query 应用程序使用 DB2 MVS 同义词。 65536 这会强制驱动程序在实际上是图形文字的字符文字前手工插入“G”。在双字节环境中工作时,总是会提供此补丁程序。 131072 这会强制驱动程序在时间戳记列作为唯一索引的一部分时,将该列反而描述为 CHAR(26) 列。这是 Microsoft 应用程序所需的。 262144 这会强制驱动程序使用伪目录表 db2cli.procedures 而不使用 SYSCAT.PROCEDURES 和 SYSCAT.PROCPARMS 表。 524288 这会强制驱动程序在对 DB2/400 V3.x 系统执行系统表查询时使用 SYSTEM_TABLE_SCHEMA 而不是 TABLE_SCHEMA。这会提高性能。 1048576 这会强制驱动程序将 SQLPutData() 中的零长度字符串看作 SQL_NULL_DATA。 PATCH2 关键字与 PATCH1 关键字不同。对于 PATCH2,是使用逗号分隔符来指定多个补丁程序。例如,如果指定了补丁程序 1、4 和 5,则 PATCH2 将具有值“1,4,5”。以下是每个关键字值以及它对驱动程序的影响的描述: 1 — 这会强制驱动程序将 CALL 语句中的存储过程名转换为大写。 2 — 未使用。 3 — 它强制驱动程序把模式调用的所有自变量都转换为大写。 4 — 这会强制驱动程序对模式调用(即 SQLColumns()、SQLProcedureColumns() 等等)返回类似版本 2.1.2 的结果集,而不是类似版本 5 的结果集。 5 — 这会强制驱动程序不对输入 VARCHAR 列的处理进行优化,其中指向数据的指针和指向长度的指针在内存中是连续的。 6 — 这会强制驱动程序返回消息“可滚动游标不受支持”。如果 DB2 客户机为 版本 5 且服务器为“DB2 UDB 版本 5”的话,这是 Visual Basic 程序所需的。 7 — 这会强制驱动程序将所有 GRAPHIC 列数据类型映射至 CHAR 列数据类型。这是双字节环境所需要的。 8 — 它强制驱动程序忽略模式调用中的目录搜索自变量。 9 — 不要落实游标的“提前关闭” 10 — 未使用 11 — 报告支持目录名,(VB 存储过程) 12 — 从模式调用自变量中除去双引号,(Visual Interdev) 13 — 不要将 db2cli.ini 中的关键字追加到输出连接字符串 14 — 忽略 SQLProcedures() 和 SQLProcedureColumns() 中的模式名 15 — 在字符输出中始终使用句点作为小数分隔符 16 — 对于每次打开,强制返回描述信息 17 — 不要在描述信息中返回列名 18 — 试图用参数标记替换文字 19 — 目前 DB2 MVS V4.1 不支持 ODBC 语法,该语法允许 ON 子句和 Outer 连接子句 中出现括号。打开此 PATCH2 将导致 IBM DB2 ODBC 驱动程序在 outer 连接子句 处于 OCBC 转义序列中时去掉括号。仅当对 DB2 MVS 4.1 运行时,才应使用此 PATCH2。 20 — 目前,MVS 上的 DB2 不支持将两个操作数作为参数标记的 BETWEEN 谓词(表达式为 ? BETWEEN ?)。打开此补丁程序将导致“IBM ODBC 驱动程序”将该谓词重写为 (表达式 >= ? 和表达式 <= ?)。 21 — 只将存储过程的所有 OUTPUT 参数设置为 SQL_NULL_DATA 22 — 此 PATCH2 会导致 IBM ODBC 驱动程序将 OUTER 连接报告为不受支持。这是针对 在使用 outer 连接语句时生成 SELECT DISTINCT col1 或 ORDER BY col1(其中 col1 的长度大于 254 个字符)的应用程序而言的,并会导致 DB2 UDB 返回错误 (因为 DB2 UDB 不支持使用长度超过 254 个字节的列) 23 — 不要优化与 cbColDef=0 绑定的参数输入 24 — 将“时间”值映射为“字符”的存取解决方法 25 — 小数列的存取解决方法 — 除去 char 表示法中的结尾零 26 — 不要将 sqlcode 464 返回至应用程序 — 指示返回了结果集 27 — 强制 SQLTables 使用 TABLETYPE 关键字值,即使应用程序指定了有效值 28 — 将实型列描述为双精度型列 29 — 小数列的 ADO 解决方法 — 除去值 x 的前导零 其中 1 > x > -1(仅某些 MDAC 版本需要) 30 — 禁用“存储过程”高速缓存优化 31 — 报告关于 SQLStatistics 调用上的别名的统计信息 32 — 覆盖 sqlcode -727 原因码 4 处理 33 — 在转换为 char 时返回 ISO 版本的时间戳记(与 ODBC 版本相对照) 34 — 将 CHAR FOR BIT DATA 列报告为 CHAR 35 — 在请求 SQL_DESC_BASE_TABLE_NAME 时报告无效的 TABLENAME - ADO 只读优化 36 — 保留 37 — 保留 附加信息 部分目录 附加信息 50.1 DB2 Everywhere 现在更名为 DB2 Everyplace 50.2 DB2 UDB 版本 7 的易使用性功能部件 50.2.1 键盘输入和导航 50.2.1.1 键盘输入 50.2.1.2 键盘焦点 50.2.2 易用的显示功能部件 50.2.2.1 高对比度方式 50.2.2.2 字体设置 50.2.2.3 与颜色无关 50.2.3 可选警报提示 50.2.4 与辅助性技术的兼容性 50.2.5 可存取文档 50.3 需要鼠标 50.4 试图从“DB2 运行时客户机”进行绑定导致“绑定文件找不到”错误 50.5 Search Discovery 50.6 HP-UX 11 的内存窗口 50.7 卸载 DB2 DFS 客户机使能器 50.8 Windows NT 上的客户机认证 50.9 联合系统限制 50.10 对 MPP 分区表的联合限制 50.11 DataJoiner 的限制 50.12 希伯莱语版的“信息目录管理器 Windows NT 版” 50.13 DB2 的 SNA SPM 在引导 Windows 后无法启动 50.14 Windows NT 和 Windows 2000 上的 DB2 的服务帐户需求 50.15 需要落实将在“数据仓库中心”(DWC)中使用的所有用户定义程序 50.16 在 Windows NT 上进行客户机端高速缓存 50.17 Life Sciences Data Connect 50.17.1 新包装器 50.17.2 声明 — 50.18 SQL 辅助程序的增强功能 50.19 备份与复原命令的帮助 50.20 “仓库管理器”应为“DB2 仓库管理器” 附加信息 50.1 DB2 Everywhere 现在更名为 DB2 Everyplace DB2 Everywhere 的名称已经更改为 DB2 Everyplace。 50.2 DB2 UDB 版本 7 的易使用性功能部件 DB2 UDB 产品系列中包括一些功能部件,它们可使残障人士更易使用这些产品。这些功能部件包括: 使键盘输入和导航更加容易的功能部件 增强显示特性的功能部件 声音和可视警报提示的选项 与辅助性技术的兼容性 与操作系统的易使用性功能部件的兼容性 易使用的文档格式 50.2.1 键盘输入和导航 50.2.1.1 键盘输入 只使用键盘即可操作“DB2 控制中心”。菜单项和控件提供了一些存取键,使用户可以激活控件或直接从键盘选择菜单项。这些键都是自带说明的,在它们所出现的控件或菜单上,这些存取键都标有下划线。 50.2.1.2 键盘焦点 在基于 UNIX 的系统上,键盘焦点的位置是突出显示的,指示窗口的哪个区域是活动的,以及用户在何处击键才会有效。 50.2.2 易用的显示功能部件 “DB2 控制中心”中有一些功能部件增强了用户界面的功能,并改进了易用性以供视力较弱的用户使用。这些易用性的增强包括了对高对比度的设置以及可定制字体特性的支持。 50.2.2.1 高对比度方式 “控制中心”界面支持由操作系统提供的高对比度方式选项。此功能部件对需要背景色与前景色反差度较高的用户提供了帮助。 50.2.2.2 字体设置 “控制中心”界面允许用户选择菜单和对话窗口中文本的颜色、大小和字体。 50.2.2.3 与颜色无关 用户不需要辨别颜色就可使用此产品的所有功能。 50.2.3 可选警报提示 用户可选择是通过声音提示还是可视提示来接收警报。 50.2.4 与辅助性技术的兼容性 “DB2 控制中心”界面与诸如 Via Voice 之类的屏幕阅读应用程序兼容。处于应用程序方式时,“控制中心”界面具有这些易用的应用程序所必需的特性,使盲人用户可得到屏幕上的信息。 50.2.5 可存取文档 DB2 产品系列的文档是以 HTML 格式提供的。因此允许用户根据他们浏览器中的显示首选项设置来查看文档。它还允许使用屏幕阅读器和其它辅助性技术。 50.3 需要鼠标 对于除 Windows 之外的所有平台,都需要鼠标才能使用这些工具。 50.4 试图从“DB2 运行时客户机”进行绑定导致“绑定文件找不到”错误 由于“DB2 运行时客户机”不具有完整的绑定文件集,所以不能从“DB2 运行时客户机”完成 GUI 工具的绑定,该绑定仅可从“DB2 管理客户机”完成。 50.5 Search Discovery Search discovery 仅在广播媒体上受支持。例如,search discovery 将不能通过 ATM 适配器进行工作。但是,此限制不适用于 known discovery。 50.6 HP-UX 11 的内存窗口 内存窗口是供大型 HP 64 位机器上的用户使用的,这些用户希望利用超过 1.75 GB 的共享内存来运行 32 位应用程序。如果您正在运行 64 位版本的 DB2,则不需要内存窗口。内存窗口使得每个进程或进程组都有单独的 1 GB 共享内存可用。这允许一个实例拥有它自己的 1 GB 共享内存,以及 0.75 GB 全局共享内存。如果用户希望利用这一点,他们可运行多个实例,每个实例在各自的窗口中运行。以下是使用内存窗口的先决条件: DB2 EE 环境 补丁程序:扩充软件 12/98 和 PHKL_17795。 必须为实例设置 $DB2INSTANCE 变量。 对于想要在内存窗口下运行的每个 DB2 实例,在 /etc/services.window 文件中都必须有相应的条目。例如: db2instance1 50 db2instance2 60 注意:在名称和标识之间只能有一个空格。 您希望在服务器上运行的以及需要多条语句的任何 DB2 命令都必须使用 TCP/IP 回送方法运行。这是因为当内存窗口处理完第一条语句时外壳程序将终止。“DB2 服务”知道如何完成此操作。 想要对正运行于内存窗口中的实例运行的任何 DB2 命令都必须以 db2win(位于 sqllib/bin 中)开头。例如: db2win db2start db2win db2stop 在内存窗口外部运行的所有 DB2 命令(内存窗口正在运行时在外部运行的命令除外)都应返回 1042。例如: db2win db2start <== OK db2 connect to db <==SQL1042 db2stop <==SQL1042 db2win db2stop <== OK DB2 EEE 环境 补丁程序:扩充软件 12/98 和 PHKL_17795。 必须为实例设置 $DB2INSTANCE 变量。 DB2_ENABLE_MEM_WINDOWS 注册表变量必须设置为 TRUE。 对于想要在内存窗口下运行的每个实例的每一逻辑节点,在 /etc/services.window 文件中都必须有相应的条目。每个条目的首个字段都应该是与端口号并置的实例名。例如: === $HOME/sqllib/db2nodes.cfg for db2instance1 === 5 host1 0 7 host1 1 9 host2 0 === $HOME/sqllib/db2nodes.cfg for db2instance2 === 1 host1 0 2 host2 0 3 host2 1 === /etc/services.window on host1 === db2instance10 50 db2instance11 55 db2instance20 60 === /etc/services.window on host2 === db2instance10 30 db2instance20 32 db2instance21 34 不可让所有的 DB2 命令都以 db2win 开头,db2win 仅在 EE 环境中使用。 50.7 卸载 DB2 DFS 客户机使能器 在卸载“DB2 DFS 客户机使能器”之前,Root 用户应确保无任何 DFS 文件处于使用状态,且在 DFS 文件空间中,没有任何用户的外壳程序处于打开状态。作为 root 用户,发出以下命令: stop.dfs dfs_cl 检查是否未再安装 /...: mount | grep -i dfs 如果未进行此操作,而卸载了“DB2 DFS 客户机使能器”,则机器将需要重新引导。 50.8 Windows NT 上的客户机认证 引入一个新的 DB2 注册表变量 DB2DOMAINLIST 来完善 Windows NT 环境中的现有客户机认证机制。在 DB2 Windows NT 版服务器上使用此变量来定义一个或多个 Windows NT 域。只有来自属于此列表中所定义域的用户的连接请求才会被接受。 此注册表变量应仅在纯 Windows NT 域环境下使用,而 DB2 服务器和客户机在版本 7(或更高版本)中运行。 有关设置此注册表变量的信息,参考《管理指南:性能》中的『DB2 注册表和环境变量』一节。 50.9 联合系统限制 以下是适用于联合系统的一些限制: 在涉及别名的查询中,Oracle 数据类型 NCHAR、NVARCHAR2、NCLOB 和 BFILE 不受支持。 “创建服务器选项”、“改变服务器选项”、和“删除服务器选项”命令从“控制中心”不受支持。要使用这些命令中的任何命令,必须使用命令行处理器(CLP)。 对于涉及别名的查询,DB2 UDB 不总是遵守 DFT_SQLMATHWARN 数据库配置选项。相反地,DB2 UDB 会直接从远程数据资源返回算术错误或警告,而不管 DFT_SQLMATHWARN 设置如何。 CREATE SERVER 语句不允许 COLSEQ 服务器选项设置为 'I',表示数据源带有不区分大小写的整理顺序。 指定了无效的选项时,ALTER NICKNAME 语句会返回 SQL0901N。 对于 Oracle、Microsoft SQL Server 和 Sybase 数据源,数字数据类型不能映射为 DB2 的 BIGINT 数据库类型。缺省情况下,Oracle 的数字(p,s)数据类型(其中 10 <= p <= 18、s = 0)映射为 DB2 的 DECIMAL 数据类型。 50.10 对 MPP 分区表的联合限制 如果试图使用一个 SQL 语句来从数据源中选择数据,并直接在 DB2 联合服务器上的 MPP 分区表中插入、更新或删除数据时,将接收到 SQL0901N 错误。联合功能不允许从别名中进行选择并将其插入到 MPP 分区表中。 一旦应用了“修订包 4”(或更高版本),就可以使用下列步骤来选择数据并将数据插入到 MPP 分区表中: 在客户应用程序环境中,导出 DB2NODE 环境变量以指定应用程序应始终连接至的节点。 EXPORT DB2NODE=x 其中,x 是节点号。 创建只包含指定节点的节点组。 CREATE NODEGROUP nodegroup_name ON NODE(x) 其中,x 是节点号。 在节点组中创建表空间。 CREATE TABLESPACE tablespace_name IN NODEGROUP nodegroup_name 在表空间中创建临时表。 CREATE TABLE temp_table_name IN tablespace_name 将应用程序中的 INSERT 操作分为两个步骤: INSERT INTO temp_table_name SELECT * FROM nickname INSERT INTO MPP_partitioned_table SELECT * from temp_table_name 将 INSERT 语句分为两个语句将更改语句级别落实和回滚语义。例如,您现在将回滚两个语句,而不是回滚一个语句。另外,如果更改与 DB2NODE 环境变量相关联的节点号,则必须使应用程序程序包无效,然后再重新绑定。 这些步骤允许您从数据源中选择数据,并将数据插入到 MPP 分区表中。如果试图使用一个语句从数据源中选择数据并更新或删除 MPP 分区表中的数据,将仍然接收到 SQL0901N 错误。将在“DB2 通用数据库版本 8”中消除此限制。 50.11 DataJoiner 的限制 在联合环境中发出的分布式请求只限于只读操作。 50.12 希伯莱语版的“信息目录管理器 Windows NT 版” “信息目录管理器”组件具有希伯莱语版,它是在“DB2 仓库管理器 Windows NT 版”CD 上提供的。 希伯莱语翻译版本是在一个称为 IL_ICM.ZIP,且位于“DB2 仓库管理器 Windows NT 版”CD 上 DB2\IL 目录中的 zip 文件中提供的。 要安装“信息目录管理器”的希伯莱语翻译版本,首先在支持希伯莱语的 Windows NT 版本上安装“DB2 仓库管理器 Windows NT 版”的英语版和所有先决条件。 在安装了“DB2 仓库管理器 Windows NT 版”之后,从 DB2\IL 将 IL_ICM.ZIP 文件解压缩到在其中安装了“DB2 仓库管理器 Windows NT 版”的目录中。确保为解压缩程序提供了正确的选项,以在 zip 文件中创建目录结构。 在解压文件之后,全局环境变量 LC_ALL 必须从 En_US 更改为 Iw_IL。要更改设置: 打开 Windows NT“控制面板”并双击系统图标。 在系统特性窗口中,单击环境选项卡,然后在系统变量部分中定位 LC_ALL。 单击该变量以在值编辑框中显示该值。将值从 En_US 更改为 Iw_IL。 单击设置按钮。 关闭系统特性窗口和控制面板。 现在应已安装好了“信息目录管理器”的希伯莱语版本。 50.13 DB2 的 SNA SPM 在引导 Windows 后无法启动 如果您使用的是 Microsoft SNA Server 版本 4 SP3 或更高版本,请验证 DB2 的 SNA SPM 在重新引导后启动正常。检查 \sqllib\\db2diag.log 文件中与以下内容类似的条目: 2000-04-20-13.18.19.958000 Instance:DB2 Node:000 PID:291(db2syscs.exe) TID:316 Appid:none common_communication sqlccspmconnmgr_APPC_init Probe:19 SPM0453C Sync point manager did not start because Microsoft SNA Server has not been started. 2000-04-20-13.18.23.033000 Instance:DB2 Node:000 PID:291(db2syscs.exe) TID:302 Appid:none common_communication sqlccsna_start_listen Probe:14 DIA3001E "SNA SPM" protocol support was not successfully started. 2000-04-20-13.18.23.603000 Instance:DB2 Node:000 PID:291(db2syscs.exe) TID:316 Appid:none common_communication sqlccspmconnmgr_listener Probe:6 DIA3103E Error encountered in APPC protocol support. APPC verb "APPC(DISPLAY 1 BYTE)". Primary rc was "F004". Secondary rc was "00000000". 如果 db2diag.log 中有这样的条目,且时间戳记与最新的重新引导时间相匹配,必须: 调用 db2stop。 启动 SnaServer 服务(如果尚未启动的话)。 调用 db2start。 再次检查 db2diag.log 文件,验证是否已不再追加该条目。 50.14 Windows NT 和 Windows 2000 上的 DB2 的服务帐户需求 在 DB2 Windows NT 版或 Windows 2000 版的安装期间,安装程序会创建几个 Windows 服务,并为每个服务指定一个服务帐户。要正常运行 DB2,安装程序应将下列用户权利授予与该 DB2 服务相关联的服务帐户: 充当操作系统的一部分 创建标记对象 增加份额 作为服务登录 替换进程级别令牌。 如果想要对 DB2 服务使用另一服务帐户,必须将这些用户权利授予该服务帐户。 除这些用户权利之外,服务帐户还必须对安装有 DB2 产品的目录具有写存取权。 “DB2 管理服务器”服务(DB2DAS00 服务)的服务帐户还必须具有启动和停止其它 DB2 服务的权限(即,服务帐户必须属于“内行用户”组),并对由其管理的所有 DB2 实例具有 DB2 SYSADM 权限。 50.15 需要落实将在“数据仓库中心”(DWC)中使用的所有用户定义程序 如果想要在“数据仓库中心”(DWC)中将由“DB2 存储过程构建器”构建的存储过程用作用户定义程序,必须将以下语句插入到存储过程中的 con.close(); 语句的前面: con.commit(); 如果未插入此语句,则存储过程所作的更改将会在从 DWC 运行存储过程时发生回滚。 对于 DWC 中的所有用户定义程序,需要显式落实所有包含的 DB2 功能,以使这些更改在数据库中生效;即,您必须将 COMMIT 语句添加至用户定义程序。 50.16 在 Windows NT 上进行客户机端高速缓存 如果用户尝试使用有效令牌通过共享驱动器存取驻留在安装有 DB2 Datalinks 的 Windows NT 服务器上的 READ PERM DB 文件,该文件就会如期打开。但是,在此之后,使用同一令牌的后续打开请求并不会真正到达服务器,但会从客户机上的高速缓存中接受服务。即使令牌到期,文件的内容对用户来说仍然是可见的,因为该条目仍在高速缓存中。但是,如果文件驻留在 Windows NT 工作站上,则不会发生此问题。 解决方案就是在 Windows NT 服务器上将注册表项 \\HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\Lanmanserver\Parameters\EnableOpLocks 设置为零。通过此注册表设置,每当通过共享驱动器从客户机工作站存取驻留在服务器上的文件时,请求总是会到达服务器,而不是从客户机高速缓存接受服务。因此,必须对所有请求重新确认令牌。 此解决方案的负面影响就是这会影响通过共享驱动器对服务器上的所有文件进行存取时的总体性能。即使有了此设置,如果该文件是通过映射服务器本身的共享驱动器进行存取的,与通过另一客户机高速缓存进行存取相比,该请求仍然是从高速缓存接受服务的。因此,令牌到期没有影响。 注意: 在所有情况下,如果文件存取是本地存取而不通过共享驱动器进行,则令牌验证和后续令牌到期将会如期发生。 50.17 Life Sciences Data Connect 50.17.1 新包装器 在“修订包 4”中,已经向 Life Sciences Data Connect 添加了两个新的包装器。一个包装器用于 AIX 上的文档,一个包装器用于 Windows NT 上的 Excel。另外,已经将表结构的文件包装器从 AIX 移植到 Windows NT、Solaris、Linux 和 HP-UX 系统上。 对于“修订包 5”,已将 AIX 上的 BLAST 包装器添加至 DB2 Life Sciences Data Connect。已将“文档”包装器从 AIX 移植至 Windows NT、Windows 2000 和“Solaris 操作环境”。 对于修订包 6,已将 BLAST 包装器从 AIX 移植至 Windows NT、Windows 2000、HP-UX 和“Solaris 操作环境”。 50.17.2 声明 — Life Sciences Data Connect 包括来自 Apache Software 和 ICU 的代码。该代码以“仅此状态”的基础提供,不附有任何形式的(无论是明示的还是默示的)保证,包括(但不限于)对非侵权性、适销性和适用于某特定用途的默示保证。而且,IBM 不提供任何赔偿。 Apache Software License 版本 1.1 Copyright (c) 1999-2001 The Apache Software Foundation. All rights reserved. ICU 1.8.1 和更新版本 Copyright (c) 1995-2001 International Business Machines Corporation and others. All rights reserved. 50.18 SQL 辅助程序的增强功能 “SQL 辅助程序”工具现在允许用户指定除了“=”之外的连接运算符来进行表连接。“连接类型”对话框已经被增强为包括连接运算符的下拉列表,可以通过单击“SQL 辅助程序”工具的“连接”页上的“连接类型”按钮来启动该对话框。 可用的运算符是“=”、“<>”、“<”、“>”、“<=”和“>=”。“SQL 辅助程序”是一个帮助用户创建简单 SQL 语句的工具。可以从“命令中心”(“交互式”选项卡)、“控制中心”(“创建视图”和“创建触发器”对话框)、“存储过程构建器”(“插入 SQL 存储过程”向导)和“数据仓库中心”(“SQL 进程”步骤)中得到它。 50.19 备份与复原命令的帮助 当您输入 db2 ? backup 时会出现不正确的信息。正确的输出是: BACKUP DATABASE database-alias [USER username [USING password]] [TABLESPACE (tblspace-name [ {,tblspace-name} ... ])] [ONLINE] [INCREMENTAL [DELTA]] [USE TSM [OPEN num-sess SESSIONS]] | TO dir/dev [ {,dir/dev} ... ] | LOAD lib-name [OPEN num-sess SESSIONS]] [WITH num-buff BUFFERS] [BUFFER buffer-size] [PARALLELISM n] [WITHOUT PROMPTING] 当您输入 db2 ? restore 时出现了不正确的信息。正确的输出是: RESTORE DATABASE source-database-alias { restore-options | CONTINUE | ABORT }"; restore-options:"; [USER username [USING password]] [{TABLESPACE [ONLINE] |"; TABLESPACE (tblspace-name [ {,tblspace-name} ... ]) [ONLINE] |"; HISTORY FILE [ONLINE]}] [INCREMENTAL [ABORT]]"; [{USE TSM [OPEN num-sess SESSIONS] |"; FROM dir/dev [ {,dir/dev} ... ] | LOAD shared-lib"; [OPEN num-sess SESSIONS]}] [TAKEN AT date-time] [TO target-directory]"; [INTO target-database-alias] [NEWLOGPATH directory]"; [WITH num-buff BUFFERS] [BUFFER buffer-size]"; [DLREPORT file-name] [REPLACE EXISTING] [REDIRECT] [PARALLELISM n]"; [WITHOUT ROLLING FORWARD] [WITHOUT DATALINK] [WITHOUT PROMPTING]"; 50.20 “仓库管理器”应为“DB2 仓库管理器” 产品屏幕和产品文档中所有出现短语“仓库管理器”的地方都应为“DB2 仓库管理器”。 附录及附属资料 附录 A. 声明 IBM 可能在其它国家或地区不提供本文档中讨论的产品、服务或功能特性。有关您当前所在区域的产品和服务的信息,请向您当地的 IBM 代理咨询。任何对 IBM 产品、程序或服务的引用并非意在明示或暗示只能使用 IBM 的产品、程序或服务。只要不侵犯 IBM 的知识产权,任何同等功能的产品、程序或服务,都可以代替 IBM 产品、程序或服务。但是,评估和验证任何非 IBM 产品、程序或服务,则由用户自行负责。 IBM 公司可能已拥有或正在申请与本文档内容有关的各项专利。提供本文档并未授予用户使用这些专利的任何许可证。您可以用书面方式将许可证查询寄往: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 U.S.A. 有关双字节(DBCS)信息的许可证查询,请与您的国家或地区的 IBM 知识产权部门联系,或用书面方式将查询寄往: IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106, Japan 本条款不适用于联合王国或任何这样的条款与当地法律不一致的国家或地区:国际商业机器公司以“按现状”的基础提供本出版物,不附有任何形式的(无论是明示的,还是默示的)保证,包括(但不限于)对非侵权性、适销性和适用于某特定用途的默示保证。某些国家或地区在某些交易中不允许免除明示或默示的保证。因此,本条款可能不适用于您。 本信息中可能包含技术方面不够准确的地方或印刷错误。此处的信息将定期更改;这些更改将编入本资料的新版本中。IBM 可以随时对本资料中描述的产品和/或程序进行改进和/或更改,而不另行通知。 本信息中对非 IBM Web 站点的任何引用都只是为了方便起见才提供的,不以任何方式充当对那些 Web 站点的保证。该 Web 站点中的资料不是 IBM 产品资料的一部分,使用那些 Web 站点带来的风险将由您自行承担。 IBM 可以按它认为适当的任何方式使用或分发您所提供的任何信息而无须对您承担任何责任。 本程序的被许可方如果要了解有关程序的信息以达到如下目的:(i)允许在独立创建的程序和其它程序(包括本程序)之间进行信息交换,以及(ii)允许对已经交换的信息进行相互使用,请与下列地址联系: IBM Canada Limited Office of the Lab Director 8200 Warden Avenue Markham, Ontario L6G 1C7 CANADA 只要遵守适当的条件和条款,包括某些情形下一定数量的付费,都可获得这方面的信息。 本资料中描述的许可程序及其所有可用的许可资料均由 IBM 依据 IBM 客户协议、IBM 国际程序许可证协议或任何同等协议中的条款提供。 此处包含的任何性能数据都是在受控环境中测得的。因此,在其它操作环境中获得的数据可能会有明显的不同。有些测量可能是在开发级的系统上进行的,因此不保证与一般可用系统上进行的测量结果相同。此外,有些测量是通过推算而估计的,实际结果可能会有差异。本文档的用户应当验证其特定环境的适用数据。 涉及非 IBM 产品的信息可从这些产品的供应商、其出版说明或其它可公开获得的资料中获取。IBM 没有对这些产品进行测试,也无法确认其性能的精确性、兼容性或任何其它关于非 IBM 产品的声明。有关非 IBM 产品性能的问题应当向这些产品的供应商提出。 所有关于 IBM 未来方向或意向的声明都可随时更改或收回,而不另行通知,它们仅仅表示了目标和意愿而已。 本资料中可能包含用于日常业务运作的数据和报表的示例。为了尽可能完整地说明问题,这些示例可能包含个人、公司、品牌和产品的名称。所有这些名称都是虚构的,如与实际商业企业所使用的名称和地址相似,纯属巧合。 版权许可证: 本资料可能包含源语言的样本应用程序,它们举例说明各种操作平台上的编程技术。为了开发、使用、市场营销或分发符合编写这些样本程序所针对的操作平台的应用程序编程接口的应用程序,您可以以任何形式复制、修改和分发这些样本程序,而不必向 IBM 付款。尚未在所有条件下彻底测试这些示例。因此,IBM 不能保证或默示这些程序的可靠性、适用性或功能。 这些样本程序或任何派生产品的每个副本或任何部分都必须包括如下版权声明: (c)(您的公司名)(年份)。本代码的某些部分是从“IBM 公司样本程序”派生的。(c) Copyright IBM Corp. _输入年份_。All rights reserved. A.1 商标 以星号(*)标出的下列各项是国际商业机器公司在美国和/或其它国家或地区的商标。 ACF/VTAM AISPO AIX AIX/6000 AIXwindows AnyNet APPN AS/400 BookManager CICS C Set++ C/370 DATABASE 2 DataHub DataJoiner DataPropagator DataRefresher DB2 DB2 Connect DB2 Extender DB2 OLAP Server DB2 Universal Database Distributed Relational Database Architecture DRDA eNetwork Extended Services FFST First Failure Support Technology IBM IMS IMS/ESA LAN DistanceMVS MVS/ESA MVS/XA Net.Data OS/2 OS/390 OS/400 PowerPC QBIC QMF RACF RISC System/6000 RS/6000 S/370 SP SQL/DS SQL/400 System/370 System/390 SystemView VisualAge VM/ESA VSE/ESA VTAM WebExplorer WIN-OS/2 下列各项是其它公司的商标或注册商标: Microsoft、Windows 和 Windows NT 是 Microsoft Corporation 的商标或注册商标。 Java 或所有基于 Java 的商标和徽标以及 Solaris 是 Sun Microsystems, Inc. 在美国和/或其它国家或地区的商标。 Tivoli 和 NetView 是 Tivoli Systems Inc. 在美国和/或其它国家或地区的商标。 UNIX 是经 X/Open Company Limited 唯一许可的在美国和/或其它国家或地区的注册商标。 以双星号(**)标出的其它公司、产品或服务名称可能是其它公司的商标或服务标记。 索引 〔A〕 〔B〕 〔C〕 〔D〕 〔F〕 〔G〕 〔H〕 〔J〕 〔K〕 〔L〕 〔M〕 〔N〕 〔Q〕 〔R〕 〔S〕 〔W〕 〔X〕 〔Y〕 〔Z〕 特殊文字及符号 a c d e g h i j l m n o p q r s t u v w x 〔A〕 安装 当使用可更换驱动器时挂起 (792) 停止 DB2 进程 (797) DB2 扩充企业版,在 AIX 上 (786) Windows 上需要的服务帐户 (1162) 安装错误 AIX (804) 安装先决条件 OS/390 的 Linux 上的 UDB EE 和 CEE (802) 〔B〕 帮助 (1065) 备份 当 LOGRETAIN=CAPTURE 时 (909) 备份方法 对于 Data Links Manager (914) 崩溃恢复 使用 db2inidb 工具 (903) 标记语言文件 键定义 (986) 标量函数 DAYOFWEEK_ISO (1060) WEEK_ISO (1061) 表 异常 消息列结构 (1141) 表达式 串联运算符 (1096) 字符串 (1097) 表结构 (931) 表空间 在冗余独立磁盘阵列上 (838) 补丁程序级别 在 Solaris 版本 2.6 上 (785) 步骤 调度 (991) 〔C〕 仓库代理程序,安装 (1000) 操作数 字符串 (1100) 查询结果,查看 (973) 传送速率 提高 (1145) 串联 运算符 (1098) 从值中返回时间戳记 TIMESTAMP 函数 (1123) 存储过程 在“数据仓库中心”中 (1164) 存取帮助 (1064) 错误,安装 AIX (803) 错误消息 将节点添加到分区数据库时 (854) 拒绝存取文件 (961) 无效快捷方式 (955) 在迁移期间 (806) 找不到绑定文件 (1149) SQL10012N (969) 〔D〕 调度 步骤和进程 (989) 重复 (990) 定向 I/O (849) 多站点更新测试连接 实例版本不兼容性 (962) 〔F〕 范围大小 “创建数据库”向导中的设置 (976) 分割镜像 用作主数据库 (908) 作为备份映象 (907) 作为备用数据库 (906) 分割镜像处理 联机 (904) 分区数据库 添加节点时发生错误 (853) 分散读取 (848) 复合 SQL,使用 (1037) 复原 当 LOGRETAIN=CAPTURE 时 (910) DATALINK 列的问题 (810) 复原文件 Data Links Manager (813) 复制 对表和列名的限制 (922) 对于非 IBM 服务器 (920) 方案 (921) 计划 (925) 随处更新先决条件 (926) DATALINK (923) 问题确定 (927) 复制分析器 (928) 复制守护程序 (808) 〔G〕 高可用性 (902) 工具 在 Linux 上使用 (949) 〔H〕 函数 标量 DATE (1108) GRAPHIC (1113) MQPUBLISH (1067) MQREADCLOB (1070) MQRECEIVECLOB (1073) MQSEND (1076) TIME (1116) TIMESTAMP (1122) VARGRAPHIC (1128) 表 MQREADALLCLOB (1079) MQRECEIVEALLCLOB (1082) 在 Unicode 数据库中 (1102) 红旗 Linux 简体中文语言环境 (759) 环境变量 LD_ASSUME_KERNAL (947) 缓冲池 基于块 (847) 基于页 (846) 相邻页 (850) 缓冲池标识 (851) 缓冲池分块 (845) 示例 (852) 〔J〕 简体中文 Linux 上的语言环境设置 (763) 键定义 元数据导入/导出 (985) 键盘快捷方式 问题 (958) 进程 调度 (992), (993) 进程,在安装之前停止 (798) 静态概要文件,在 JDBC/ODBC/CLI 应用程序中 (1013) 〔K〕 客户机 三层环境 (1022) 下载 (783) 克隆数据库 创建 (905) 控制中心 版本 6,用来管理卫星环境 (889) 对并行小应用程序的限制 (971) 故障诊断 (965) 使用简体中文 (764) 使用日语 (765) 双向支持 在 Windows NT 上 (952) 未工作 (770) 用来管理 VM 和 VSE 数据库 (951) 与 Internet Explorer 有关的错误 (768) OS/2 上的 infopops 显示问题 (967) OS/390 需要的修正 (964) 在 OS/390 平台上 (963) 在 UNIX 平台上进行故障诊断 (966) Windows 95 上的脚本中心问题 (972) “工具设置”笔记本 (970) 快速导览 (983) 〔L〕 联合系统 包装器 (814) 别名 (815) 约束 (816) 联合系统,限制 (1158) 联机帮助 (1066) 联机信息 搜索 在 Solaris 操作环境上 (776) 连接 提高数据传送速率 (1147) 列 字符串指定,基本规则 (1090) 〔M〕 命令 CREATE DATABASE (898) 〔N〕 内存窗口 在 HP-UX 11 上 (1152) 〔Q〕 启动 DB2 在 Windows 95、98 和 ME 上使用 db2start (936) 迁移 错误在 (807) 视图的问题 (793) 运行 db2iupdt 来更新实例 (800) 在 Windows 2000 上 (789) 〔R〕 热键 问题 (957) 认证 通过使用 DB2DOMAINLIST 的域 (1157) 日期时间数据类型 字符串表示法 (1104) 日期时间值 字符串表示法 (841) 日期字符串 定义 (842) 日语 Linux 上的语言环境设置 (762) PTX 上的 DB2 (767) 日志序号(LSN) (894) 冗余独立磁盘阵列 优化 (837) 〔S〕 时间 从值中返回时间戳记 (1124) 根据时间来返回值 (1119) 在表达式中使用时间 (1118) 时间戳记字符串 定义 (844) 时间字符串 定义 (843) 使用“运行时客户机”来绑定数据库实用程序 (1011) 视图 在迁移之后不可用 (794) 数据仓库中心 标记语言文件 (988) 键定义 (987) 使用存储过程 (1163) 数据传送速率 提高 (1146) 数据库移动工具 (895) 数据类型 在 Unicode 数据库中提升 (1087) 数据移动 对 Unicode 客户机的限制 (918) 双向语言支持 利用 Windows NT 上的“控制中心” (953) 双字节字符串(DBCS) 返回字符串 (1133) 死锁 (937) 搜索联机信息 在 Solaris 操作环境上 (774) 锁定等待 (938) 锁定,有利的 (1035) 〔W〕 网关 三层环境 (1023) 为列指定字符串,规则 (1091) 卫星 安装注意事项 (881) 交互式安装 (885) DB2 个人版 (870) DB2 工作组版 (871) 响应文件安装 (882) 卫星管理中心 版本 6,用来管理卫星环境 (890) 卫星环境 安装注意事项 (880) 使用版本 6 卫星管理中心管理 (891) 卫星的交互式安装 (886) 卫星的响应文件安装 (883) 先决条件 (874) “DB2 个人版”卫星 (872) “DB2 工作组版”卫星 (873) 无效快捷方式错误 (954) 〔X〕 下一个键锁定 (939) 限制 SAP 连接器 (995) 响应文件安装 特定于卫星的关键字 (884) DB2 控制服务器关键字 (879) 向导 创建数据库 (978) MQSeries 辅助程序 (980) OLE DB 辅助程序 (982) 消息 关于 Capture 和 Apply (932) 卸载 DB2 DFS 客户机使能器 (1154) 信息目录管理器 采用希伯莱语 (1160) 实用程序 (997) 性能 在冗余独立磁盘阵列上 (839) 〔Y〕 样本内容,查看 (974) 已更新的书籍 Application Development Guide (750) Command Reference (751) SQL reference (756) 《管理指南》 (749) 《数据仓库中心管理指南》 (753) 《数据恢复和高可用性指南与参考》 (752) 《DB2 仓库管理器安装指南》 (755) 《消息参考》 (754) 《应用程序构建指南》 (748) 异常表 消息列结构 (1140) 易使用性 键盘快捷方式 (956) 易使用性功能部件 (1148) 用户概要文件 更改节点状态 (1003) 游标 并行 (1030) 键集驱动的 更新 (1033) 可更新 (1029) 可滚动 (1031) 服务器端 (1019) 键集驱动的 (1021) 静态 (1020) 应用程序故障诊断 (1036) OS/390 (1018) 类型 (1027) 灵敏度 (1028) 属性,缺省值 (1026) 值并行性 (1034) 语言环境 Linux 上的日语和简体中文 (760) 在红旗 Linux 上的简体中文 (758) 语言支持 SAP 连接器 (996) 远程客户机访问 为 NT 配置通信服务器 (791) 〔Z〕 在表达式中使用时间 TIME 函数 (1117) 暂挂 I/O 功能 支持连接可用性 (901) 指定 日期时间值,规则 (1105) 为字符串值指定日期时间 (1107) 字符串,基本规则 (1089) 注册表变量 DB2DOMAINLIST (1156) DB2_BINSORT (855) DB2_BLOCK_BASED_BP (857) DB2_INLIST_TO_NLJN (859) DB2_NEWLOGPATH (861) DB2_NEWLOGPATH2 (864) DB2_REDUCED_OPTIMIZATION (866) DB2_ROLLFORWARD_NORETRIEVE (862) 转换 将日期时间转换为字符串变量 (1106) 将字符串转换为时间戳记 (1125) 来自于混合 SBCS 和 DBCS 的 DBCS (1131) 双字节字符串 (1132) 转换规则 用于,运算组合字符串 (1093) 用于字符串比较 (1095) 字符串 表达式 (1099) 操作数 (1101) 双字节字符串 (1130) 指定,覆盖 (1088) VARGRAPHIC 标量函数 (1129) 字符转换 规则,用于运算组合字符串 (1092) 规则,在比较字符串时 (1094) 特殊文字及符号 “创建数据库”向导 设置范围大小 (977) “拒绝存取文件”错误 (960) “MQSeries 辅助程序”向导 (979) “OLE DB 辅助程序”向导 (981) a Adobe Acrobat Reader 利用非英语语言环境来存取 (781) ADT 变换 (1014) AIX 安装错误 (805) DB2 安装 (787) AIX 4.3.3 AutoLoader 在派生之后挂起 (917) ARCHIVE LOG 使用说明 (892) AS/400 Capture 和 Apply (929) AutoLoader 在派生期间挂起 (916) c Capture 和 Apply 从应用程序内启动 (934) 错误消息 (933) 在 AS/400 上 (930) CAPTURE(LOGRETAIN 设置) 备份与复原行为 (911) CLI 编写 Unicode 应用程序 (1017) 存储过程 多个结果集 (1016) 配置关键字 CURRENTFUNCTIONPATH (1041) SKIPTRACE (1042) 优点 (1015) CLI 存储过程 限制 (1039) 自动绑定 (1040) CLI 函数 SQLBindFileToParam (1044) SQLColAttribute (1045) SQLGetInfo (1049) SQLGetLength (1051) SQLNextResult (1054) SQLSetStmtAttr (1056) CLI0637E (1010) CLOB 数据 MQSeries 函数 (1085) CREATE DATABASE (899) CREATE PROCEDURE 语句 GET DIAGNOSTICS 语句 (1134) d Data Link Manager 备份方法 (915) Data Links Manager 复原文件时的问题 (812) DataJoiner 约束 (1159) DATALINK 复原时的问题 (809) 复制 (924) DATE 函数 详细描述 (1109) 值与日期格式的转换 (1110) DAYOFWEEK_ISO 标量函数 (1062) DB2 服务器 VM 版和 VSE 版 从“控制中心”管理数据库 (950) DB2 个人版 设置为卫星 (868) 先决条件 (875) DB2 控制服务器 版本 6,升级 (888) 响应文件安装 (878) 最小先决条件 (877) DB2 企业版 版本 6,用作 DB2 控制服务器 (887) 设置为卫星 (869) 先决条件 (876) DB2 Relational Connect 在 Unix 上安装 (818) 在 Windows NT 上安装 (817) db2ArchiveLog (1009) db2inidb 工具 (900) db2iupdt 命令,在升级 DB2 之后运行 (799) db2move (896) db2start 在 Windows 95、98 和 ME 上 (935) DB2_BINSORT (856) DB2_BLOCK_BASED_BP (858) DB2_INLIST_TO_NLJN (860) DB2_NEWLOGPATH (863) DB2_NEWLOGPATH2 (865) 以前称为 NEWLOGPATH2 (913) DB2_PARALLEL_IO (840) DB2_REDUCED_OPTIMIZATION (867) DB2_ROLLFORWARD_NORETRIEVE DFS 客户机使能器 卸载 (1155) dlfm client_conf 故障原因 (811) DWC7906,消息已更新 (984) e enable_MQFunctions (943), (945) g GET DIAGNOSTICS 语句 (1135) GET ROUTINE (897) GET_ROUTINE_SAR (1139) GRAPHIC 函数 详细描述 (1111) 值和自变量 (1112) GUI 工具 绑定错误 (1150) h HP-UX 不支持 Query Enabler (1007) HP-UX 11 内存窗口 (1153) i Internet Explorer 与“控制中心”有关的错误 (769) IPX/SPX 协议支持,在 Windows 2000 上 (796) iSeries 代理程序,后安装注意事项 (1001) iSeries 代理程序,使用转换程序 (1002) j JDBC 可滚动游标,存取 (1025) JDBC/ODBC/CLI 静态概要文件,限制 (1012) JDK 1.1 安装路径 (968) l Linux 日语和简体中文的语言环境设置 (761) 为“控制中心”设置环境 (801) 运行 DB2 UBD 管理工具 (948) LSN (893) m Microsoft SQL Server 数据源 代码页 (836) 环境变量 (830) 链接至 DB2 (831) 提高性能 (832) DSN 名 (834) MERANT 包装器 (833) MERANT 库 (829) ODBC 跟踪 (835) ODBC 驱动程序 (828) MQ 函数 (944), (946) MQPUBLISH 函数 详细描述 (1068) 值和自变量 (1069) MQREADALLCLOB 函数 详细描述 (1080) 值和自变量 (1081) MQREADCLOB 函数 详细描述 (1071) 值和自变量 (1072) MQRECEIVEALLCLOB 函数 详细描述 (1083) 值和自变量 (1084) MQRECEIVECLOB 函数 详细描述 (1074) 值和自变量 (1075) MQSEND 函数 详细描述 (1077) 值和自变量 (1078) MQSeries 函数 CLOB 数据支持 (1086) n NetQuestion 在 OS/2 上使用 TCP/IP (777) Netscape 错误消息 (780), (975) 用来访问联机信息 (772) NEWLOGPATH2 现在称为 DB2_NEWLOGPATH2 (912) NLV 支持 Unicode (1143) NUMA-Q 不支持 Query Enabler 或 Tracker (1008) o ODBC 可滚动游标,存取 (1024) 取装方向 (1032) ODBC Unicode 应用程序 (1058) Oracle 数据源 环境变量 (821) Linux 包装器 (820) Solaris 包装器 (819) OS/2 安装“控制中心” (959) NetQuestion (778) p PDF 文件 利用非英语语言环境来存取 (782) PTX 使用日语 (766) q Query Enabler 在 HP-UX 和 NUMA-Q 上不受支持 (1006) Query Patroller 在迁移之后失去用户特权 (1004) Query Patroller Tracker 在 NUMA-Q 上不受支持 (1005) r RESULT_STATUS GET DIAGNOSTICS 语句 (1136) ROW_COUNT GET DIAGNOSTICS 语句 (1137) s SAP 连接器 安装 (994) search discovery (1151) SNA 服务器 从主机或者 AS/400 应用程序存取 UDB (790) SNA SPM 在重新引导之后验证启动 (1161) Solaris 缺乏对 UltraSparc 之前的版本的支持 (757) 在版本 2.6 上必需的补丁程序级别 (784) Solaris 操作环境 搜索联机信息 (775) Solaris 操作系统 64 位 配置 (940) 约束 (941) SQL 过程 GET DIAGNOSTICS 语句 (1138) SQL,复合 (1038) SQLBindFileToParam CLI 函数,更正 (1043) SQLColAttribute 函数 SQL_DESC_AUTO_UNIQUE_VALUE (1046) SQL_DESC_UPDATABLE (1047) SQLGetData function (1048) SQLGetInfo 函数 (1050) SQLGetLength 函数 DBCLOB (1052) SQLNextResult 函数 (1053) SQLSetEnvAttr 函数 SQL_ATTR_KEEPCTX 属性 (1055) SQLSetStmtAttr 函数 SQL_ATTR_QUERY_TIMEOUT 属性 (1057) Sybase 与 Windows 上 ICM 的不兼容性 (998) Sybase 数据源 (822) 代码页 (827) 环境变量 (824) 链接至 DB2 (825) 提高性能 (826) Sybase Open Client (823) t TCP/IP NetQuestion (779) TIME 函数 详细描述 (1114) 值和自变量 (1115) TIMESTAMP 函数 详细描述 (1120) 值和自变量 (1121) u Unicode 函数 (1103) 数据库和应用程序 (1142) 文档更新 (1144) 在 ODBC 应用程序中 (1059) Unicode 客户机 数据移动限制 (919) v VARGRAPHIC 函数 详细描述 (1126) 值和自变量 (1127) w web 浏览器 对于 Windows 2000 的建议 (771) WEEK_ISO 标量函数 (1063) Windows Sybase 与 ICM 之间的不兼容性 (999) Windows 2000 建议的 web 浏览器 (773) 迁移 (788) IPXX/SPX 协议支持 (795) x XML Extender 发行说明 (942) 1 “服务策略”定义应该应用于此消息传递操作的一组服务质量选项。这些选项包括消息优先级和消息持久性。有关更详细的信息,参见 MQSeries Application Messaging Interface 手册。