级别: 初级 Raul F. Chong, DB2 通用数据库咨询服务部, IBM 多伦多实验室
2002 年 10 月 01 日 本文说明了 DB2 UNIX、Linux 和 Windows 专家如何利用他们在这些平台上的 DB2 知识来获取有关 DB2 UDB for iSeries 的技能。
简介
本文是为 IBM® DB2® UNIX®、Linux 和 Windows® 用户编写的,这些用户希望利用他们在这些平台上的 DB2 知识来获取有关 DB2 Universal Database(UDB)for iSeries (也叫做 AS/400®)的一些技能。通过使用 DB2 UDB UNIX、Linux 和 Windows 术语进行类比,我们将说明 DB2 UDB for iSeries 中的同等概念。在本文中我们使用术语“DB2 LUW”指代“DB2 Universal Database V8.1 for Linux、UNIX 和 Windows”,并使用术语“DB2 UDB for iSeries”指代“DB2 Universal Database for iSeries V5.2”。尽管本文重点在于帮助 DB2 LUW 专业人员获取有关 iSeries 上的 DB2 技能,但是,DB2 UDB for iSeries 专业人员也可通过阅读本文获得有关 DB2 LUW 的技能。
DB2 UDB for iSeries 的一些事实
从 AS/400 开始,关系数据库就一直是 OS/400® 操作系统的一部分。这个集成的、完整的关系数据库在 1999 年 2 月被标上了“DB2 UDB for iSeries”品牌。尽管与其它 DB2 平台一样,该产品的每个新版本都会不断添加新的功能和特性,但是最初的数据库引擎仍然是相同的。因为 DB2 UDB for iSeries 是 OS/400 操作系统的一部分,所以数据库系统的版本及发行版与操作系统使用的版本及发行版是一样的。最近宣布的版本是 V5R2。请参阅
用于 iSeries V5R2 的 DB2 通用数据库有什么新增功能这篇文章以获取关于新发行版的更多信息,并参阅
公共基础上的 DB2 UDB 系列以获取有关 DB2 UDB for iSeries 的更多信息。
有了 DB2 UDB for iSeries,使用以下两种方法或其中的一种就可以执行数据库数据定义语言(Data Definition Language,DDL)操作:
-
DDS(数据描述规范,Data Description Specification)
DDS 是 AS/400 专有的本机接口,最初是在 SQL 普及之前,在数据库中使用的。现在仍大量使用于数据库操作。
-
SQL
DB2 UDB for iSeries 与 SQL-92 入门级标准(SQL-92 Entry Level Standard)完全兼容,并且比其它任何 DB2 系列成员实现了更多的核心 SQL-99 标准(
ISO International Standard (IS),Information technology - Database language SQL,ISO/IEC 9075-1:1999,1999 年 7 月)。在 V5R2 之前,该产品就有了 SQL 支持;然而,使用 SQL(例如,SQL 存储过程、触发器和函数)进行应用程序开发需要用户购买 Query Manager 和 DB2 SQL Development Kit。有了 V5R2,则不再需要购买这个工具箱,因为该功能已经添加到 iSeries,作为其基本产品的一部分。要获得所有其它 SQL 支持,比如预编译器、ISQL 接口和 Query Manager,这一工具箱仍需付费。
不管使用了什么方法,任何编程语言或数据库接口都应该能互换地使用这些方法来访问 DB2 UDB for iSeries 的数据。因此,例如 SQL 语句就可以引用用 DDS 创建的对象。下面的
表 1比较了 DDS 和 SQL 的概念和术语。
表 1 - DB2 UDB for iSeries 的 DDS vs SQL 概念和术语比较
|
DDS
|
SQL
| | 与 iSeries 一起提供,免费 | 与 iSeries 一起提供,免费 | | 能很好地处理 DDL,但不能处理 DML | 能处理 DDL 和 DML | | 库 | 模式(也叫做 **集合,Collection) | | 物理文件 | 表 | | 逻辑文件 | 视图 | | 按照键索引的逻辑文件 | 索引 | | 记录 | 行 | | 字段 | 列 | | 能用于创建屏幕和报表 | 基于 SQL 输出的基本“报表” | 用于引用库中文件的表示法是:<库>/<文件名>
这称为 *SYS 命名约定。
| 用于引用作为模式一部分的表的表示法是:<模式>.<表名>
这称为 *SQL 命名约定。
|
**现在弃用术语“集合”。而应该使用“模式”。
下面的示例说明如何用 DDS(
示例 1 和 2)和 SQL(
示例 3 和 4)创建表“EMPPF”:
示例 1. DDS - 针对文件 EMPPF 的物理文件编码
T.Name++++++RLeng++TDpB......Functions+++++++++++++++++++++++++
R EMPREC
EMPID 4A TEXT('Employee ID')
COLHDG('Emp' 'ID')
EMPTITLE 8A TEXT('Employee title')
COLHDG('Emp' 'Title')
DEPTID 3A TEXT('Department ID')
COLHDG('Dept' 'ID')
DEPTNAME 8A TEXT('Department name')
COLHDG('Dept' 'Name')
K EMPID |
|
示例 2. DDS - 针对文件 EMPLF 的按照键索引的逻辑文件(Keyed Logical File)编码
.....A..........T.Name++++++.Len++TDpB......Functions+++++++++++++++
*************** Beginning of data **********************************
R EMPLFREC PFILE(MYLIB/EMPPF)
EMPID 4A
K EMPID
****************** End of data *************************************
|
|
示例 3. SQL - 创建表
CREATE TABLE MYLIB.EMPPF
(EMPID CHAR(4) NOT NULL WITH DEFAULT,
EMPTITLE CHAR(8) NOT NULL WITH DEFAULT,
DEPTID CHAR(3) NOT NULL WITH DEFAULT,
DEPTNAME CHAR(8) NOT NULL WITH DEFAULT);
|
|
示例 4. SQL - 创建索引
CREATE INDEX EMPIX
ON MYLIB.EMPPF(EMPID);
|
|
对于这些
示例中的 DDS 版本,我们假设库“MYLIB”是在发出上述 DDS 命令之前创建的。通过发出下列 DDS 命令可完成库的创建工作:
CRTPF FILE(MYLIB/EMPPF) srcFILE(MYLIB/QDDSSRC) srcMBR(EMPPF).
|
在
SQL 版本中,通过使用模式“MYLIB”已经显式地说明了这一点。您可以用 SQL 语句
CREATE SCHEMA MYLIB 创建库/模式“MYLIB”。对于试图获取 DB2 UDB for iSeries 技能的 DB2 LUW 专业人员来说,只使用 SQL 来执行数据库操作会很方便。
当使用 Query Manager 和 SQL Development Kit 中提供的工具开发 SQL 应用程序时,只需有一台安装了该软件的 iSeries 机器就可以了。如果您已经编写并编译了包括嵌入式 SQL 的 iSeries 程序,您可以在任何 iSeries 系统上运行这个可执行程序,因为它们全都带有 SQL 解析器和运行时支持;在这些其它机器中不需要安装 Query Manager 和 SQL Development Kit。
DB2 UDB for iSeries 中自动化的 DBA 任务
DBA 负责的许多任务在 DB2 UDB for iSeries 中是完全自动化的。下面的清单显示了这些自动化的任务中的一些:
- 物理空间分配的管理
- 表空间分配和数据块的检查
- 应用程序重新联编
- 数据库完整性维护
- 数据库统计信息的更新
DB2 UDB for iSeries SQL 产品和界面
DB2 UDB for iSeries 提供了名为 iSeries Navigator(以前称为 Operations Navigator)的 GUI 界面,它方便了 DBA 的操作。其中的一些操作是:
- 将数据装入数据库
- 构建和管理数据库备份和恢复
- 创建和查看表的索引
- 对作为整体的数据库和 iSeries 系统进行性能分析和调优
- 创建和维护数据库模式
从某种程度而言,iSeries Navigator GUI 工具相当于 DB2 LUW 控制中心(Control Center)。但是,iSeries Navigator 用来从工作站管理整个 iSeries 系统,而不仅仅是数据库系统。这个工具中的“Database Navigator”项包含了所有相关的数据库操作。除了 iSeries Navigator 之外,还有与该产品一起提供了非 GUI 界面(也叫做“绿屏”界面):
-
Interactive SQL(STRSQL)
这个工具允许您对 SQL 语句建立原型。它相当于 DB2 LUW 命令行处理器(Command Line Processor,CLP)。但是,和 CLP 不同的是,Interactive SQL 提供了大量的提示、选项列表和帮助。
-
DB2 Query Manager for iSeries
这个工具帮助您在数据库上创建 SQL 查询、创建和维护数据以及运行报表。该工具不等同于任何 DB2 LUW 工具。
DB2 UDB for iSeries 提供了下列性能和监控工具:
-
SQL Performance Monitor
SQL Performance Monitor 是从 iSeries Navigator 调用的 GUI 工具。它主要用于监控和调优 SQL 查询。在 DB2 LUW 中,SQL 查询是使用不同的工具(如 explain facility、governor 和 snapshots)进行监控和调优的。
-
Database Monitor
Database Monitor 是个绿色界面,可以用命令
strdbmon 启动。该工具提供了与 SQL Performance Monitor 相似的功能。
-
Explain Facility
这个工具提供了和 DB2 LUW 的 explain facility 相同的功能。如同在 DB2 LUW 中的那样,Visual Explain GUI 工具允许用户分析查询的存取路径。
-
Index Advisor
这个工具类似于 DB2 LUW 的 Index Advisor。可以从 Visual Explain 调用它。
-
Performance Tool
Performance Tool 不是特定于 DB2 的,而是用于整个 iSeries 系统的。它是一个绿色界面,带有与 iSeries 性能相关的不同选项。如果我们只选取该工具中与数据库性能相关的选项,我们可以在某种程度上将它们比作 DB2 LUW Health Center,因为这个工具通常监控和检测数据库问题。
要了解上述 DB2 UDB for iSeries 工具中的一些的更多详细信息,您可以查看下列红皮书(PDF 格式):
DB2 UDB Database Navigator and Reverse Engineering:
http://www.redbooks.ibm.com/redpapers/pdfs/redp0515.pdf
DB2 UDB for AS/400 Visual Explain:
http://www.redbooks.ibm.com/redpapers/pdfs/redp0505.pdf
Using AS/400 Database Monitor and Visual Explain to Identify and Tune SQL Queries:
http://www.redbooks.ibm.com/redpapers/pdfs/redp0502.pdf
比较 DB2 LUW 和 DB2 UDB for iSeries 体系结构
图 1显示了 DB2 LUW 系统结构的简化视图,
图 2显示了 DB2 UDB for iSeries 的系统结构。
图 1. Linux、UNIX 和 Windows 上的 DB2 系统结构
图 2. iSeries 上的 DB2 系统结构
实例、数据库和表空间
在 DB2 LUW 中,
实例提供了独立的环境,在该环境中可以创建数据库对象并依据它们运行应用程序。在实例中,DB2 用户可以创建数据库,这些数据库是封闭的独立单元,其中包含了它们自身的目录、日志和配置文件。在数据库中,可以创建表空间,这会建立到表的接口,这个接口包含了物理设备。您不能执行涉及两个不同数据库的表的查询(除非设置了联邦数据库支持)。目录(SYSCATSPACE)、临时空间(TEMPSPACE1)和用户空间(USERSPACE1)都是表空间。当您发出
CREATE DATABASE 命令时会自动地创建这些空间。
一般说来,使用 DB2 UDB for iSeries 时,只有一个环境,其中驻留了所有对象。只要您拥有访问这些对象的权限,那么就可以在整个系统范围内使用这些对象。不存在
实例的概念。数据库不是用像
CREATE DATABASE 这样的命令显式地创建的。事实上,在这种体系结构下通常不需要数据库;使用模式对相关对象进行分组。但是,有了 V5R2,您就可以创建独立的数据库,它可以在一个 iSeries 系统中停止变化,而在另一个 iSeries 系统开始变化。创建这类独立的用户数据库需要使用独立的磁盘池,这可以在 iSeries Navigator 的 Disk Management 功能中进行设置。一旦设置了独立的磁盘池,它看起来就像是 iSeries Navigator 的 Databases 功能下的另一个数据库。
创建模式时,会自动创建模式范围的目录、日志和日志接收器。这个目录存储了特定于该模式的数据库信息,该信息就驻留在这个模式中。来自不同模式的对象可以相互进行交互;因此,不同模式中的表可以在同一个 SQL 查询中使用。不存在表空间;将表分配给物理设备是由 iSeries 自动执行的,且数据是自动跨磁盘进行分割和平衡的。
除了模式范围的目录之外,还有另一个由库 QSYS、QSYS2 和 SYSIBM 组成的目录。该目录存储了所有模式的数据库信息。在库 SYSIBM 下,驻留了 ODBC 和 JDBC 目录视图。这些视图和 DB2 UDB for OS/390® and z/OS 及 DB2 UDB LUW V8 中的视图兼容。当 ODBC 或 JDBC 增强或更改其元数据 API 时,会更改这些视图。
连接到数据库
在 DB2 LUW 中,您
附加(attach)到实例以执行一些管理操作,同时
连接(connect)到数据库以执行数据库操作。在 DB2 UDB for iSeries 中,当您连接到 iSeries 系统时,会自动连接到数据库,并可以执行管理操作以及数据库操作。连接到 iSeries 有几个方法,下面描述了其中的一些方法:
-
iSeries Access。
这是和 iSeries 一起提供的工作站客户机
-
iSeries Navigator。
这是个图形用户界面,用于从 Windows 桌面管理 iSeries 服务器。在 iSeries Navigator 中,您一展开数据库,就与它连接上了。
-
Operations Console。
Operations Console 是 iSeries Access for Windows 的可安装组件。它允许您使用一个或多个 PC(远程或本地)访问和控制 iSeries console 和控制面板功能。
如果从 DB2 LUW 客户机连接,您需要 DB2 连接软件。
Logging vs. journaling
DB2 LUW 使用“活动的”和“归档”日志(log)以便进行恢复。它使用文件
SQLOGCTL.LFH 来跟踪其日志,这个文件与数据库文件存储在相同的目录中(
<instance name>.NODE0000.SQL0000x )。对数据库表的所有更改都会进行日志记录。
CREATE TABLE 语句的
NOT LOGGED INITIALLY 子句或
ALTER TABLE 语句的
ACTIVATE NOT LOGGED INITIALLY 子句可用来防止对相同的工作单元中执行的操作进行日志记录,表就是在工作单元中创建的;但是,对后继的工作单元中的表所进行的其它操作将被记录。
DB2 UDB for iSeries 通过名为“日志记录(journaling)”的过程来记录对表所进行的更改。Journal Receiver 用于捕获这些更改。可以在单独的表上打开和关闭日志记录。没有启用日志记录的表根本不会将任何更改记录在 Journal Receiver 中。除了查阅 DB2 UDB for iSeries 手册之外,有关日志记录的更多详细信息,您可以查看 IBM 红皮书
Striving for Optimal Journal Performance on DB2 Universal Database for iSeries,(SG24-6286-00),2002 年 5 月 2 日出版。
配置参数
DB2 LUW 具有实例级别(数据库管理器配置文件)和数据库级别(数据库配置文件)的参数。在 DB2 UDB for iSeries 中,大多数影响数据库的配置参数都是在操作系统级别(例如,RDB 项)上设置的。DB2 UDB for iSeries 中没有配置文件,而是使用了系统值。其它与性能相关的配置参数(如优先级、时间片等)是在作业级别设置的。例如,通过发出命令
chgqrya ,文件
QAQQINI 中的任何设置都将用于给定的作业。另外,
chgqrya 命令允许您动态地更改其它设置(除了从文件
QAQQINI 读取的设置之外),比如,查询时限处理和并行处理程度。
数据库接口
DB2 UDB for iSeries 和 DB2 LUW 一样,支持下列数据库接口:ODBC、CLI、JDBC 和 SQLJ。另外,它还提供了用于在应用程序中处理嵌入式静态和动态 SQL 的 SQL 预编译器。“iSeries Access”客户机的客户机端接口提供了 ODBC 和 JDBC 驱动程序,还支持 OLE DB、ADO 等,不用额外付费。
结束语
本文通过将 DB2 UDB for iSeries 概念与 DB2 LUW 中的类似概念作比较来提供其概况。两者所涵盖的许多主题在概念上都是相似的。例如,DB2 UDB for iSeries SQL 语法、对公共接口(DRDA、JDBC、ODBC 和 CLI)的支持以及公共工具等都与 DB2 LUW 相似。
DB2 UDB for iSeries 和 OS/400 操作系统集成在了一起,正因为如此,其体系结构稍微有别于 DB2 LUW。DB2 UDB for iSeries 数据库对象在整个系统范围内都可用,没有
实例或
表空间的概念。DBA 的许多任务已被自动化了。
致谢
特别感谢 DB2 UDB for iSeries Application Enabling Support Systems 团队的 John Mascarenhas 对本文所做的反馈。
关于作者  | |  |
Raul F.Chong是 IBM 多伦多实验室的数据库顾问,主要与 IBM 业务伙伴进行协作。Raul 在 IBM 已经工作了五年,其中三年从事 DB2 技术支持,另两年则担任专门负责数据库应用程序开发和将其它 RDBM 迁移到 DB2 的顾问。可以通过
rfchong@ca.ibm.com与他联系。
|
对本文的评价
|