文章图片标题

Windows 平台Oracle Database11g架构概述

分类:oracle 作者:阳光倾城 评论:0 点击: 602 次 日期:2015-07-25

Oracle Database 11g for Windows 提供的优化数据库解决方案,适用于需要企业级可扩展性、可靠性和高性能的部署。本文介绍了基于 Windows 的 Oracle 数据库架构,及其与基于 UNIX 和 Linux 的同类产品间的区别。

Oracle Database 11g 这一基于线程的本机 Windows 服务型号,可确保实现高性能和可扩展性。Oracle 数据库与 Windows 操作系统的高级功能和基础硬

件(如大页面和 NUMA 支持)紧密集成。Oracle 通过支持大内存、大文件和原始文件以及网格计算,为客户提供企业级的性能。

Oracle 数据库通过了 32 位和 64 位 Windows 操作系统认证。使用标准 x86 硬件的 32 位 Windows(包括 Windows Vista)全面支持 32 位 Oracle 数据库。64 位 Oracle 则可运行在 Windows x64 (AMD64/EM64T) 和 Windows Itanium 等 64 位 Windows 操作系统上。64 位硬件具有比 32 位系统更好的可扩展性和性能。

简介

Oracle 数据库已成为 Windows 平台上领先的数据库解决方案。Oracle 一向以来的目标,就是提供 Windows 平台上性能最好和最紧密集成的数据库。因此 Oracle 很早就开始重金投入,将其市场领先的 UNIX 数据库技术向

Windows 平台迁移。1993 年,Oracle 率先推出适用于 Windows NT 的关系

Oracle 初期的开发工作,专注于提高数据库在 Windows 平台上的性能并优化其架构。我们对 Oracle7 on Windows NT 进行了重新设计,以充分利用 Windows 平台独有的多种技术,包括本机线程支持以及集成性能监视器和事件查看器等一些 Windows 管理工具。

Windows 上的 Oracle 数据库已经从基本的操作系统集成,演进到采用 Windows 平台(包括 Itanium 和 AMD64/EM64T 系统)中的更多高级服务。 Oracle 一如既往地坚持创新并利用 Windows 的新技术。

Oracle Database 11g Windows 上的特点与功能与在 Linux UNIX 上的完全相同。但透过这看来平平无奇的表象,可以看到我们为了充分利用 Windows 操作系统特有的功能来提高性能、可靠性和稳定性所做的大量工作。

WINDOWS 平台上的 ORACLE 数据库架构

运行在 Windows 上的 Oracle Database 11g 与在 Oracle 支持的各种 Linux 和

UNIX 平台上具有相同的特性和功能。但我们对数据库与操作系统之间的

接口进行了大量修改以充分利用 Windows 提供的独特服务。因此 Windows 上的 Oracle Database 11g 并不仅仅是 UNIX 代码库的直接导出。我们进行了大量软件工程工作以确保数据库能最大限度地利用 Windows 的功能,并保证 Oracle 数据库是稳定、可靠、高性能的系统,客户可以在其上放心构建应用程序。

线程模式

与 UNIX 上的 Oracle 数据库相比,Windows 上的 Oracle Database 11g 最显著 的架构更改是从基于进程的服务器转变为基于线程的服务器。在 UNIX 上 Oracle 采用进程来实施后台任务,如数据库写入程序 (DBW0)、日志写入程序 (LGWR)、调度程序、共享服务器等。此外,与数据库间的每个专用连接,都会导致代表该会话生成另一个新的操作系统进程。但在 Windows 上,所有这些进程都在一个大的进程内作为线程予以实施。这意味着对于每个 Oracle 数据库实例来说,Oracle 数据库服务器本身在 Windows 上只运行一个进程。(注意:Oracle 在 Windows 上的其他数据库服务存在其他进程,如 Enterprise Manager Database Console)在该进程中运行多个线程,每

个线程与 UNIX 架构中的一个进程直接对应。因此如果在 UNIX 上一个特定实例运行了 100 个 Oracle 进程,相同的工作任务在 Windows 上将通过一个进程中的 100 个线程来处理。

从操作来讲,数据库架构的这一改变不会影响连接到数据库的客户端应用程序。即使内部进程架构已转变为基于线程的方式,我们仍竭尽全力保证数据库在 Windows 上的操作方式与其他平台相同。

转变到基于线程的架构最初的动机,是第一版的 Windows NT 在处理进程间共享的文件时所出现的性能问题。仅仅是简单地转变为基于线程的架构,无需修改其他代码就大大提高了性能,避免了这一特定的 Windows NT 瓶颈。毫无疑问,改变的最初动机已不复存在,但 Oracle 的线程架构经事实证明是非常稳定的可维护架构,因而一直保留了下来。 线程架构还带来了其他优势。其中包括线程间的操作系统上下文切换速度

更快(与进程相反);系统全局区域(System Global Area,SGA)分配例程不需要使用共享内存,因而大大简化;由于线程的创建速度比进程快得多,因此新连接的生成速度更快;由于线程比进程能够共享更多的数据结构,因此减少了内存使用;最后则是大家认识到,基于线程的模式在某种程度上比基于进程的模式更“象 Windows”。 从内部来看,实施线程模式的代码非常紧凑,而且与 Oracle 主体代码完全隔离。实施线程模式所需的整个基础架构只有不到 20 个模块。此外我们还采用了异常处理程序以及用来跟踪和取消资源分配的例程,使整个架构更加稳健。这两个添加功能有助于 Windows 应用程序的 Oracle 数据库满足全天候运营的要求,不会因资源泄漏或程序操作不当而导致停机。

Oracle 数据库作为 Windows 服务运行,这种后台进程可在系统引导时由 Windows 启动。

服务

除了基于线程以外,Oracle Database 11g 并不是一个典型的 Windows 进程,而是一个 Windows 服务,其本质是在操作系统中注册的后台进程,由 Windows 在引导时启动,并在特定的安全环境下运行。要使 Oracle 数据库在系统重新引导时自动启动,就必须转变为服务,因为启动服务不需要用户交互。当 Oracle 数据库服务启动时,在进程中并不运行典型的 Oracle 线程。相反,进程将等待来自 SQL*Plus 的初始连接和启动请求,该请求将启动前台线程,最终将创建后台线程和 SGA。当数据库关闭时,创建的所有线程将会终止,但进程本身则会继续运行并等待下一个连接请求和启动命令。除 Oracle 数据库服务以外,我们还添加了进一步支持以自动生成新的

Oracle Net Listener 也是一项服务,因为还需要运行该程序之后用户才能连接到数据库。所有这些实施细节同样不会影响客户端与数据库的连接或使用方式,但与 Windows 数据库管理员则密切相关。

增强可扩展性

Windows 上的 Oracle Database 11g 的一个主要目标,是充分利用所有操作系统和硬件技术,帮助提高可扩展性、吞吐量和数据库容量。

我们为支持 Windows 上的大量用户连接到数据库采取了很多办法。早在 Oracle7 的 7.2 版本时,在客户的生产环境中对 Windows NT 上的单个数据库实例就有超过 1000 个并行连接。随着时间的推移,这一数字已经增加到在生产环境中可以有超过 2000 个用户并行连接到单个节点上的单个数据库实例。虽然采用 Oracle 共享服务器架构限制了 Oracle 数据库进程中运行的线程数目,但对单个数据库实例仍然可以同时建立超过 10,000 个连接。此外,网络多工和连接池功能也允许较大的配置,从而使得更多用户可以连接到单个数据库实例。

SQL*Plus 来启动和打开数据库,供客户端使用。

近年来 Windows 数据库管理员通过新的 64 位硬件(如 Itanium 或

AMD64/EM64T)和 Oracle Real Application Clusters (RAC),能够显著增加其用户数。本文后面讨论了 64 位硬件带来的改进。Oracle RAC 允许多台服 务器访问相同的数据库文件,从而增加了用户连接容量,同时也提高了吞吐量。由于 RAC 群集中可以增加商品硬件作为额外的节点,因此 RAC 是极具成本效益的扩展和提高可用性的常见解决方案。在 Windows 上,已有客户顺利扩展到了 23 个节点的 RAC 群集。

4GB RAM 微调 (4GT)

在无法使用群集和 64 位 Windows 时,就必须充分利用 32 位 Windows 系统中可用的资源。32 位 Windows 2000 Server(Advanced 和 Datacenter 版)和 32 位 Windows Server 2003(Enterprise 和 Datacenter 版)包含一项 称为 4GB RAM 微调 (4GT) 的功能。该功能使得需要大量内存的 Windows 应用程序可以直接访问多达 3GB 的内存,相比之下,默认允许的标准内存只有 2GB。对于 Oracle 数据库来说,一个明显的优势是数据库可用的内存增加了 50%,从而可以扩大 SGA 的大小或增加连接数。自 7.3.4 版以后的所有 Oracle 数据库服务器版本均支持该功能,无需对标准 Oracle 安装进行任何修改。唯一需要更改的配置是确保 Windows boot.ini 文件中使用了 /3GB 标记。

大页面支持显著提高了内存密集型数据库应用程序的性能,尤其是在缓冲区高速缓存 达多个 GB 的情况下。

超大内存 (VLM)

大量使用内存的 32 位 Windows 应用程序经常采用一项最初在 Oracle8i 中支持的重要内存微调功能,称为超大内存 (VLM)。Windows 2000 和更高版本

中提供的 VLM 使 Windows 上的 Oracle 数据库可以突破 32 位 Windows 常见

的 3GB 地址空间限制。特别是单个数据库实例现在可以访问多达 64GB 的数据库缓冲区(如果所运行的计算机和操作系统支持如此之大的物理内存)。在 Oracle Database 11g 中,这一支持与数据库内核中的数据库缓冲区高速缓存代码紧密集成,因而可以高效利用数据库缓冲区可用的大量 RAM。用大量缓冲区配置数据库将使内存可以缓存更多数据,从而减少磁盘 I/O 量(其速度比从内存检索数据要慢得多)。使用该功能将使数据库吞吐量和性能得到相应提高。

Windows 上的 Oracle Database 11g 内部充分利用了 Windows 2000 和更高版

本操作系统所包含的 Address Windowing Extensions (AWE) 功能。AWE 是一组 API 调用,使应用程序可以访问的内存超越 32 位 Windows 应用程序通常可用的传统 3GB RAM。AWE 接口充分利用了 Intel Xeon 架构,并且提供到计算机全部内存的快速映射/取消映射接口。因此当访问 4GB 以上的内存时,应用程序不会进行严格意义上的直接内存访问。如果请求的数据库缓冲区位于 4GB 以上的内存区域,则必须从该区域映射到 4GB 以下的内存,才能供 32 位数据库访问。尽管这样比直接内存访问的速度要慢,但比利用硬盘要快得多。

AWE 调用使得数据库缓冲区的使用可以大大增加,最多可为全部 64GB 缓冲区。这一支持完全是内存中的改变,对数据库文件本身没有进行任何修改。

大页面

大页面支持功能显著提高了 32 位以及 64 位 Windows Server 2003 上内存密集型数据库实例的性能。借助该功能,Oracle 数据库可以更加有效地利用处理器内存寻址资源。尤其是启用了大页面支持后,系统的 CPU 能够更为

迅速地访问内存中的 Oracle 数据库缓冲区。Oracle 充分利用了 Windows 提供的大页面支持。如果启用了物理地址扩展 (PAE),大页面的大小为 2MB,如果禁用 PAE,则为页面大小为 4MB(在 32 位 Windows 上)、

2MB(在 Windows x64 上)或 16MB(在 Windows Itanium 上)。SGA 使用了大页面。缓冲区高速缓存、共享池、大池和其他所有 SGA 组件都是从这些大页面分配的。

当 Oracle 缓冲区高速缓存达多个 GB 的情况下该功能特别有用。采用大页面时规模较小的配置也能有所收获,但不会象数据库访问大量内存时那么显著。要启用这一新功能,在 Windows 注册表的 Oracle 键中应当将注册表

变量 ORA_LPENABLE 设为 1。

数据库管理员可以为特定 Oracle 线程指定 CPU 亲和与优先级,从而改善其性能。

亲和与优先级设置

运行在 Windows 上的 Oracle 数据库支持修改数据库进程及该进程中各个线 程的优先级与亲和设置。

通过修改 ORACLE_PRIORITY 注册表设置的值,数据库管理员可以对各个后台线程以及全部前台线程指定不同的 Windows 优先级。整个 Oracle 进程的优先级同样可以修改。在某些情况下,这样可以使性能稍有提高。例如,如果一个应用程序生成大量日志文件活动,则可以提高 LGWR 线程的优先级以更好地处理其承受的负载。同样,如果大量使用复制,则可以提高那些刷新远程数据库数据并从中读取的线程的优先级。

与 ORACLE_PRIORITY 设置非常相似,ORACLE_AFFINITY 注册表设置使数据库管理员可以将整个 Oracle 进程或该进程中的各个线程指定给系统中的特定 CPU 或几组 CPU。在某些情况下这同样有助于提高性能。例

如,将 DBW0 指定给一个 CPU 以使其不会从一个 CPU 迁移到另一个,在某些情况下会使性能稍有改善。而且如果系统还在运行其他应用程序,可以通过 ORACLE_AFFINITY 将 Oracle 限制在可用 CPU 的子集,从而使其他应用程序有时间运行。

非统一内存访问 (NUMA)

借助 Windows Server 2003 新增的非统一内存访问 (NUMA) 支持,Oracle 现在可以更好地利用高端 NUMA 硬件,其中一个大型物理服务器包含多个计算“节点”。由于 NUMA 机器中的每个节点以不同的速度访问物理 RAM 的不同部分,因此本质上数据库可以确定 NUMA 机器的拓扑结构,

并相应地调整其调度、内存分配以及内部操作。

Oracle 数据库运行在 NUMA 机器上时, 会在启动时自动将 ORACLE_AFFINITY 设置为适当的默认值,从而最大程度地利用计算机资源。此外,数据库以 NUMA 敏感的方式分配 SGA 和 PGA 内存,这样从服务器中所有不同的节点均可最有效地访问内存。最后,数据库写入程序线程的数量可配置为每个节点一个,该操作同样可以提高性能。

文件 I/O 增强功能

在 Oracle 数据库代码中进行了大量工作的另一领域涉及对群集文件、大文件和原始文件的支持。Oracle 群集文件系统是 Oracle Database 11g 不可分割的组成部分,使得 Oracle 群集的管理和安装更加简单。通过确保充分利用所有 Windows 功能,Oracle 数据库支持 64 位文件 I/O,从而能够使用大小超过 4GB 的文件。此外,数据、日志和控制文件均支持物理和逻辑原始文件,因而在 Windows 上可以通过 Oracle RAC 和单个实例数据库来提高性能。

群集文件系统

Oracle RAC 的可管理性通过 Oracle 群集文件系统 (CFS) 得到显著提高。

Oracle CFS 就是专为与 RAC 合用而创建的。Oracle RAC 可执行文件安装在CFS 或原始文件中。在后一种情况下,群集的每个节点上至少运行一个数据库实例。在一个带有 CFS 的 Oracle 主安装中,数据库将存在于共享存储(通常为一个存储阵列)中。CFS 使得集群中的所有节点都可以访问 Oracle 软件,但任何一个节点都不能控制软件。所有 CFS 机器都可以同等地访问所有数据,并且可以处理任何事务。这样,安装有 CFS 的 RAC 就确保了 Windows 群集的完整数据库软件冗余,同时简化了安装和管理。

64 位文件 I/O

从内部来讲,所有 Oracle 数据库的文件的 I/O 例程都支持 64 位文件偏

移,也就是说在处理数据、日志或控制文件时,再也不会出现象其他一些 平台上的 2GB 或 4GB 的文件大小限制了。事实上,这些限制是 Oracle 对所有端口的通用限制。这些限制包括每个文件 4 百万个数据库块,每个块最大 16KB 和每个数据库 64,000 个文件。如果把这些值乘起来,那么 Windows 上的数据库文件最大将为 64GB,而能够支持的数据库总规模

(16KB 个数据库块)最大为 4 PB。 对原始文件的支持

与 UNIX 相似,Windows 支持原始文件的概念,也就是未格式化的磁盘分区可作为一个大文件使用。原始文件的好处在于没有文件系统的开销,因为它们是未格式化的分区。因此使用原始文件作为数据库或日志文件可以使性能稍有提高。 但是,使用原始文件会牺牲一定的可管理性,因为标准 Windows 命令不支持操作或备份原始文件。因此,通常只有非常高端的安

装和 Oracle Real Application Cluster 在需要优化性能时才使用原始文件。

要使用原始文件,Oracle 需要的仅仅是指定文件使用哪个驱动器符或分区的文件名。例如,文件名 \\.\PhysicalDrive3 告诉 Oracle,要使用第三个物理驱动器作为数据库中的一个物理原始文件。此外,象 \\.\log_file_1 这样的文件则表示为原始文件指定了一个别名以便于理解。别名可通过 Oracle

Object Link Manager (OLM) 来指定。OLM 提供了易于使用的图形接口,并且保留了群集之间的链接,即使重启也不受影响。在为 Oracle 指定原始文件名时,必须仔细选择正确的分区号或驱动器符,因为 Oracle 在向数据库中添加文件时会简单地覆盖指定驱动器上的所有内容,即使驱动器已经进 行了 NTFS 或 FAT 格式化。

对 Oracle 来说,原始文件和其他 Oracle 数据库文件没有什么本质上的不同。Oracle 会以相同的方式处理这些文件,也可以象其他所有文件一样通过 Recovery Manager 进行备份和恢复。

Oracle 数据库架构向 64 AMD64/EM64T Itanium 平台的转移在可扩展性方面取得了重大突破。由于 Oracle 数据库已成功移植到其他 64 位平台,因此向 64 Windows 的转

Direct Network File System 客户端 – 11g 新功能

Oracle Database 11g 可配置为采用内部 Oracle Direct Network File System 客户端直接访问 Network File System (NFS) V3 服务器。 该功能在 Oracle Disk Manager 库中作为 Oracle 数据库内核的组成部分予以

实施。基于 Network Attached Storage (NAS) 的系统采用 NFS 来访问数据。在以前的 Oracle 版本中,由操作系统提供内核网络文件系统驱动程序来访

问 NAS 存储设备。该设置要求特定配置以确保正确有效地使用 Oracle。如果没有正确指定配置参数,将会产生以下问题:

• 各种平台的 NFS 客户端有很大区别,而且随操作系统版本而不同。

• 配置参数很难调整。各个平台上有 20 多个 NFS 参数存在显著 区别。

• NFS 客户端堆栈设计供一般用途使用。因此 Oracle 并不需要其中包含的功能(如文件属性管理)。

Oracle Direct Network File System 在数据库内核中实施 NFS V3 协议,使得管理更加简单,性能更出色,可预测性更高。以下是使用这一全新实施的主要优势:

• 它提供对 NFS 服务器输入-输出路径的完全控制,因而获得可预测的性能、简化的配置管理和卓越的问题诊断。

• 其操作避开了内核网络文件系统层的瓶颈和资源限制。但在网络通信模块中仍然用到了内核。

• 它为在所有主机平台和支持的 NFS 服务器上使用 Oracle 提供了通用 NFS 接口。

• 它通过对 NFS 服务器的多个连接之间进行负载均衡,以及并发性得到改善的异步输入-输出操作深度管道来提高性能。

64 WINDOWS 操作系统

64 位 Windows 和硬件使 Oracle 数据库的性能和可扩展性迈上了一个新台阶。目前有两种可用的 64 位 Windows 平台:AMD64 与 Intel EM64T 平台

以及 Intel Itanium 平台。前一个平台使用 Windows x64 操作系统。这两种平

台与 32 位同类产品相比,提供了更好的可扩展性和更高的性能。

Oracle 针对这些 64 位平台展开了大量工作,首家面向 Itanium 和

AMD64/EM64T 平台上的 64 位 Windows 公开提供数据库开发人员发行版

本的数据库提供商。Oracle 在 64 位 Windows Server 2003 for Itanium 正式推出的同一天发布了 Oracle 数据库的生产版本,继续引领 64 位 Windows 计算的潮流。Oracle 的开发团队一直与 Microsoft、Intel 和 AMD 密切合作,确保数据库在系列 64 位硬件和操作系统上均能保持最佳工作状态。

与 UNIX 平台上的 Oracle 64 位数据库类似,Windows 上的 64 位 Oracle 数

据库与 32 位数据库相比,能够处理更多连接、分配更多内存并提供更高的吞吐量。64 位系统更大的高速缓存和内存大大提高了 Oracle 的性能和

可扩展性。不再象 32 位系统那样有 4GB 内存的限制,使得 64 位 Oracle 成为大型事务处理或商业智能应用的理想选择。而且 64 位架构还改善了并行性、任务调度和可用的吞吐量,使 Oracle 获益菲浅。在 Oracle 数据

库中,所有这些性能增强都是透明的,因此不需要修改现有数据库部署的代码即可使用。

除了转移到 64 位平台所实现的内在性能提高以外,Oracle 采用的一项重大

性能改进措施是 Profile-Guided Optimization (PGO)。借助 Intel 的 64 位 Windows 编译器,Oracle 数据库设计为在 Itanium 和 AMD64/EM64T 平台上均可很好地执行典型的客户工作任务。通过在编译时使用模拟的客户工作任务为编译器提供反馈循环,接下来编译器可以分析使用最频繁和很少使用的代码路径。根据该信息,编译器可以整理代码路径,从而提高在 64 位硬件上的运行效率。仅仅通过使用 PGO,不做其他任何修改,Oracle 就已经使性能提高了大约 15%-25%。PGO 改进对现有应用来说是透明的,不需要修改代码。

从 32 位迁移到 64 位 Oracle 非常简单。不必重新创建数据库,也无需全部导出和导入。要做的工作就是将当前数据文件复制到新系统中,安装Oracle 的 64 位版本,正常启动数据库,然后运行几个 SQL 脚本来更新数据字典。

从架构角度来看,当前基于线程的架构经验证可用于 64 位平台。因此,创建新的 64 位 Oracle 软件基本就是重新编译、重新链接、重新测试和重新发布新版本。由于基础的操作系统 API 基本相同,因此在向 64 位迁移的过程中几乎没有编写新代码。此外,由于 Oracle 数据库已经迁移到其他 64 位操作系统上,因此转移到 64 位平台是个很简单的过程,在很短的时间里即可产生优质的稳定产品。

使用 AMD64/EM64T 的一个优势是能够在同一系统中将应用程序从 32 位轻松迁移到 64 位。借助此类硬件,客户可以在 32 位 Windows 上运行 32 位 Oracle 数据库服务器和客户端。也可以在 64 位模式下运行操作系统,使 Oracle 客户端保持在 32 位模式的同时将其他应用程序转换为 64 位。也

可以完全迁移到 Windows x64 平台上的 64 位 Oracle 堆栈。如果在同一台机器上有多个应用程序正在运行,这些选项使客户从 32 位到 64 位的迁移更加轻松。客户可以逐步将应用程序迁移到 64 位。

结论

Oracle Database 11g for Windows 已从 UNIX 数据库服务器的导出版本演变

为完美集成的本机应用程序,充分利用了 Windows 操作系统和基础硬件的各项服务与功能。Oracle 将继续提高其 Windows 数据库服务器的性能、可扩展性和容量,同时为构建应用提供功能丰富的稳定平台。Oracle 全面致力于为 32 位和 64 位 Windows 平台提供表现最为优异的数据库。




声明: 除非注明,本文属( 阳光倾城 )原创,转载请保留链接: http://www.tomrrow.com/archives-2935.html