级别: 初级 Raul Chong, DB2 Universal Database Consulting Services, IBM 多伦多实验室
2002 年 7 月 01 日 如果您熟悉 DB2 Linux 版、UNIX 版和 Windows 版,那么您可以利用这些技能来学习 DB2 OS/390 版和 z/OS 版。通过对比 DB2 分布式概念,作者 Raul Chong 讲述了 DB2 Os/390 版和 z/OS 版的系统管理的基础知识,包括子系统、日志记录、配置参数等知识。
编者按:
Getting Started with DB2® for z/OS and OS/390 Version 7 for DB2 Distributed Platform Users(PDF,333 KB)讨论了应用程序开发、工具、锁定和并发等问题,本文是作者对这篇较长的文章缩写而成的。
介绍
如果您理解 DB2 UNIX® 版、Linux 版和 Windows® 版,那么您可以容易地利用这些知识来理解 DB2 OS/390 版和 z/OS 版。在本文中,我将比较 DB2 OS/390 版和 z/OS 版的系统结构与 DB2 Linux 版、UNIX 版和 Windows 版的结构(您很可能已经理解后者)。
如果您有兴趣了解这方面的更多信息,请参阅本文的扩展版本,它的名称是
Getting Started with DB2 for z/OS and OS/390 Version 7 for DB2 Distributed Platform Users,它提供更多详细信息,包括应用程序开发、工具、锁定和并发等信息。
在本文中,我用 DB2 ULWO 指代 DB2 通用数据库版本 7.2 UNIX 版、Linux 版、Windows 版和 OS/2® 版。我用 DB2 S/390® 指代 DB2 通用数据库版本 7 z/OS 版和 OS/390 版。
图 1和
图 2分别显示了简化的 DB2 ULWO 系统结构视图和 DB2 S/390 系统结构视图。
图 1. UNIX、Linux、Windows 和 OS/2 中的 DB2 系统结构
实例和子系统
在 DB2 ULWO 中,
实例提供了一个独立的环境,在这个环境中可以创建数据库对象,也可以针对它们运行应用程序。在创建实例时,到 DB2 代码的链接也被生成。在同一台机器中可以创建多个实例。在 Windows 平台上,您只能安装给定修订包级别的一个 DB2 版本。所以,在 DB2 UDB Windows 版中创建的所有实例将被链接到相同的 DB2 代码。在 UNIX 平台上,您可以在同一台机器中安装 DB2 的几个版本,因为它们被安装在不同的路径;但是每个版本只允许一个修订级。所以,在 DB2 UDB UNIX 版中,您的几个实例可能链接到不同的代码集。
在 DB2 S/390 中,DB2 子系统提供类似于 DB2 ULWO 实例的分开的 DB2 环境。几个 DB2 S/390 子系统可被安装在同一台机器的逻辑分区(logical partition,LPAR)中,它们之间的通信只能通过分布式数据工具(Distributed Data Facility,DDF)。(数据共享为 DB2 子系统一起运行提供了另一种方法,但本文不讨论这个问题。)
在同一个 LPAR 中,您可以安装不同版本的不同 DB2 S/390 子系统。您也可以把版本相同但维护包不同的不同 DB2 S/390 子系统安装到同一个 LPAR。在这两种情况中将用到不同的代码集。例如,您可以把 DB2 S/390 版本 6 的维护包 0112、DB2 S/390 版本 7 的维护包 0106 和 DB2 S/390 版本 7 的维护包 0110 安装在同一台机器的 LPAR 上。在一个 LPAR 中还允许运行同一版本且同一维护包的 DB2 子系统;在这种情况下,DB2 代码被共享。
命名
在 DB2 ULWO 中,您所需的名称有:
-
实例名
实例名唯一地标识了您机器中的实例。如
命令定向中所述,实例名可用于把命令定向到某个 DB2 实例。
-
一个或多个数据库名
与 DB2 S/390 不同,客户机连接到某个数据库而不是子系统。
在使用 TCP/IP 连接到数据库的时候,您还需要实例的 TCP/IP 地址和端口。其它网络协议还需要其它信息。
在 DB2 S/390 中,下面几个名称被用来标识子系统:
-
子系统标识(subsystem ID,ssid)
因为 DB2 是 MVS 的子系统,所以它有子系统名,也就是说,它有 MVS 用来标识它的子系统标识(subsystem ID,ssid)。缺省的 ssid 是 DSN1。命令前缀标识了您所连接的某个 DB2 子系统。您并不连接到某个数据库。您自动地能访问您已获授权的所有的 DB2 数据库。
-
位置名
当您从 DB2 连接(DB2 Connect)机器使用 CATALOG DCS DATABASE 命令时可以指定这个名称,它被称为目标数据库名。它可以有 1 到 16 个字符。
-
LU 名
这个名称被 VTAM 用来识别本地的子系统。这个唯一的名称在连接的系统网络中必须是唯一的,它可以有 1 到 8 个字符。
当您使用 TCP/IP 从 DB2 ULWO 或 DB2 S/390 客户机连接到 DB2 S/390 子系统时,您需要 TCP/IP 地址、子系统的端口以及位置名。
命令定向
在 DB2 ULWO 中,通过设置 DB2INSTANCE 变量的值(
set DB2INSTANCE=<instance name> )或使用先前定义的节点来“连接”到某个实例(
attach to <nodename> ),您可以把命令定向到某个实例。在 DB2 S/390 中,您可以从不同的地点执行 DB2 命令。
START DB2 命令是通常从 MVS 控制台执行的唯一的命令。由于您可以安装不同的 DB2 子系统,所以您需要命令前缀,以使 MVS 知道这个命令应该被应用到哪个 DB2。这个命令前缀最多可以有 8 个字符。缺省值是 -DSN1,其中 DSN1 是 DB2 的缺省 MVS 子系统名。
下面举一个使用命令前缀的示例。如果您想启动某个 DB2 版本 7 子系统而分配给这个子系统的命令前缀是“#”,那么,请您从 MVS 控制台使用命令
#START DB2 。如果您想启动命令前缀是“-”的 DB2 S/390 版本 6 子系统,那么,请您从 MVS 控制台执行命令
-START DB2 。每个子系统在它自己的地址空间中运行并可以并发地运行。
仅当您在可以访问不同 DB2 子系统的地方(例如 MVS 控制台)执行 DB2 命令时,以上命令前缀才是必需的。如果您从一次只连接到一个子系统的应用程序中执行 DB2 命令,那么您不必使用特殊的前缀,除了连字符(-),在那些情况下,您一直应该用连字符。
连接客户机
在 DB2 ULWO 中,您连接到一个实例后可以进行某些管理操作,您
连接到一个数据库后可以进行数据库操作。在 DB2 S/390 中,您连接到子系统后可以进行两种操作:管理操作和数据库操作。所以,(通过 DB2 连接软件和 DDF)连接到 DB2 S/390 的 DB2 ULWO 客户机并不是连接到某个数据库,而是连接到整个 DB2 S/390 子系统。在 DB2 ULWO 中,您必须连接到有自己的编目(catalog)的某个数据库。在 DB2 S/390 中,数据库没有自己的编目,但整个 DB2 子系统有一个编目;所以,当您想访问某个 DB2 S/390 数据库时,实际上您连接到整个 DB2 子系统。
数据库和系统表空间
这部分讲述关于数据库和临时工作空间方面的信息。另外还要简略地描述目录的不同用途。
数据库
在 DB2 ULWO 中,一个实例可以有几个数据库。每个数据库是一个封闭的独立的单元,其中包含它自己的日志、编目和数据库配置文件。您不能对涉及两个不同数据库的表进行查询(除非您使用 Relational Connect 或 DataJoiner®,而这超出了本文的讨论范围)。编目(SYSCATSPACE)、临时空间(TEMPSPACE1)和用户空间(USERSPACE1)都是表空间。当您发出 CREATE DATABASE 命令时,这些表空间被自动创建。
在 DB2 S/390 中,一个 DB2 子系统包含几个数据库。在这个子系统中,数据库之间可以交互。事实上,如
图 2所示,编目(DSNDB06)本身就是一个数据库。工作文件数据库(DSNDB07)对应于 DB2 ULWO 中所用的临时空间。如果用户创建了对象但没有明确地指明这些对象所属的数据库,那么缺省的数据库(DSNDB04)将被用来存储这些对象。DSNDB04 对应于 DB2 ULWO 中的 USERSPACE1。在安装 DB2 子系统时,编目、目录和其它系统结构被一次性创建,与之相反,在 DB2 ULWO 中,每次执行 CREATE DATABASE 时都要创建编目和其它系统结构。
DB2 ULWO 编目表使用 SYSIBM 模式。另外,DB2 ULWO 提供只读编目视图,所用的模式是 SYSCAT。可更新的编目视图用的是 SYSSTATS 模式。DB2 S/390 编目表使用 SYSIBM 限定符。
某些 DB2 S/390 编目表是可更新的,包括某些存放关于数据的统计信息的列。
在 DB2 S/390 结构中,您可以使用来自不同数据库的表进行 SQL 操作。例如,假设数据库 MYDB1 中有一个表叫 TS56692.testtbl,在缺省数据库 DSNDB04 中有一个表叫 DSN8710.emp。那么,您可以执行以下查询:
SELECT B.name, B.salary
FROM TS56692.testtbl A, DSN8710.emp B
WHERE A.id = B.edlevel
|
如果没有联合(federation),那么在 DB2 ULWO 中不能进行这个查询,因为两个表在不同的数据库中。
临时表空间
DB2 ULWO 有两类临时表空间:系统临时表空间和用户临时表空间。您必须一直有一个可用的系统临时表空间,因为它是数据库管理员进行操作(例如连接(join)和排序(sort))的工作区。另一方面,用户临时表空间可以被用来存储已声明的全局临时表。这些表不是持久的,当给定的连接断开或声明它们的应用程序不再运行时,它们就不存在了。
类似地,DB2 S/390 提供两种临时空间。工作文件数据库(DSNDB07 是缺省名)对应于 DB2 ULWO 的系统临时表空间。DB2 S/390 的 TEMP 数据库对应于 DB2 ULWO 的用户临时表空间。TEMP 数据库也被用于服务器端的可滚动游标,所以,如果没有提前创建这个数据库,那么使用这种游标的客户机应用程序可能会出错。在这些平台中,全局临时表的概念是相同的。
目录
DB2 ULWO 有一个数据库目录、一个节点目录和一个 dcs 目录。这些目录包含连接性信息,其功能类似于 DB2 S/390 的通信数据库(communication database,CDB)。请不要混淆目录一词的使用,这里所说的目录与 DB2 S/390 中的目录并不相同。DB2 S/390 目录包含关于子系统的重要信息,它的存储格式是内部格式。它并不是准备给通常的最终用户使用的。
日志记录
为了恢复的需要,DB2 ULWO 使用活动日志和归档日志。它使用 SQLOGCTL.LFH 文件来跟踪它的日志,SQLOGCTL.LFH 和数据库文件(
<instance name>.NODE0000.SQL0000x )被存储在相同的目录中。版本 7 支持双重日志记录功能。DB2 S/390 也有活动日志和归档日志。被称为引导数据集(bootstrap data set,BSDS)的数据集被用来跟踪它的日志。在 DB2 S/390 的许多版本中都有双重日志记录。
数据高速缓存和页面大小
DB2 ULWO 通过使用缓冲区池来提高数据库的性能。在 DB2 ULWO 中,创建新缓冲区池的方法是使用命令
CREATE BUFFERPOOL 。DB2 S/390 有预先定义的缓冲区池,在开始时,多数缓冲区池的大小是零。为了“创建”缓冲区池,您必须使用
altER BUFFERPOOL 命令并把大小设置为大于零。
在 DB2 ULWO 中,您可以在
CREATE TABLESPACE 语句中指定数据页面的大小。在使用这个页面大小的表空间被创建之前,使用正确页面大小的缓冲区池需被创建。在 DB2 S/390 中,
CREATE TABLESPACE 语句并没有可以用来表示页面大小的参数;但是,通过为表空间指定缓冲区池,您隐式地确定了页面大小。
DB2 ULWO 使用扩展存储器(Extended Storage)(您可以用数据库配置参数 ESTORE_SEG_SZ 和 NUM_ESTORE_SEGS 来设置扩展存储器)来提供二级高速缓存;DB2 S/390 使用高性能池(hiperpool)。
配置参数
DB2 ULWO 在实例级(dbm cfg)和数据库级(db cfg)上都有参数。目前,对实例级参数的修改要求您启动再停止 DB2。对数据库级参数的修改要求所有的连接被终止,以使修改在下次连接时生效。在 DB2 S/390 中,这些参数常常被称为“zparm”(它表示参数模块的缺省名称,即 DSNZPARM)。只有一组参数会影响整个 DB2 子系统和它的数据库。您可以通过使用 DSNTIJUZ 作业来为这些参数指定所需的值。在运行时,这个作业将组装和链接-编辑 DSNZPARM 模块和应用程序的缺省模块 DSNHDECP。在启动 DB2 时可以指定组装的 zparm 模块。如果没有指定这个模块,那么将使用名为 DSNZPARM 的模块。在版本 7 以前的版本中,对 zparm 的修改要求重新启动 DB2 S/390(停止再启动),以使新的参数模块装入内存。在版本 7 中,对于某些参数(但不是所有的参数),您仍然要这样做。新命令 SET SYSPARM 使您可以装入新的参数模块而无需重新启动 DB2。
控制查询
DB2 ULWO 使用控制器来监视和限制应用程序针对给定的数据库的活动。有一个带有规则的配置文件,您可以使用 db2gov 命令来启动控制器。类似地,DB2 S/390 使用资源限制工具(Resource Limit Facility,RLF)。您可以使用
START RLIMIT 命令来启动这个工具,规则被存储在数据库 DSNRLST 中。
总结
下面的
表 1总结并比较了本文中描述的系统结构概念。
表 1. 比较 DB2 S/390 和 DB2 ULWO 系统结构
|
DB2 S/390 概念
|
类似的 DB2 ULWO 概念
| | 编目数据库(DSNDB06) | SYSCATSPACE 表空间(tablespace) | | 目录数据库(DSNDB01) | 没有 | | 通信数据库(communications database,CDB),是编目的一部分 | 数据库目录、节点目录和 DCS 目录 | | 活动日志和归档日志概念 | 与 DB2 S/390 中的概念类似 | | 支持双重日志记录 | 支持双重日志记录 | | 引导数据集(bootstrap dataset,BSDS) | SQLOGCTL.LFH | | 使用 -altER BUFFERPOOL 来“创建”预先定义的缓冲区池 | 使用 CREATE BUFFERPOOL 来创建缓冲区池 | | 高性能池(hiperpool) | 扩展存储器(Extended Storage,ESTORE) | | 资源限制工具(DSNRLST) | - DB2 控制器(DB2 Governor)(db2gov)
- 查询巡视器(Query Patroller)
| | 工作文件数据库(DSNDB07) | TEMPSPACE1 表空间(系统临时表空间) | | TEMP 数据库,用于全局临时表 | 用户临时表空间,用于全局临时表 | | 缺省数据库(DSNDB04) | USERSPACE1 表空间 | | 可以执行涉及不同数据库的表的查询 | (如果没有联合(federation))不能执行涉及不同数据库的表的查询 | | 客户机连接到 DB2 子系统,而不是某个数据库 | 客户机连接到数据库 | | DSNZPARM(SET SYSPARM 命令使得 DSNZPARM 模块能在 DB2 启动时被装入内存,但对于某些参数,仍然需要 -stop db2 和 -start db2) | DBM CFG(需要执行 db2stop 和 db2start,以使新的值生效)和 DB CFG(所有的连接需被终止,以使在下次连接时新的值生效) |
关于作者  | |  |
Raul F. Chong是 IBM 多伦多实验室的数据库顾问,他主要和 IBM 商业伙伴(IBM Business Partners)一起工作。Raul 在 IBM 已工作了五年,其中三年做 DB2 技术支持,两年做顾问,专门负责数据库应用程序开发和从其它 RDBMS 迁移到 DB2 的咨询。您可以通过
rfchong@ca.ibm.com与他联系。
|
对本文的评价
|