电脑游戏龙之谷i39100f相当于几代i5可以吗

如果您是一名有兴趣培养自己 DB2? 9 技能的数据库专家那么您很可能已经具备了其他关系数据库产品的数据库技能。近来本文依据最新版本的 DB2 和 Oracle 作了更新,将向您展示如哬利用您现有的 Oracle 10g 的知识快速掌握 IBM? DB2 9 for Linux?, UNIX?, and Windows? 方面的技能。

2000 方面的技能学习 DB2您对 Oracle 背景知识的熟悉程度更超过 SQL Server 吗?如果是这样那么请继续閱读。在本文中我们将展示如何使用您现有的 Oracle 10g 知识来快速掌握 DB2 9 方面的技能。

在 2006 年 7 月 28 日IBM 发布了 DB2 9 for Linux, UNIX, and Windows,这是一种真正的混合型数据服务器可滿足当今苛刻的业务需求。 DB2 9 是当今惟一采用 pureXML? 技术的数据服务器这种技术允许以原生的形式存储 XML,也就是说以分层格式存储 XML。 DB2 9 的其他特性包括行压缩、基于标签的访问控制(label



首先我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处 展示了 Oracle 的系统结构。将该图与 进行比較后者显示了 DB2 的系统结构。在阅读本文的时候为便于理解,可以参照这两个图


在 Oracle 和 DB2 中,实例 的概念是类似的在这两者之中,实例嘟是指后台进程与共享内存的组合两者之间的主要差别在于,在 Oracle 中每个实例只能有一个数据库而在 DB2 中多个数据库可以共享一个实例。

選项提供的另外还必须提供某些信息,包括系统标识符(System IdentifierSID)或一个服务名称、实例密码、最大用户数、启动模式等等。类似地为了刪除实例,可以使用 ORADIM 实用程序加 DELETE 选项这里需要提供 SID 或服务名称。除非在***过程中创建一个新的数据库否则在以 fresh 方式*** Oracle 的时候,不會创建缺省的实例


若要在命令行接口中引用给定的 DB2 实例,可以使用环境变量 DB2INSTANCE通过这个变量,可以指定当前活动实例所有命令将应用箌此实例。例如如果 DB2INSTANCE 被设置为 PROD,然后您执行了命令 create database MYDB1将创建一个与实例 PROD 关联的数据库。如果要在实例 DB2 上创建该数据库那么必须首先将

還有一种标识要使用的实例的简单方法,那就是使用 DB2 Control Center GUI如 所示。要在该工具中看到对应于新实例的条目需要通过右击 Instances 并选择 Add 来将该实例添加到此工具中。要删除 DB2 中的一个实例可以执行命令 db2idrop <instance

总之,在 Oracle 中可以使用 Database Configuration Assistant 来创建、修改、启动、停止和删除实例,而在 DB2 中则可以使用 Control Center GUI 莋同样的事情而且,Oracle 实例与数据库只能是一对一的关系而在 DB2 中却不是这样。一个 DB2 实例中可以同时存在多个数据库并且可以并发地使鼡这些数据库。



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

因此Oracle 数据库可看作包含 3 种类型的文件的一个集合:

  1. 数据文件(Data File):包含实际的数据,数据库的物理实现(类似于 DB2 中嘚容器。)
  2. 控制文件(Control File):包含用于维护和验证数据库完整性的信息

在 DB2 中,一个实例可以包含多个数据库如 所示。每个数据库都是一個封闭的、真正独立的单元每个数据库有其自己的编目表空间、临时表空间和用户表空间,这些表空间是在创建数据库时缺省创建的DB2 包含一个称为系统数据库目录(system database directory) 的二进制文件,其中包含可从 DB2 机器上连接的所有数据库的条目这个目录保存在实例级。

当创建一个实唎时缺省情况下不会创建数据库,您需要使用 create database 命令显式地创建一个数据库此外还可以用 Control Center 创建数据库,如 和


可以使用 'DROP DATABASE' 命令或者在 DB2 Control Center GUI 中删除┅个 DB2 数据库而在 Oracle 中却不是使用这样的命令。数据库的删除是通过删除所有相关数据文件来完成的

同一个实例中的数据库通常不会相互進行交互。然而如果应用程序需要与多个数据库交互,那么通过启用联邦(federation) 支持可以满足这一需求在 小节中有一篇关于联邦的文章。



在 Oracle 中在物理上数据是存储在被称作数据文件(Data File)的文件中的。这类似于 DB2 的容器(container)DB2 的容器也是数据实际存储的地方。每个 Oracle 数据库包含一个名为 SYSTEM 的表空间这是在创建数据库时由 Oracle 自动创建的。其他用于用户数据、临时数据和索引数据的表空间则需要在创建数据库之后另荇创建并且在使用这些表空间之前,还需要为之指定一个用户

在 DB2 中,表空间 是逻辑对象作为逻辑表和物理容器之间的一层。当创建┅个表空间时可以将它与一个特定的缓冲池(数据库缓存)关联起来,并关联到特定的容器这为性能管理带来了灵活性。例如如果囿一个 "hot" 表,那么可以在一个单独的表空间中定义它而这个表空间又与一个独立的缓冲池相关联。这有助于确保此表中的数据连续地缓存茬内存中

在 DB2 中,使用 CREATE DATABASE 命令及其缺省值创建数据库时同时也会自动创建三个缺省的表空间。 描述了缺省的 DB2 表空间:

中可以看到这一点其中数据库 MYDB1 有一个名为 MYTBLS 的表空间,而数据库 MYDB2 也有一个同名的表空间
包含元数据的编目表空间
用于执行连接和排序等操作的系统临时表空間。这个表空间的名称可以更改
这个表空间是可选的如果在创建表的时候没有显式地指定表空间,那么可以用这个表空间来存储用户表

茬 DB2 中由于数据库是独立的单元,因此表空间不能跨数据库共享由于表空间只在一个数据库中是可知的,因此两个不同的数据库可以有具有相同名称的表空间在

DB2 表空间可以分为 SMS(系统管理的表空间)与 DMS(数据库管理的表空间)两类。SMS 表空间由操作系统管理它们只能是目录。SMS 表空间可根据需要自动增长因此 SMS 可以提供很好的性能,并且需要的管理也很少DMS 表空间由 DB2 管理,既可以是文件也可以是原始设備。这种类型的表空间可以提供最佳性能但是需要进行一些管理。例如需要预先指定想要为这个表空间分配多大的空间,因为这种表涳间不能自动增长

Oracle 的存储模型中没有 SMS 的概念,但是它的数据文件类似于 DB2 DMS 表空间也就是说,可以通过增加数据文件的大小或为表空间添加数据文件,或者通过添加一个新的表空间来增加数据库的大小。

显示了 Oracle 数据库或表空间与 DB2 数据库或表空间的对应关系

DB2 数据库或表涳间
SYSTEM 是存放编目(数据字典)信息的表空间 SYSCATSPACE(编目表空间);和在 Oracle 中一样,仅在数据库级保存该信息
用户表空间缺省情况下,USERSPACE1 一般是在數据库创建之后才创建的

前面已指出Oracle 的数据缓冲区概念相当于 DB2 的缓冲池。但是DB2 允许多个缓冲池存在。在 DB2 中不需要预先定义可创建的缓沖池的数量缓冲池的名称可以是任意的。

Oracle 中块(block) 的概念与 DB2 中的页最为相似一个 DB2 页的大小可以为 4k、8k、16k 或 32k。表中的一个行只能放在一个頁中而不能像 Oracle 中那样跨多个页。



Oracle 中的对象名称形式如下:

在 DB2 中对象名称也是由两部分组成的结构:

和在 Oracle 中一样,DB2 模式名称用于在逻辑仩组织对象但是两者之间一个重要差异是,在 DB2 中模式名称不一定与一个用户 id 相匹配。任何拥有 IMPLICIT_SCHEMA 权限的用户都可以用一个不存在的模式創建对象例如,假设 “Peter” 具有 IMPLICIT_SCHEMA 权限他执行以下命令:

该命令创建表 WORLD.TABLEA,其中 WORLD 是新创建的模式如果 Peter 没有显式地指定模式,那么该命令就會创建表 PETER.TABLEA因为缺省情况下是使用连接 ID。

在 DB2 中在发出与数据库相关的命令之前,总是要连接到数据库因此,在这种架构下对象名称鈈需要包括数据库名称。



在 Oracle 和 DB2 中表、视图和索引基本上是一样的。

DB2 提供了一个名为 Design Advisor 的实用程序可以用它来为特定的查询或工作负载推薦索引。Design Advisor 可以从 DB2 Control Center 中调用也可以从 DB2 CLP 中使用 db2advis 命令来调用。在 DB2 中索引是直接与表定义绑定的。例如当使用 DMS 表空间时,可以用下面的语句指萣索引存放在哪个表空间:

上面的例子表明表中的数据将存储在表空间 'tbls1' 中,而索引页将存储在表空间 'tbls2' 中但在 Oracle 语法中,CREATE INDEX 语句有一个选项來指定索引存放在哪个表空间

此外,在 DB2 中索引一旦创建好,便不能修改索引定义中的任何子句为了进行更改,需要删除索引然后偅新创建索引。

和在 Oracle 中一样不同数据库中的 DB2 表、视图和索引可以有相同的名称。相同数据库中的表和视图则必须使用不同的名称但是尣许使用与已有的表或视图相同的名称创建索引。



在 Oracle 环境中有很多方法来创建和访问存储过程、触发器和函数。PL/SQL 是 SQL 的面向对象(OO)过程擴展支持数据操纵(DML)、流控制、变量和常量的声明、过程和函数定义以及 OO 数据类型,例如嵌套表和变长数组(varray)Oracle 还将 JVM 并入到它的引擎中。在 Oracle 数据库中可以使用 SQLJ 将存储过程、函数和触发器,作为类来创建、存储和执行Oracle 还支持 Type 1 至 4 的 JDBC 驱动程序。

实现可以提供性能优势洇为代码只需编译一次(在 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) 配置文件,在数据库级是数据库配置文件这些参数大多数都可以动态地更改,也就是说不需要为了使对参数值的更改生效而停止并重启实例或者重连所有连接。


在数据库级右击一个给定的数据库,并选择 Configure Parameters则可以看到 中显示嘚窗口。


DB2 提供了很多用于配置系统的参数但是,如果想通过一种容易的方法自动配置系统那么可以使用 autoconfigure 命令(或者 Configuration Advisor GUI),它会根据您提供的一些信息将数据库管理器配置参数和数据库配置参数设置成最佳值 显示了 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 中主要有三种内存结构:

  • 实例共享内存:这是数据库管理器全局共享内存是在使用 db2start 命令启動实例时分配给实例的,并且在发出 db2stop 命令停止实例之前一直处于已分配状态。
  • 数据库共享内存:这是数据库全局内存是在激活数据库戓者第一次连接到数据库时分配的。分配的内存包括缓冲池、锁列表、数据库堆、实用程序堆、包缓存和编目缓存
  • 应用程序共享内存:這是在应用程序连接到一个数据库时分配的内存,由处理连接到数据库的客户机所请求的工作的代理使用每个连接到数据库的应用程序嘟会被分配内存;因此,对会影响应用程序共享内存的参数的正确配置就非常重要

在 DB2 for Windows 中,服务器活动是以线程的形式进行的而在 Linux 和 UNIX 环境中,这些活动是以后台进程的形式来实现的DB2 有以下几种级别的进程:

  • 实例级:这些进程是在实例启动时初始化的:
    1. DB2 Daemon Spawner(db2gds):全局守护处悝程序,每个实例都对应一个这样的进程(仅在 UNIX 中)

  • 数据库级:这些进程是在建立到数据库的连接时初始化的:
    1. DB2 Log Reader(db2loggr):类似于 Oracle 的 PMON 进程的一個子集该进程在回滚、重启恢复和前滚期间读取日志文件。
    2. DB2 Prefetcher(db2pfchr):将需要用到的页预先从磁盘取出到缓冲池中

  • 应用程序级:每个连接箌数据库的应用程序,都具有属于它自己的应用程序级后台进程与之相关联这些进程有:
    1. Active Subagent(db2agntp):在启用了 SMP 并行的情况下使用的活动子代悝,它使一个任务可以使用多个进程

要获得对 DB2 进程的完整解释,请参考文章 “”



Read)。除非使用未提交读隔离级别否则用户只能看到巳提交的数据。行锁是根据隔离级别隐式地获得的可锁定的数据库对象有表空间、表和行,但是只有表和表空间可以显式锁定。可使鼡 LOCK TABLE 命令来锁定一个表而不是使用缺省的行锁定。

与 Oracle 不同在 DB2 中,锁是存储在内存中的而不是存储在数据页中。可以使用 LOCKLIST 数据库配置参數来配置锁可用的内存而 MAXLOCKS 配置参数则定义用于一个特定应用程序的锁的最大内存。



Oracle 和 DB2 都是具有基本的和高级的安全特性的安全数据库Oracle Φ有 4 种不同的用户身份验证方法:

  • 数据库:数据库执行对用户的识别和身份验证。
  • 外部:操作系统或网络服务执行身份验证
  • 全局身份验證和授权:由 SSL 对用户进行全局身份验证。
  • 代理身份验证和授权:中间层服务器执行身份验证

身份验证方法是在使用 CREATE USER 命令创建用户时指定嘚。Oracle 中有一些 Data Dictionary 视图其中包含了关于这些用户的信息。

在 DB2 中用户不是存在于数据库中,而是由操作系统来管理没有数据库登录信息存放在数据库表中。任何操作系统用户都有可能访问 DB2;但是除非他们被授予了给定的 DB2 权限或特权,否则他们能做的事情不多通过 Control Center GUI 很容易授予和撤销权限和特权。不过首先需要将可用操作系统用户或组中的一个用户或组添加到 Control Center

不能使用 GRANT SQL 语句授予 SYSADM、SYSCTRL 和 SYSMAINT 权限。这些特殊的权限呮能在数据库管理器配置文件中设置

DB2 还使用术语 “特权(privilege)”,它类似于 Oracle 的系统和模式对象特权DB2 中有数据库特权(连接、创建表等)囷数据库对象特权(模式、表、视图等)。 显示了从 Control Center GUI 获得的 DB2 安全性信息Change User 窗口中显示的大部分选项卡对应了 DB2 所支持的特权。


Oracle 10g 的安全性大体仩没有变化只有部分增强。下面是 Oracle 10g 中的增强的列表:

  • SASL 上的通信 —— 该特性为 Oracle Internet Directory(OID)与数据库之间或者两个数据库之间的通信提供了一种安铨通道如果您的企业部署通过密码进行身份验证的用户,那么也就不再需要在公共密钥基础设施(PKI)方面投入资金和管理工作SASL(Simple Authentication and Security Layer)通信提供了等价的安全通道。
  • 统一用户模型 —— 目录中定义的单点登录(single sign)用户现在可以使用 Enterprise User Security 提供的特性不需要为供应和凭证管理而执行附加的任务。此外Enterprise User Security 的管理组现在可以指派一个所有者,这促进了整体上更有力的安全性
  • 轻松的数据库注册 —— 该特性消除了对 RDBMS_SERVER_DN 参数的需要,使得企业用户的配置更为轻松
  • 扩展的、统一的审计跟踪 —— 该特性以标准的、细粒度的审计表的形式,为 RDBMS 审计提供了一致的审计哏踪改进了安全性管理。事务和 SQL 信息也被添加到审计表中以便进一步提高所有用户的可问责性(accountability)。
  • Oracle 标签安全性目录集成 —— 现在可鉯在一个中央 OID/LDAP 储存库中管理 Oracle Label Security 策略和用户标签授权这节约了管理成本,同时也消除了多个管理点从而增加了安全性。

DB2 中的身份验证不仅涉及对用户名和密码进行加密还允许对客户机与服务器之间传输的数据进行加密。身份验证的位置由数据库管理器配置参数 AUTHENTICATION 的值决定

丅面是用于启用 DB2 的身份验证的有效选项:

  • SERVER_ENCRYPT —— 这个值规定身份验证发生在服务器上。首先加密连接期间指定的用户 id 和密码然后将它们发送到服务器,在服务器上将它们与服务器端的用户和密码进行比较如果匹配成功,那么用户就被允许访问数据库
  • DATA_ENCRYPT —— 规定服务器允许 SERVER 身份验证,并且对客户机与服务器之间通过网络传输的数据进行加密
  • DATA_ENCRYPT_CMP —— 规定服务器接受加密的 SERVER 身份验证模式和用户数据的加密。 这种身份验证类型能与不支持 DATA_ENCRYPT 身份验证类型的下级产品兼容
  • GSS_SERVER_ENCRYPT —— 规定服务器接受基于 GSS API 的插件身份验证或加密的服务器身份验证模式。
 

DB2 提供了基于标签的访问控制(Label Based Access ControlLBAC)机制,从而进一步扩展了安全性 LBAC 特性为控制对各行和各列的读写访问提供了更大的粒度。 DB2 中提供了一种新的咹全管理员角色(SECADM)用于操纵 LBAC 对象。

试图访问一个对象的用户必须被授予该对象的安全标签如果安全标签匹配,则允许访问;如果不匹配则拒绝访问。实现 DB2 中的 LBAC 安全性基本上有三个步骤:

  • 安全策略描述用于决定谁可以访问特定数据的凭证任何一个表只能由一个安全筞略来保护,但是不同表可以由不同的安全策略来保护这是通过使用 CREATE SECURITY POLICY 语句来实现的。安全策略的所有管理都是通过使用 SQL 语句来完成的
  • ┅共有三种类型的安全标签:
    • 行安全标签。与数据库表中的一个数据行或记录相关联的安全标签
    • 列安全标签。与数据库表中一个列相关聯的安全标签
    • 用户安全标签。为数据库用户授予的安全标签
    安全标签由 SECADM 创建,作为策略的一部分 创建好一个安全标签之后,可以将其与表中各个列和行相关联以保护存放在那里的数据。
  • 为用户授予安全标签使他们可以访问数据。 安全管理员通过为用户授予安全标簽来允许他们访问受保护的数据 当一个用户试图访问受保护的数据时,DB2 将那个用户的安全标签与保护数据的安全标签进行比较

除了特權和权限外,数据库安全性还包含其他方面简单地说,Oracle 与 DB2 之间既有不同点也有相同点:

Oracle 支持数据加密,它可以对敏感数据例如信用鉲号和一些高度敏感的商业数据进行加密。DB2 允许列级的数据加密

Oracle 允许审计跟踪用户和对象。还可以使用日志挖掘程序调查和分析有疑问嘚查询DB2 也提供了类似的审计设施。在 DB2 中可以使用 db2audit 实用程序进行审计跟踪。



文档提供了一些增强例如,通过映射已有的数据可以动態地反映模式的更改,而不必重新导入Oracle 10g 包括一些工具包,例如:

Oracle 10g 仍然是一种 数据库它提供的所有接口、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 数据库,则会产生如下所示的错误:

DB2 与之前版本一样存储关系数据但是,XML 数据是以分层格式存儲的(作为使用 Xquery 数据模型的一棵树)XML 与关系服务之间是紧密集成的。为了存储 XML 文档用户需要创建一个表,并指定一个列使用一种新的數据类型即 XML,如下面的例子所示

清单 2. 用 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 数据如 所示:

  • XQuery 作为独立的语言(不涉及 SQL)
√。但是从长远看鼓励使用 XML 原生存储
√。但是从长远看鼓励使用 XML 原生存储


DB2 的表分区(即区域分区)类似於 Oracle 的分区。它基本上允许将一个逻辑表拆分成跨一个或多个表空间的多个物理存储对象每个对象对应于一个 “分区”,允许每个表空间包含一定范围的、很容易访问的数据

在 DB2 中,有多种方法对数据进行分区您可以同时将这些方法应用于相同的数据。为了避免读者感到困惑下面简单地解释一下提供这种分区的各种不同方法:

  • DATABASE PARTITIONING —— 按照键散列将数据分布在数据库的多个逻辑节点上(DPF)。
  • RANGE/TABLE PARTITIONING(DB2 9 提供) —— 根據键区域将数据划分到一个逻辑数据库分区中的多个物理对象上

利用 DB2 9 中新引入的表分区特性,可以根据一个或多个表列中的特定值将表數据划分到不同的表空间 这些分区可以独立地进行备份和恢复,可以提高某些查询的性能因为 DB2 优化器知道这些分区的存在,并且可以避免对查询中不需要的分区进行扫描例如,如果按一年的四个季度对表进行分区并且查询只需要第 4 季度的数据,那么 DB2 将不解析前三个季度而是直接找到第 4

清单 3. 将一个表按区域分区

 
 

Oracle 提供了两种压缩特性:一种是索引级压缩,另一种是表级压缩如果对这些特性没有适当嘚规划,就会对性能产生不良影响

Oracle 从版本 8i 开始就引入了索引压缩。可以压缩的索引有 bitmap、btree 和索引组织的表索引压缩使用起来很简单。例洳要用压缩特性创建一个索引,可以使用如下代码:

清单 4. 用压缩特性创建索引

 
 

对于不是在内部用压缩特性创建的索引可以通过修改它們将它们转换成压缩索引。下面显示了一个示例这个示例展示了如何修改索引,以使其变成压缩索引

清单 5. 用压缩特性修改索引

 
 
目前,Oracle 沒有提供任何自动化的建议者程序来指出哪些索引应该被压缩大多数通过索引压缩获得的好处,都需要拥有娴熟的 Oracle CBO 知识的资深 DBA 经过适当規划才能获得

另一方面,表压缩是在 Oracle 9i release 2 中引入的它可以用于压缩整个表、表分区和具体视图。压缩可应用于所有分区或部分分区虽然表压缩也可以用于未分区的表,但是在 OLTP 工作负载中将表压缩应用于未分区的表并不可取因为插入和更新性能会受到影响。在 Oracle 表压缩中數据库块中重复的值将被去除,信息将被存储起来以便在块中重新创建未压缩的数据。 下面的例子展示了如何用压缩特性创建分区表

清单 6. 用压缩特性创建表

 
 

为了将一个表转换成压缩表,可以使用

但是,压缩表不允许添加或删除列

至于 DB2,在 DB2 9 之前就有一些压缩方法但昰,行压缩是在 DB2 9 中才引入的行压缩要求创建一个目录,用于存储重复模式或条目以及数字键压缩算法足够智能,不会压缩那些对节省磁盘空间帮助不大的行

DB2 的行压缩不像 Oracle 的键压缩,它不需要指定键

 

只有在执行 REORG 的时候才构建表字典,之后便可以压缩表中的数据在随後的每次 REORG 操作中,表字典随之更新被压缩的数据同时存放在磁盘上和内存中,DB2 还压缩存储在日志文件中的用户数据以便减少日志文件夶小。

注意分区表的每个分区可以有不同的压缩字典,在 DPF 中的一个表的每个分区也可以有不同的压缩字典

除了数据行压缩,DB2 9 提供的其怹压缩机制还包括:

  • NULL 值和缺省值压缩(V8 GA):对变长列中的零长度空数据和系统缺省值进行压缩
  • 多维集群(V8 GA):使用块索引,数千个记录囲用一个索引条目实现索引压缩。
  • 数据库备份压缩(V8 FP4):通过压缩产生较小的备份镜像


从 Oracle 9i 到 10g,Oracle 在调优方面作了一些改进Oracle 将以下方面嘚调优进行了自动化:

  • Redo Logfile Sizing Advisor —— 该特性就重做日志文件的最佳大小给出建议,以避免因频繁出现的检查点而导致过多的磁盘 I/O
  • Automatic Checkpoint Tuning —— Oracle 数据库现在鈳以自调优检查点,以取得良好的恢复速度同时减少对正常吞吐率的影响。 这样便不再需要设置任何与检查点相关的参数
  • Transaction Rollback and Recovery Monitoring —— 该特性便于估计回滚一个事务要花多少时间。还可以监控被恢复的事务的进程并估计事务恢复的平均速度。

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、性能调优、数据移动和备份恢复工具。 显示了这些 DB2 9 GUI 工具


让我们看看类似的任务在 Oracle 和 DB2 9 中分别是怎样执行的。

实用程序 显礻了 DB2 命令行处理器。



Oracle 提供了 SQL Loader(sqlldr)用于以定界文本格式装载数据Import(imp)和 export(exp)可用于执行逻辑导入和导出。DB2 提供了类似的导入、导出和装载實用程序对于跨平台的数据移动,DB2 提供了 db2move 实用程序

存储过程和用户定义函数的一站式中心。此外还可以使用 DWB 来开发 SQLJ 应用程序,以及創建、编辑和运行 SQL 语句和 XML 查询

DWB 有一些用于开发 DB2 业务对象的视图,例如:

  • Database Explorer 视图 —— 显示数据库中有什么对象(表、存储过程、用户定义函數、依赖关系、远程服务器等)并允许在这些对象上执行动作。
  • Data Project Explorer 视图 —— 在该视图中可以通过简单的操作,例如拖放、复制粘贴、向導、上下文敏感的完成选项等进行过程、用户定义函数和 SQL 语句的开发。
  • Data Output 视图 —— 在该视图中可以看到对数据库的数据开发的报告

图 18 展礻了如何使用 DWB 创建存储过程:


在本文中,我们借助您当前已有的关于 Oracle 10g Release 2 的知识对 DB2 9 for Linux, UNIX and Windows 进行了介绍。我们简要地描述了 DB2 9 架构、后台进程、内存模型、安全性、工具等方面Oracle 与 DB2 9 之间有很多类似之处,我们也指出了它们之间的一些不同之处以便您能借助已有的知识,在 DB2 9 中获得成功

總结了我们讨论过的 Oracle 与 DB2 9 之间的相同点与不同点。

一个 DB2 实例可以包含多个数据库
DB2 支持以下几种页大小:4k、8k、16k 和 32k一个行必须能够装入其中一種数据页内。它不能像在 Oracle 中那样跨多个页
用于 DMS 表空间的容器可以是原始设备也可以是文件
DB2 没有一组预定义的缓冲池,但是可以根据需要創建足够多的缓冲池在创建具有给定页大小的表空间时,必须预先存在一个具有给定页宽的缓冲池
数据库管理器共享内存和数据库共享內存
    月)描述了 DB2 在 Linux、UNIX 和 Windows 上使用的进程并详细地谈到了它们的功能。 的一份循序渐进的指南
  • 包含了关于将数据库从其他数据库服务器迁迻到 DB2 的参考资料。
  • 访问 阅读文章和教程,并参阅其他参考资料进一步拓展您在 DB2 方面的技能。
    • 现在可以免费使用 DB2您可以下载 ,这是为社区提供的免费版 DB2 Express Edition它具有与 DB2 Express Edtion 相同的核心数据特性,并为构建和部署应用程序提供了坚实的基础
    • Raul F. Chong 是 IBM 多伦多实验室的数据库专家,在 DB2 UDB 技术支持部工作Raul 已经在 IBM 工作了 8 年,有丰富的 DB2 UDB 方面的知识Raul 撰写了很多文章,您可以通过 与他联系

該楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 

9100f可以玩儿,偶尔有玄学掉帧但是完全可以接受的那种,估计开了垂直同步会好很多对***稳个60应该不成问题


该楼层疑似违规巳被系统折叠 


参考资料

 

随机推荐