时间:2021-07-01 10:21:17 帮助过:27人阅读
DB2 提供了一个名为 Design Advisor 的实用程序,可以用它来为特定的查询或工作负载推荐索引。Design Advisor 可以从 DB2 Control Center 中调用,也可以从 DB2 CLP 中使用 db2advis 命令来调用。在 DB2 中,索引是直接与表定义绑定的。例如,当使用 DMS 表空间时,可以用下面的语句指定索引存放在哪个表空间:
de>CREATE TABLE mytable (col1 integer, col2 char(10)) in tbls1 index in tbls2de>
上面的例子表明,表中的数据将存储在表空间 ‘tbls1‘ 中,而索引页将存储在表空间 ‘tbls2‘ 中。但在 Oracle 语法中,CREATE INDEX 语句有一个选项来指定索引存放在哪个表空间。
此外,在 DB2 中,索引一旦创建好,便不能修改索引定义中的任何子句。为了进行更改,需要删除索引,然后重新创建索引。
和在 Oracle 中一样,不同数据库中的 DB2 表、视图和索引可以有相同的名称。相同数据库中的表和视图则必须使用不同的名称,但是允许使用与已有的表或视图相同的名称创建索引。
存储过程、触发器和用户定义函数(UD
在 Oracle 环境中,有很多方法来创建和访问存储过程、触发器和函数。PL/SQL 是 SQL 的面向对象(OO)过程扩展,支持数据操纵(DML)、流控制、变量和常量的声明、过程和函数定义以及 OO 数据类型,例如嵌套表和变长数组(varray)。Oracle 还将 JVM 并入到它的引擎中。在 Oracle 数据库中,可以使用 SQLJ 将存储过程、函数和触发器,作为类来创建、存储和执行。Oracle 还支持 Type 1 至 4 的 JDBC 驱动程序。
DB2 存储过程可以用 DB2 预编译器支持的任何语言编写,包括 Java、C、C++、REXX、Fortran 和 COBOL。但是,我们推荐您使用 SQL Procedural Language(SQL PL),这种语言非常类似于 Oracle 的 PL/SQL。在开发 SQL PL 存储过程时,需要一个 C 编译器,因为这种存储过程首先要转换成 C。存储过程的 C 实现可以提供性能优势,因为代码只需编译一次(在 unfenced 模式下性能优点尤其明显)。但是,在开发这种存储过程时,开发系统上需要一个额外的 C 编译器。在 DB2 将来的版本中,有望出现不需 C 编译器支持的 SQL PL 存储过程。DB2 存储过程开发还利用 Type 1 至 4 的 JDBC 驱动程序来支持 SQLJ 和 Java。
触发器和函数的开发可以使用内联 SQL/PL,这种方法不需要 C 编译器。这种方法支持 SQL PL 语句的一个子集。另外还可以使用 DB2 Development Center Tool 来简化 DB2 存储过程和用户定义函数的创建、构建、调试和部署。
配置文件
传 统上,Oracle 将所有与会话和系统相关的参数存储在一个文本文件中,这种文件通常被称做 initSID.ora。但是,由于这种文本文件不具有持久性,从 Oracle 9i 开始,Oracle 引入了 Server Parameter File(SPFILE),这是一种存储在服务器上的二进制参数文件。它在实例停止之后到启动之前这个过程中是持久存在的。不过,当 SPFILE 不可用的时候,仍然使用 initSID.ora 文件。引入 SPFILE 之前,任何对参数有影响的 ALTER SYSTEM 和 ALTER SESSION 命令都只能在实例或会话活动期间持久。每当数据库实例需要回弹(rebound)时,DBA 都必须手动修改 initSID.ora 文本文件。对于侦听器,网络访问配置通常存储在 listener.ora 中;对于客户机访问,网络访问配置通常存储在 tnsnames.ora 中。
在 DB2 中,配置参数也是存储在实例级和数据库级,在实例级是数据库管理器(database manager) 配置文件,在数据库级是数据库配置文件。这些参数大多数都可以动态地更改,也就是说,不需要为了使对参数值的更改生效而停止并重启实例或者重连所有连接。
如果想在 CLP 中手动更改特定的数据库管理器配置参数,可以使用命令 de>UPDATE DBM CFG USING <parameter name> <new value>de>。
如果想在 CLP 中手动更改特定的数据库参数,可以使用命令 de>UPDATE DB CFG FOR <database name> USING <parameter name> <new value>de>。
这两个命令分别相当于 Oracle 的 ALTER SYSTEM 和 ALTER SESSION。或者,也可以使用 Control Center 查看和修改这些参数的值。如果右键单击一个给定的实例,并选择 Configure Parameters,那么可以看到 图 6 中显示的窗口。
在数据库级,右击一个给定的数据库,并选择 Configure Parameters,则可以看到 图 7 中显示的窗口。
DB2 提供了很多用于配置系统的参数。但是,如果想通过一种容易的方法自动配置系统,那么可以使用 de>autoconfigurede> 命令(或者 Configuration Advisor GUI),它会根据您提供的一些信息将数据库管理器配置参数和数据库配置参数设置成最佳值。图 8 显示了 Configuration Advisor。
除了配置文件外,DB2 通常还为与平台相关的配置使用 DB2 注册表变量。注意,DB2 注册表变量与 Windows 注册表没有任何关系。可以使用命令 db2set 查看和更改这些变量。
连接(网络访问)信息存储在 System 数据库目录、本地数据库目录和节点目录中。这些都是二进制文件,只能用 CATALOG 和 UNCATALOG 命令修改。
内存架构和后台进程
接下来,我们来看看内存架构和后台进程,并且比较一下 Oracle 和 DB2 中内存架构和后台进程的不同之处。
Oracle 中的 System Global Area(SGA)是一组共享内存块,用于存储与实例有关的信息。其中包括语句缓存、重做日志缓冲区和数据缓冲区缓存。Program Global Area(PGA)和 User Global Area(UGA)共享内存块,包含用于服务器进程和用户会话的数据和控制信息。
Oracle 支持在同一台计算机上存在多个实例,但不允许共享后台进程。例如,同一台计算机上的三个实例就需要三组后台进程。因此建议在一台计算机上包含一个数据库、一个实例和多个模式。
DB2 和 Oracle 都使用共享内存块,但是 DB2 与 Oracle 内存架构的实现方式略有不同。由于 DB2 实例可以包含多个数据库,因此存在两个级别的配置。在前一节已经提到,实例级的配置可以在 DBM CFG 文件中完成,而数据库级的配置则可以在 DB CFG 文件中完成。这两个级别上的配置参数都可以进行调整,以调优内存使用情况。后文将更详细地阐述 DB2 的内存结构和不同的后台进程。
Oracle 是在实例和数据库启动时将内存分配给它们的,而 DB2 则是在不同级别上分配内存。这主要是因为 DB2 实例可以包含多个数据库。DB2 中主要有三种内存结构:
在 DB2 for Windows 中,服务器活动是以线程的形式进行的,而在 Linux 和 UNIX 环境中,这些活动是以后台进程的形式来实现的。DB2 有以下几种级别的进程:
要获得对 DB2 进程的完整解释,请参考文章 “DB2 通用数据库进程全接触”。
锁机制
Oracle 中的锁可以是手动的,也可以是自动的。Oracle Lock Manager 可以在行级隐式地锁定表数据,此外也可以使用以下 SQL 语句在事务或会话级覆盖缺省的锁:
de>1. SET TRANSACTION ISOLATION LEVELde>
de>2. LOCK TABLEde>
de>3. SELECT FOR UPDATEde>
Oracle 支持一种称为 Multi-Version Read Consistency 的机制,这是用 undo 段中的 undo 数据实现的。
DB2 实现 ANSI 标准隔离(Isolation)级别,例如未提交读(Uncommitted Read)、游标稳定性(Cursor stability)、读稳定性(Read stability)和可重复读(Repeatable Read)。除非使用未提交读隔离级别,否则用户只能看到已提交的数据。行锁是根据隔离级别隐式地获得的。可锁定的数据库对象有表空间、表和行,但是,只 有表和表空间可以显式锁定。可使用 de>LOCK TABLEde> 命令来锁定一个表,而不是使用缺省的行锁定。
与 Oracle 不同,在 DB2 中,锁是存储在内存中的,而不是存储在数据页中。可以使用 LOCKLIST 数据库配置参数来配置锁可用的内存,而 MAXLOCKS 配置参数则定义用于一个特定应用程序的锁的最大内存。
安全性
Oracle 和 DB2 都是具有基本的和高级的安全特性的安全数据库。Oracle 中有 4 种不同的用户身份验证方法:
身份验证方法是在使用 de>CREATE USERde> 命令创建用户时指定的。Oracle 中有一些 Data Dictionary 视图,其中包含了关于这些用户的信息。
在 DB2 中,用户不是存在于数据库中,而是由操作系统来管理。没有数据库登录信息存放在数据库表中。任何操作系统用户都有可能访问 DB2;但是,除非他们被授予了给定的 DB2 权限或特权,否则他们能做的事情不多。通过 Control Center GUI 很容易授予和撤销权限和特权。不过首先需要将可用操作系统用户或组中的一个用户或组添加到 Control Center。
在 DB2 中没有 “角色(role)” 这个术语。相反,DB2 使用术语 “权限(authority)”,它类似于 Oracle 的数据库角色,DB2 通过权限将特权授予某些组或用户。DB2 支持的权限有:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。
不能使用 GRANT SQL 语句授予 SYSADM、SYSCTRL 和 SYSMAINT 权限。这些特殊的权限只能在数据库管理器配置文件中设置。
DB2 还使用术语 “特权(privilege)”,它类似于 Oracle 的系统和模式对象特权。DB2 中有数据库特权(连接、创建表等)和数据库对象特权(模式、表、视图等)。图 11 显示了从 Control Center GUI 获得的 DB2 安全性信息。Change User 窗口中显示的大部分选项卡对应了 DB2 所支持的特权。
Oracle 10g 的安全性大体上没有变化,只有部分增强。下面是 Oracle 10g 中的增强的列表:
DB2 中的身份验证不仅涉及对用户名和密码进行加密,还允许对客户机与服务器之间传输的数据进行加密。身份验证的位置由数据库管理器配置参数 AUTHENTICATION 的值决定。
下面是用于启用 DB2 的身份验证的有效选项:
若要更新 AUTHENTICATION 实例参数,例如将它的值设置为 DATA_ENCRYPT,可以使用以下命令:
|
DB2 提供了基于标签的访问控制(Label Based Access Control,LBAC)机制,从而进一步扩展了安全性。 LBAC 特性为控制对各行和各列的读写访问提供了更大的粒度。 DB2 中提供了一种新的安全管理员角色(SECADM),用于操纵 LBAC 对象。
试图访问一个对象的用户必须被授予该对象的安全标签。如果安全标签匹配,则允许访问;如果不匹配,则拒绝访问。 实现 DB2 中的 LBAC 安全性基本上有三个步骤:
除了特权和权限外,数据库安全性还包含其他方面。简单地说,Oracle 与 DB2 之间既有不同点,也有相同点:
用户身份验证和授权
Oracle 在创建用户之后,使用存储在目录中的加密密码。DB2 支持用于用户身份验证的密码,并使用底层的操作用户进行身份验证。Oracle 和 DB2 都支持 LDAP (Oracle Internet Directory 与 IBM Directory Server)。Oracle 和 DB2 都支持单点登录(SSO)。
数据加密
Oracle 支持数据加密,它可以对敏感数据,例如信用卡号和一些高度敏感的商业数据进行加密。DB2 允许列级的数据加密。
网络加密
Oracle 通过它的 Oracle Advanced Security 提供网络加密。Oracle 使用 DES、3DES 和 RC4 业界标准加密。DB2 本身不进行网络加密。但可以使用附带的 Tivoli SecureWay 实现网络加密。
审计跟踪
Oracle 允许审计跟踪用户和对象。还可以使用日志挖掘程序调查和分析有疑问的查询。DB2 也提供了类似的审计设施。在 DB2 中,可以使用 db2audit 实用程序进行审计跟踪。
DB2 9 pureXML 特性
在本节中,我们将 Oracle 对 XML 的支持与 DB2 对 XML 的支持进行比较。 Oracle XML DB 特性随 Oracle 9i Release 2 一起发布,借助该特性,通过定义 XMLTYPE 表和列,将它们存储为 CLOB 或拆分(分解)到关系表中,可以实现对 XML 存储、检索和模式的管理。 Oracle 10g 为管理 XML 文档提供了一些增强。例如,通过映射已有的数据,可以动态地反映模式的更改,而不必重新导入。Oracle 10g 包括一些工具包,例如:
Oracle 10g 仍然是一种 支持 XML 的 数据库。它提供的所有接口、API 和包,都是为了减轻 XML 与关系表之间的相互转换和映射所带来的负担、复杂性和维护。支持 XML 的数据库,不管是使用 CLOB 还是分解方法,都不能提供良好的性能。例如,在使用 CLOB 的情况下,XML 文档作为镜像文件存储在数据库中。您可能已经知道,镜像文件的管理是很麻烦的。分解方法在性能方面也不如人意。将一个 XML 文档分解成小块并存储在多个表中之后,当需要将 XML 文档组合成原样时,就不得不使用一个 SQL JOIN 操作。SQL 中的 JOIN 是开销很大的,特别是表的数量较多时这一点尤其明显。保持数字签名的保真度同样也是一个挑战。
另一方面,DB2 9 pureXML 技术则是原生存储 XML 文档,也就是说,在内部以树型格式存储 XML 文档。它还允许同时使用 SQL 和 XML 扩展,即 Xquery 和 Xpath 来访问关系数据和 XML 数据。原生存储 XML 文档是一种更好的方法,IBM 的研究表明,使用该方法在 XML 文档的搜索和检索方面可以取得更好的性能,并且能减少某些程序中代码的行数。
要在数据库中使用 pureXML 特性,在创建数据库时要使用 UNICODE(例如使用编码集 UTF-8)。在创建一个表之前,如果没能创建一个 UNICODE 数据库,则会产生如下所示的错误:
SQL1239N XML features can only be used in a Unicode database with a single database partition. SQLSTATE=42997 |
DB2 与之前版本一样存储关系数据。但是,XML 数据是以分层格式存储的(作为使用 Xquery 数据模型的一棵树)。XML 与关系服务之间是紧密集成的。为了存储 XML 文档,用户需要创建一个表,并指定一个列使用一种新的数据类型,即 XML,如下面的例子所示。
|
下图展示了这两列的显示效果:
由于 XML 文档是以解析的分层格式存储在 XQuery Data Model (XDM) 中的,因此不需要进行转换或映射。用于存储 XML 文档的格式就是用于处理 XML 文档的格式。这样可以提供更好的性能。
备份、恢复、导入等实用程序对含 XML 列的表的作用与其他表是一样的。可以使用 INSERT 语句或 IMPORT 实用程序(注意:DB2 LOAD 实用程序还不支持 XML)将 XML 数据插入 XML 列。在导入来自第三方的 XML 文档之前,最好根据一个预定义的 XML 模式验证这些文档。 为了注册一个 XML 模式,DBA 需要执行 REGISTER XML SCHEMA 命令,并以 COMPLETE XML SCHEMA 结束,以完成注册过程。 DB2 9 还支持在一个 XML 文档的子集或整个文档上创建索引。在创建索引时,需要指定 XPATH,它将指向被建索引的特定元素/属性。
在 DB2 9 中,有四种方法来访问关系数据和 XML 数据,如 图 13 所示:
表 3 比较了 DB2 9 与 Oracle 10g 的 XML 功能。
XML 功能 | Oracle 10g | IBM DB2 9 for Linux, Unix and Windows |
---|---|---|
支持 XML 的存储 | √ | 不适用 |
XML 原生存储 | × | √ |
大环境的易维护性 | × | √ |
高度可伸缩性 | × | √ |
将 XML 文档存储为 CLOB | √ | √。但是从长远看,鼓励使用 XML 原生存储 |
分解 | √ | √。但是从长远看,鼓励使用 XML 原生存储 |
要看到更深入的讨论,可以在 developerWorks 上找到更多关于 IBM pureXML 功能的文章,例如 使用 XQuery 查询 DB2 XML 数据 和 使用 SQL 查询 DB2 XML 数据。
表分区
DB2 的表分区(即区域分区)类似于 Oracle 的分区。它基本上允许将一个逻辑表拆分成跨一个或多个表空间的多个物理存储对象。每个对象对应于一个 “分区”,允许每个表空间包含一定范围的、很容易访问的数据。
在 DB2 中,有多种方法对数据进行分区,您可以同时将这些方法应用于相同的数据。为了避免读者感到困惑,下面简单地解释一下提供这种分区的各种不同方法:
利用 DB2 9 中新引入的表分区特性,可以根据一个或多个表列中的特定值将表数据划分到不同的表空间。 这些分区可以独立地进行备份和恢复,可以提高某些查询的性能,因为 DB2 优化器知道这些分区的存在,并且可以避免对查询中不需要的分区进行扫描。例如,如果按一年的四个季度对表进行分区,并且查询只需要第 4 季度的数据,那么 DB2 将不解析前三个季度,而是直接找到第 4 个季度并解析之。这被称作分区排除(partition elimination)。
如前所述,在 DB2 9 中,数据组织的三种方法,即数据库分区(Database Partitioning)、表分区(Table Partitioning)和多维集群(Multi Dimensional Clustering)可同时使用。
下面的例子创建一个 customer 表,其中 l_shipdate >= ‘01/01/2006‘ 且 l_shipdate
<= ‘03/31/2006‘ 的行存储在表空间 ts1 中,l_shipdate >= ‘04/01/2006‘ 且
l_shipdate <= ‘06/30/2006‘ 的行存储在表空间 ts2 中,依此类推。更详尽的解释可以参阅
developerWorks 文章 Table partitioning in DB2 9。
清单 3. 将一个表按区域分区
|
行压缩特性
Oracle 提供了两种压缩特性:一种是索引级压缩,另一种是表级压缩。如果对这些特性没有适当的规划,就会对性能产生不良影响。
Oracle 从版本 8i 开始就引入了索引压缩。可以压缩的索引有 bitmap、btree 和索引组织的表。索引压缩使用起来很简单。例如,要用压缩特性创建一个索引,可以使用如下代码:
清单 4. 用压缩特性创建索引
|
|
另一方面,表压缩是在 Oracle 9i release 2
中引入的。它可以用于压缩整个表、表分区和具体视图。压缩可应用于所有分区或部分分区。 虽然表压缩也可以用于未分区的表,但是在 OLTP
工作负载中将表压缩应用于未分区的表并不可取,因为插入和更新性能会受到影响。在 Oracle
表压缩中,数据库块中重复的值将被去除,信息将被存储起来,以便在块中重新创建未压缩的数据。 下面的例子展示了如何用压缩特性创建分区表。
清单 6. 用压缩特性创建表
|
至于 DB2,在 DB2 9 之前就有一些压缩方法,但是,行压缩是在 DB2 9 中才引入的。行压缩要求创建一个目录,用于存储重复模式或条目以及数字键。压缩算法足够智能,不会压缩那些对节省磁盘空间帮助不大的行。
DB2 的行压缩不像 Oracle 的键压缩,它不需要指定键。
可以通过 CREATE TABLE 或 ALTER TABLE 命令在表级进行压缩。例如:
清单 7. 用 COMPRESSION YES 创建/修改表
|
为了在 DB2 Control Center 中取得相同的效果,在列定义过程中(表创建向导中的第二步),应确保选中面板底端的复选框 Store table data in a compressed format(如下图所示)。
只有在执行 REORG 的时候才构建表字典,之后便可以压缩表中的数据。在随后的每次 REORG 操作中,表字典随之更新。被压缩的数据同时存放在磁盘上和内存中,DB2 还压缩存储在日志文件中的用户数据,以便减少日志文件大小。
注意,分区表的每个分区可以有不同的压缩字典,在 DPF 中的一个表的每个分区也可以有不同的压缩字典。
除了数据行压缩,DB2 9 提供的其他压缩机制还包括:
自治特性
从 Oracle 9i 到 10g,Oracle 在调优方面作了一些改进。Oracle 将以下方面的调优进行了自动化:
Oracle 还提供了一些 advisor,例如 segment advisor 和 undo advisor。segment advisor 根据对象内的空间拆分程度给出是否可以对一个对象执行新的在线压缩操作的建议。而且,这个 advisor 还给出关于段的历史增长趋势的报告,特别是能为容量规划提供有效的信息。 另一方面,Undo Advisor 则帮助管理员在调整 flashback 和非 flashback 中的表空间的大小时作出正确的判断。它为管理员适当地设置 UNDO_RETENTION 提供建议,以避免快照过于陈旧的问题。
DB2 9 引入了一些新的自治增强。例如,DB2 9 引入一种新的自调优内存特性(使用 self_tuning_mem 数据库配置参数),该特性自动地设置一些内存配置参数的值,从而简化了内存配置任务。自动调优器充当调度器的角色,它算出可用的内存资源,动态地将它们分 发给数据库的一些内存消费者。
除了自调优内存,DB2 9 还引入了下面提到的其他一些增强。这份列表并不完整,但是其中列出的都是重要的增强。
自动配置
DB2 8 引入了 Configuration Advisor,它可以检测系统和数据库的特征 —— CPU、内存、数据库大小、表的数量等,并为配置参数给出建议的值。DB2 9 则更进一步 —— 它在数据库创建之后自动运行 configuration advisor,并缺省地做出一些基本的调优决定。例如,它配置缺省缓冲池的大小、I/O 清理程序和 I/O 服务器等。 这种初始的自动调优意味着,同使用之前缺省的数据库配置参数值创建的数据库相比,现在的数据库将拥有更好的性能,并且有更好的即开即用性。
自动数据统计信息收集
缺省情况下,DB2 9 还允许对某些进行中的任务进行自动化。通过该特性,DB2 确定需要哪些统计信息,以及哪些统计信息需要更新,然后自动在后台执行 RUNSTATS 实用程序。
自动存储管理
DB2 9 扩展了在 DB2 V8.2.2 中首次引入的自动存储特性。自动存储自动增长跨磁盘和文件系统的数据库的大小,由于它是自动增长数据库大小的,因此 DBA 不需要管理存储容器。当在 DB2 9 中创建数据库时,自动存储管理特性是缺省地启用的。
自动表和索引重组增强
自动重组是从 8.2 版开始引入的。但是,DB9 对其加以增强,从而允许做以下事情:
工具
我们来看看不同领域的一些工具,例如数据库创建和维护、网络、管理 GUI、性能调优、数据移动和备份恢复工具。图 15 显示了这些 DB2 9 GUI 工具。
让我们看看类似的任务在 Oracle 和 DB2 9 中分别是怎样执行的。
数据库创建和维护
Oracle 提供了 Database Configuration Assistant(dbca)作为创建数据库的 GUI 工具。对于数据库维护,Oracle 提供了 Oracle Enterprise Manager。DB2 数据库则可以通过 DB2 Control Center 创建和维护。
网络
Oracle 提供了 Network Configuration Assistant(netca)来进行网络配置。或者,也可以使用 Oracle Network Manager 来配置服务名、侦听器、配置文件和 Oracle 名称服务器。DB2 则使用 CATALOG 命令来编目节点和数据库。此外还可以使用 DB2 命令行或 DB2 Configuration Assistant GUI 进行编目。
管理
Oracle Enterprise Manager 提供了针对管理员日常任务的广泛管理功能。DB2 Control Center 也提供了和 Oracle Enterprise Manager 类似的功能。除了 DB2 Control Center 外,还可以使用 DB2 命令行处理器来发出 DDL 和 DML 语句。该实用程序类似于 Oracle 的 SQLPLUS 实用程序。图 16 显示了 DB2 命令行处理器。
还可以在 Command Center 中发出命令,如 图 17 所示。
性能调优
Oracle Enterprise Manager 附带有 Change Management Pack、Tuning Pack 和 Diagnostic Pack。DB2 则提供了 Event Analyzer、Health Center、Indoubt Transaction Manager 和 Memory Visualizer 作为性能调优任务的 GUI 工具。
数据移动
Oracle 提供了 SQL Loader(sqlldr)用于以定界文本格式装载数据。Import(imp)和 export(exp)可用于执行逻辑导入和导出。DB2 提供了类似的导入、导出和装载实用程序。对于跨平台的数据移动,DB2 提供了 db2move 实用程序。
备份和恢复
Oracle 提供了 Recovery Manager 作为热备份的选项。在 DB2 中,可以使用 backup 命令或 DB2 Control Center 备份数据库。
Oracle 10g Enteprise Manager 附带了新的性能概要表。增强的 Oracle Enterprise Manager HTML 界面为所有与数据库性能相关的统计信息提供了一个集中的访问点,为全面的监控和诊断提供了方便。
除了随 DB2 UDB version 8 发布的界面外,DB2 9 还引入了一种全新的免费应用程序开发工具,这个工具叫做 DB2 Developer Workbench(DWB),它是基于 Eclipse 框架的。这个工具可以单独下载,也可通过光盘获得,它替代了 DB2 8 的 Development Center。 DWB 是用于创建、编辑、调试、部署和测试 DB2 存储过程和用户定义函数的一站式中心。此外,还可以使用 DWB 来开发 SQLJ 应用程序,以及创建、编辑和运行 SQL 语句和 XML 查询。
DWB 有一些用于开发 DB2 业务对象的视图,例如:
除了 DB2 8 的 Development Center 的功能外,新的 Developer Workbench 还包括对迁移报告、比较例程、XML 函数和使用 XQuery Builder 构建 XQuery 查询等等的支持。 现在可以从网站下载DB2 Developer Workbench 。
要了解关于 DB2 Developer Workbench 的更详细的信息,请阅读 developerWorks 中的这篇 教程。 要得到更详尽的示例和特性,请参考 developerWorks 中的文章 DB2 9 入门: 应用程序开发方面的增强。
图 18 展示了如何使用 DWB 创建存储过程:
结束语
在 本文中,我们借助您当前已有的关于 Oracle 10g Release 2 的知识,对 DB2 9 for Linux, UNIX and Windows 进行了介绍。我们简要地描述了 DB2 9 架构、后台进程、内存模型、安全性、工具等方面。Oracle 与 DB2 9 之间有很多类似之处,我们也指出了它们之间的一些不同之处,以便您能借助已有的知识,在 DB2 9 中获得成功。
表 3 总结了我们讨论过的 Oracle 与 DB2 9 之间的相同点与不同点。
表 3 —— Oracle 与 DB2 9 概念总结Oracle | DB2 9 | 注解 |
实例 | 实例 | 一个 DB2 实例可以包含多个数据库 |
数据库 | 数据库 | |
initSID.ora 或 SPFILE | DBM CFG 和 DB CFG | DB2 使用两个级别的配置:Database Manager Configuration(DBM CFG)(实例级)和 Database Configuration(DB CFG)(数据库级)。与 Oracle 一样,很多配置参数可以动态更改 |
表空间 | 表空间 | DB2 支持 SMS 和 DMS 这两类表空间。DMS 表空间与 Oracle 的表空间类似 |
数据块 | 页 | DB2 支持以下几种页大小:4k、8k、16k 和 32k。一个行必须能够装入其中一种数据页内。它不能像在 Oracle 中那样跨多个页 |
盘区 | 盘区 | |
数据文件 | DMS 表空间容器 | 用于 DMS 表空间的容器可以是原始设备,也可以是文件 |
重做日志文件 | 事务日志文件 | |
数据缓冲区 | 缓冲池 | DB2 没有一组预定义的缓冲池,但是可以根据需要创建足够多的缓冲池。在创建具有给定页大小的表空间时,必须预先存在一个具有给定页宽的缓冲池 |
SGA | 数据库管理器共享内存和数据库共享内存 | |
数据字典 | 编目 | |
库缓存 | 包缓存 | |
大型池 | 实用程序堆 | |
数据字典缓存 | 编目缓存 | |
SYSTEM 表空间 | SYSCATSPACE 表空间 |
DB2和Oracle区别
标签:长度 des 包含 也有 tree 所有者 行存储 linu 行锁