| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,外语很重要,最新的编程技术还是在国外  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 数据库 >> db2 >> db2product >> 文章正文
DB2 UDB for Linux、UNIX 和 Windows V8        【字体:
DB2 UDB for Linux、UNIX 和 Windows V8
作者:-    文章来源:-    点击数:    更新时间:2006-4-22
Suita Gupta, IBM Malaysia
Allan Tham, IBM Malaysia
Raul Chong, IBM Toronto

2004 年 2 月
如果您是一位有兴趣培养 DB2 Universal Database 技能的数据库专家,那么您很可能具备了其他关系数据库产品的数据库技能。本文展示了如何利用您现有的 Oracle 9i 的知识快速获得 DB2 UDB for Linux、UNIX 和 Windows Version 8 方面的技能。

简介
如果您是一位有兴趣培养 DB2 Universal Database TM技能的数据库专家,那么您很可能已经具备了其他关系数据库产品的数据库技能。在 developerWorks 里的上一篇文章中,我谈到了如何利用您的 MS SQL Server 2000 技能来学习 DB2 UDB for Linux、UNIX 和 Windows。您熟悉的是 Oracle 而非 SQL Server 吗?如果是的,就请阅读下去。这一篇文章中,我将展示如何利用您现有的 Oracle 9i 的知识快速获得 DB2 UDB for Linux、UNIX 和 Windows Version 8 方面的技能。

本文中,术语“Oracle”指的是 Oracle 9i Release 2,“DB2 UDB”指的是 DB2 UDB for Linux、UNIX 和 Windows Version 8。

系统结构概述
首先,我们需要理解 Oracle 所使用的体系结构以及如何将之与 DB2 UDB 相比较。 图 1展示了 Oracle 的系统结构。 图 2展示了 DB2 UDB 的系统结构,请将两者做一下比较。请参照这些图来阅读本文以便理解。

图 1. Linux、UNIX 和 Windows Version 9.2 上的 Oracle 系统结构
图 1. Linux、UNIX 和 Windows Version 9.2 上的 Oracle 系统结构

图 2. Linux、UNIX 和 Windows Version 8 上的 DB2 UDB 系统结构
图 2. Linux、UNIX 和 Windows Version 8 上的 DB2 UDB 系统结构

实例
实例(instance)的概念在 Oracle 和 DB2 UDB 中是相似的。在这两种情况下,实例都是指后台进程与共享存储器的组合。两者之间最大的差别就是,Oracle 中每个实例只包含一个数据库,而 DB2 UDB 中多个数据库可以共享一个实例。

因为数据库和实例之间存在一对一的对应关系,所以在 Oracle 中要通过用 CREATE DATABASE 命令创建数据库来显式地创建实例。另外,您也可以使用 Database Configuration Assistant(数据库配置助手)或 ORADIM 工具(Oracle 9i 中提供的新选项)在机器上创建 Oracle 实例。您还必须提供某些信息,包括系统标识符(System Identifier,SID)或服务名、实例口令、最大用户数、启动模式,等等。同样,可以使用带有 DELETE 选项的 ORADIM 工具来删除该实例。您也需要传递 SID 或服务名。除非您在安装过程中创建新的数据库,否则新安装 Oracle 时是不会创建默认实例的。

在 DB2 UDB 中,当将产品安装在 Windows 平台之后,将默认地创建“DB2”实例。Linux 和 UNIX 中,其默认实例名为“db2inst1”。若要在同一台机器上创建另一个实例,您只需执行命令 db2icrt <instance name>

图 3显示了 DB2 UDB Control Center GUI 中默认的 DB2 UDB 实例“DB2”(Windows 中)和用 db2icrt 命令创建的其他两个实例。

图 3. 显示有 DB2 UDB 实例的 DB2 UDB Control Center GUI
图 3. 显示有 DB2 UDB 实例的 DB2 UDB Control Center GUI

要从命令行接口引用一个给定的 DB2 UDB 实例,请使用 DB2INSTANCE 环境变量。该变量让您指定所有命令将应用到的当前的活动实例。例如,如果将 DB2INSTANCE 设置成 PROD,然后您发出 create database MYDB1 命令,那么您将创建和实例 PROD 关联的数据库。如果您想在实例 DB2 上创建该数据库,则必须首先将变量 DB2INSTANCE 的值更改为 DB2。这与 ORACLE_SID(System Identifier)类似,它也是用于在实例之间进行切换。

标识您想使用的实例的另一个简单方法是使用如 图 3所示的 DB2 UDB Control Center GUI。您可能必须通过右击 Instances并选择 Add 来将实例添加至 GUI 中,才能在该工具中看到这个新实例的条目。您可以执行命令 db2idrop <instance name> 来删除 DB2 UDB 中的实例。

总而言之,在 Oracle 中,Database Configuration Assistant 可用于创建、修改、启动、停止和删除实例,而在 DB2 UDB 中,则可使用 Control Center GUI 来达到类似的目的。另外,Oracle 实例与数据库只能有一对一的关系,而在 DB2 UDB 中就不是这样的。多个数据库可以存在于一个 DB2 UDB 实例中并且可被其同时使用。

数据库
在 Oracle 中,既可以使用 CREATE DATABASE 命令手工创建数据库,也可以使用 Database Configuration Assistant 来创建。手工创建数据库在执行 CREATE DATABASE 命令之前,还必须执行一系列步骤,包括设置 OS 变量、准备参数文件以及创建口令文件。

元数据信息由数据字典(Data Dictionary)存储并管理,而数据字典是由基本表以及相应的视图组成的。基本表是在数据库的创建过程中自动创建的,而视图则是通过运行 catalog.sql 和 catproc.sql 脚本构造的。

因而,将 Oracle 数据库看作 3 种文件类型的集合:

  1. 数据文件(Data File):包含真正的数据,即数据库的物理实现(类似于 DB2 UDB 中的容器)。
  2. 重做文件(Redo File):相当于 DB2 UDB 中的事务日志。
  3. 控制文件(Control File):包含用以维护和验证数据库完整性的信息。

正如图 2 所示,在 DB2 UDB 中,一个实例可以容纳多个数据库。每个数据库是真正封闭、独立的单元。每个数据库都有自己的目录表空间、临时表空间和用户表空间,它们是随数据库的成功创建而被默认创建的。DB2 UDB 包含了一个称作 系统数据库目录(system database directory)的二进制文件,里面有您可以从 DB2 UDB 机器连接的所有数据库的条目。这个目录在实例级别保存。

当创建一个实例时,默认情况下不创建数据库。您需要使用 create database 命令显式地创建数据库。您也可以使用如 图 4和 图 5所示的 Control Center 来创建数据库

图 4. 使用 Control Center GUI 创建 DB2 UDB 数据库
图 4. 使用 Control Center GUI 创建 DB2 UDB <a class='Channel_KeyLink' href='http://www.enadd.com/alldatabase/Index.html'>数据库</a>

图 5. 使用 Control Center GUI 创建 DB2 UDB 数据库(续)
图 5. 使用 Control Center GUI 创建 DB2 UDB <a class='Channel_KeyLink' href='http://www.enadd.com/alldatabase/Index.html'>数据库</a>(续)

在 图 5中,您也可以看到单击 Show Command时会发生什么情况。所有的 DB2 UDB Control Center GUI 屏幕都会显示实际上在后台执行的 SQL 语句或命令。这些命令能够保存在脚本中以供今后执行,或者被复制并从命令行处理器(Command Line Processor,CLP)工具或 Command Center GUI 工具中执行。这两个工具分别等同于 Oracle 的 SQL*Plus 和 iSQL *Plus。

可以通过使用“DROP DATABASE”命令或者从 DB2 UDB Control Center GUI 删除 DB2 UDB 数据库。Oracle 中没有这样的命令,所以是通过删除所有关联的数据文件来删除数据库的。

一个实例内的数据库通常不会相互交互。然而,如果应用程序需要与不止一个数据库交互,那么可以通过启用 联邦(federation)支持来满足此要求。请参阅 参考资料小节来获取有关联邦的一篇文章。

容器、表空间、缓冲池和页
在 Oracle 中,数据实际存储于称作数据文件的文件中。这类似于 DB2 UDB 的 容器,它也是数据实际存储的地方。每个 Oracle 数据库包含一个名为 SYSTEM 的表空间,是在创建数据库时由 Oracle 自动创建的。而用户、临时和索引数据的其他表空间需要在创建了数据库之后创建,并且在使用这些表空间之前要给它们指派用户。

在 DB2 UDB 中, 表空间(table space)是逻辑对象,用作逻辑表和物理容器之间的层。当创建一个表空间时,您可以将之和一个特定的缓冲池(数据库高速缓存)关联起来,并关联到特定的容器。这就给了您管理性能上的灵活性。例如,如果存在一个“热门”表,您就可以在一个单独的表空间中定义它,而这个表空间又关联到独立的缓冲池。这样有助于确保该表的数据连续高速缓存在内存中。

当使用 CREATE DATABASE 命令的默认值创建数据库时,DB2 UDB 中将自动创建三个默认的表空间。 表 1描述了默认的 DB2 UDB 表空间:

表 1. 当用默认值创建数据库时,默认创建的 DB2 UDB 表空间
表空间名称 描述
SYSCATSPACE 包含元数据的目录表空间
TEMPSPACE1 用于执行诸如连接和排序操作的系统临时表空间。该表空间的名称可以更改
USERSPACE1 这个表空间是可选的,用于在创建表时没有显式指定表空间的时候存储用户表
文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • Windows Version 8 的生动介…

  • 数据集市: 第 2 部分

  • 让数据挖掘工作起来

  • 痛苦的遗忘——给应用程序开…

  • 一起使用 DB2 Information I…

  • SQL Server 2000 技能来学习…

  • Windows 中的 Java 开发概述…

  • 如何为 DB2 Cube Views 构建…

  • 联邦 - 数据库互操作性(第…

  • 哪一个分布式 DB2 UDB V8 版…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |