存储器体系结构和后台进程
接下来,我们将查看存储器体系结构和后台进程,并将它们在 Oracle 和 DB2 UDB 中的使用方式进行比较和对比。
图 9. Oracle 存储器体系结构和后台进程
点击查看大图Oracle 中的 System Global Area(SGA)是一组共享存储器区域,用于存储实例信息。其中包括语句缓存器、重做日志缓存器和数据缓冲区缓存器。PRogram Global Area(PGA)和 User Global Area(UGA)共享存储器区域容纳用于服务器进程和用户会话的数据和控制信息。
Oracle 在同一机器中支持多个实例,但不共享后台进程。例如,一个机器里的三个实例将需要三组后台进程。因此,一般推荐在同一机器中使用一个数据库、一个实例和多个模式。
图 10. DB2 UDB 存储器体系结构和后台进程
点击查看大图DB2 UDB 和 Oracle 都使用共享存储器区域,但是 DB2 UDB 存储器体系结构的实现方式与 Oracle 的稍有不同。因为一个 DB2 UDB 实例可以包含多个数据库,所以存在两个级别的配置。正如前面的小节中所提到的,实例级别的配置可以在 DBM CFG 文件中完成,而数据库级别的配置则是在 DB CFG 文件中完成。可调节这两个级别的配置参数来调整存储器的使用。下面提供了关于 DB2 UDB 存储器结构和不同后台进程的更具体的介绍。
不像 Oracle 在启动时就将存储器分配给实例和数据库,DB2 UDB 在不同的级别分配存储器。这主要是因为 DB2 UDB 实例可包含多个数据库。DB2 UDB 中有三种主要的存储器结构:
实例共享存储器:指的是数据库治理器全局共享存储器,它是当使用 db2start 命令启动实例时被分配的,并且保留到发出 db2stop 命令来停止该实例。
数据库共享存储器:指的是数据库全局存储器,它是首次激活或连接到该数据库时被分配的。分配的存储器包括缓冲池、锁列表、数据库堆、实用工具堆、包缓存器和目录缓存器。
应用程序共享存储器:指的是当应用程序连接到数据库时所分配的存储器,并且由代理(agent)使用,而代理将完成连接的客户机所要求的工作。连接到数据库的每个应用程序都有给其分配的存储器;因此,影响应用程序共享存储器的参数的准确配置就变得极其重要了。
在 DB2 UDB for Windows 中,服务器活动以线程的形式进行,而在 linux 和 UNIX 环境中,它们作为后台进程来实现。DB2 UDB 进程活动于以下级别:
实例级别:这些进程是在启动实例时被初始化的:
DB2 Daemon Spawner(db2gds):为每个实例启动的全局守护进程处理程序(仅存在于 UNIX 中)。
DB2 System Controller(db2sysc):主要的 DB2 进程。
DB2 Watchdog(db2wdog):所有其他进程的父进程。
DB2 Format Log(db2fmtlg):类似于 Oracle 中的 ARCn 进程,预先在日志路径下分配日志文件。
数据库级别:这些进程是在与数据库建立连接时被初始化的。
DB2 Log Reader(db2loggr):类似于 Oracle 的 PMON 进程的子集。该进程在回滚、重启恢复和前滚期间读取日志文件。
DB2 Log Writer(db2logw):将日志缓冲区的日志写入磁盘上的事务日志文件中。相当于 Oracle 中的 LGWR 进程。
DB2 Page Cleaner(db2pclnr):相当于 Oracle 中的 DBWR 进程,该进程在将磁盘中的页移至 BP 之前清除缓冲池。
DB2 Prefetcher(db2pfchr):从磁盘中检索页并且在需要用到之前将之置于缓冲池。
DB2 Deadlock Detector(db2dlock):死锁监测器进程。
应用程序级别:连接到数据库的每个应用程序都有自己的一份与之关联的应用程序级别的后台进程。它们是:
DB2 Communication Manager(db2ipccm):为每个本地连接的客户机提供的进程间通信进程。
DB2 TCP Manager(db2tcpcm):为使用 TCP/IP 的远程客户机连接提供的 TCP 通信治理进程。
DB2 Coordinating Agent(db2agent):代表应用程序处理所有需求的进程。
DB2 Subagent(db2agnta):空闲的子代理。
Active Subagent(db2agntp):为使多个进程用于单个任务而启用 SMP 并行性时使用的活动子代理。
锁定机制
Oracle 中的锁定既可以是手工的也可以是自动的。Oracle Lock Manager 可以在行级别上隐式地锁定表数据,或者可以使用以下 SQL 语句在事务或会话级别上重载默认的锁:
1. SET TRANSACTION ISOLATION LEVEL
2. LOCK TABLE
3. SELECT FOR UPDATE
Oracle 支持名为多版本读取一致性(Multi Version Read Consistency)的机制,它是由重做段中的重做数据来实现的。
DB2 UDB 实现了 ANSI 标准隔离(Isolation)级别,如未提交读、游标稳定性、读稳定性和可重复读。除非使用未提交读隔离级别,否则用户只会看到提交的数据。根据隔离级别将隐式地获得行锁。可锁定的数据库对象有表空间、表和行,然而,只有表和表空间可以被显式锁定。可以使用 LOCK TABLE 命令代替默认的行锁定来锁定表。
不像 Oracle,在 DB2 UDB 中,锁存储在内存而非数据页中。LOCKLIST 数据库配置参数可用于配置锁可用的内存,而 MAXLOCKS 配置参数则定义为特定应用程序的锁提供的最大内存容量。
安全性
Oracle 和 DB2 UDB 都是具有基本和高级安全特性的安全数据库。Oracle 中有 4 种不同的用户身份验证方式,如下:
数据库:数据库执行用户的识别和身份验证。
外部:操作系统或网络服务执行身份验证。
全局身份验证和授权:由 SSL 对用户进行全局验证。
代理身份验证和授权:中间层服务器执行身份验证。
当用 CREATE USER 命令创建用户的时候就指定了身份验证方式。几个数据字典视图包含了这些用户的有关信息。
在 DB2 UDB 中,用户不存在于数据库中,而是由操作系统进行治理的。在任何数据库表中都不会保存数据库登录信息。任何操作系统用户都有可能潜在地使用 DB2 UDB;然而,除非他们被授予了给定的 DB2 UDB 权限或特权,否则他们能做的并不是很多。通过 Control Center GUI 可以很方便地处理权限和特权的授予和取消。您可能首先必须将一个用户或组从可用的操作系统用户或组中添加到 Control Center。
另外,在 DB2 UDB 中不使用术语“角色”;而是使用术语“权限”,这类似于 Oracle 的数据库角色,就是通过它将特权授予某些组和用户。DB2 UDB 支持的权限有:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。
使用 GRANT SQL 语句不能赋予 SYSADM、SYSCTRL 和 SYSMAINT 权限。这些非凡的权限只能通过数据库治理器配置文件来设置。
DB2 UDB 还使用术语“特权”,这类似于 Oracle 的系统和模式对象特权。有 数据库特权(connect、createtab 等)和 数据库对象特权(schema、table、view 等)。图 11 显示了从 Control Center GUI 中获得的 DB2 UDB 安全性信息。Change User 窗口上显示的大部分选项卡对应了 DB2 UDB 所支持的特权。
图 11. DB2 UDB 安全性
点击查看大图数据库安全性除了特权和权限之外还有其他方面的内容。这里简要地列出了 Oracle 和 DB2 UDB 之间的一些差异和相似点:
用户身份验证和授权
Oracle 使用加密的口令,一旦创建一个用户就将之存储在字典中。DB2 UDB 支持用于用户身份验证的口令并使用底层操作用户来进行身份验证。Oracle 和 DB2 UDB 都支持 LDAP(Oracle Internet Directory 和 IBM Directory Server)。Oracle 和 DB2 UDB 还都支持单点登录(single sign on,SSO)。
数据加密
Oracle 支持对诸如信用卡号码的敏感数据和一些高度敏感的业务数据进行加密。DB2 UDB 支持列级别上的数据加密。
网络加密
Oracle 在其高级安全性中提供了网络加密。Oracle 使用 DES、3DES 和 RC4 行业标准加密。DB2 UDB 不会单独实施网络加密。然而可使用附带的 Tivoli SecureWay 完成网络加密。
审计追踪
Oracle 答应您对用户和对象进行审计追踪。Log miner 还可用于调查和分析可疑查询。DB2 UDB 提供了类似的审计工具。db2audit 工具就可用于该目的。
工具
我们将查看来自不同领域的工具,如数据库的创建和维护、网络、治理 GUI、性能调整、数据移动和备份-恢复工具。图 12 展示了 DB2 UDB GUI 工具。
图 12. DB2 UDB GUI 工具
点击查看大图让我们来看一看 Oracle 和 DB2 UDB 中所执行的任务有多么相似。
数据库的创建和维护
Oracle 提供了 Database Configuration Assistant(dbca)这个 GUI 工具来创建数据库。对于数据的维护,Oracle 提供了 Oracle Enterprise Manager。可从 DB2 UDB Control Center 来创建并维护 DB2 UDB 数据库。
网络
Oracle 提供了 Network Configuration Assistant(netca)来进行网络配置。或者,您可以使用 Oracle Network Manager 来配置服务名、侦听器、配置文件和 Oracle 名称服务器。DB2 UDB 使用 CATALOG 命令给节点和数据库编目。还可以使用 DB2 UDB 命令行或 DB2 UDB Configuration Assistant GUI 来完成编目。
治理
Oracle Enterprise Manager 为日常治理任务提供了范围较广的治理功能。DB2 UDB Control Center 与 Oracle Enterprise Manager 一样提供了类似功能。除了 DB2 UDB Control Center,DB2 UDB 命令行处理器也可用于发出 DDL 和 DML 语句。该工具与 Oracle SQLPLUS 工具十分相似。图 13 显示了 DB2 UDB 命令行处理器。
图 13. DB2 UDB 命令行处理器
点击查看大图如 图 14 所示,还可以从 Command Center 发出命令。
图 14. Command Center GUI(DB2 UDB 命令行处理器的 GUI 版本)
点击查看大图
性能调整
Oracle Enterprise Manager 带有 Change Management pack、Tuning Pack 和 Diagnostic Pack。DB2 UDB 提供了 Event Analyzer、Health Center、IndouBT Transaction Manager 和 Memory Visualizer 这些 GUI 工具来完成性能调整任务。
数据移动
Oracle 提供 SQL Loader(sqlldr)用于以定界文本格式加载数据。Import(imp)和 eXPort(exp)可用于执行逻辑导入和导出。而 DB2 UDB 也提供了类似的导入、导出和加载工具。对于跨平台的数据移动,DB2 UDB 提供了工具 db2move。
备份和恢复
Oracle 为热备份提供了 Recovery Manager 选项。DB2 UDB 中可使用备份命令或 DB2 UDB Control Center 来完成数据库备份。
结束语
本文利用您现有的 Oracle 9i Release 2 知识向您介绍了 DB2 UDB for Linux、UNIX 和 Windows Version 8。我们简要地描述了 DB2 UDB 体系结构、后台进程、存储器模型、安全性、工具,等等。Oracle 和 DB2 UDB 之间存在许多相似点,我们也指出了两者的一些差异,以使您能利用现有知识成功把握 DB2 UDB。表 3 总结了我们所讨论的 Oracle 和 DB2 UDB 之间的差异和相似点。
表 3. Oracle 与 DB2 UDB 概念对比总结
[[The No.17 Picture.]]