Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92334700
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-08 10:46:10

 



第三篇
Oracle的架构

Oracle近几个版本(8i、9i)已奠定 Oracle架构的基本元素,此架构施行许久且具备良好稳定性与效能,不过Oracle 10g仍然有进步的空间,虽然基础架构并没有明显的改变,但是在Oracle 10g与Oracle 10g R2之间仍有一些变化,Oracle 将 Oracle 数据库设计为一个数据收集的单元,数据库的目的为储存与处理数据,至于其它的组件则是协助完成以上工作的额外功能。因此,Oracle数据库服务器是程序与公用程序的组合,主要提供安全、有效率的数据处理方式。


2.1 Oracle 数据库服务器

Oracle数据库服务器由实体与逻辑的组件组合而成,在数据库中能有效存取数据的抽象层(Abstraction Layer),Oracle数据库服务器不仅提供最佳化的效能,并兼具极佳的可扩充性,此外,弹性化架构允许外加系统组件更可达到良好的系统效能表现。

Oracle l0g 的数据库服务器,主要由数据库(资讯)与实体(具体化的系统)所组成,数据库包括系统内实体与逻辑的部分,例如:数据库架构将在下一部分将说明数据库档案的多种格式。实体意指数据存取的方式,由行程与系统内存组合而成。

Oracle服务器由以下组件所构成将于本章说明:

■ 数据库

■ Oracle实体

■ Oracle的其它公用程序


Oracle执行项次(Instance)

这里将会出现许多次 Oracle 执行项次,本章会详细说明,Oracle执行项次的定义,意指存取数据库所需的行程与共用内存,,执行项次不属于资料库,事实上,Oracle 10g应用程序实体集群 (Real Application Clusters, RAC)系统的多个执行项次可共享同一个数据库。

我们现在介绍这些组件,加以说明Oracle服务器如何运用这些组件存取数据,并呈现处理的结果。

Oracle数据库包含逻辑与实体层,实体层为实际存放于磁盘的档案,逻辑层则是实体组件数据的映像(Map)。

本章首先介绍Oracle架构的概观,再说明部分作业的细节,如交易过程(Transaction Process)、读取与写入以及其它的工作。我们也会浏览能够影响Oracle效能的部分因素。

2.2 Oracoe数据库

Oracle数据库由实体与逻辑组件组成,实体组件意指数据库服务器外部可浏览的部分,由OS的档案或其它储存组件组合而成。逻辑数据结构表示数据如何存放于数据文件中,只能在Oracle数据库服务器内浏览。在此将说明实体以及逻辑数据结构,将了解这些结构在Oracle数据库服务器中的使用方式。

2.2.1 实体数据结构

数据库的实体层由以下几种类型档案组合:

■ 一个或多个数据文件。

■ 一个或多个控制档。

■ 两个或多个重置日志 (Redo Log File)。

■ 封存日志文件(Archive Log File) (非必要动作,但建议使用)。

■ 参数档。

■ 警告(Alert)与追踪(Trace)日志文件。

■ 备份档。


上述这些为Oracle数据库服务器,得以最佳化以及稳定的重要档案,假使这些文件发生遗失或受损的情况,也许会遗失数据且毁损Oracle执行项次。

资料文件

数据文件包含数据库的存放信息,每一个数据库只有一个专属的数据文件,但是,一个数据库却可被一个以上的Oracle执行项次存取,数据档的数量小至一个;多至数百个,此外,数据文件的最大数必须视操作系统与Oracle版本而定。在Linux系统中,4百万数据区块(Data Block)为最大的数据档大小;因此,若使用较小的区块则数据文件也会比较小。

单一表格的信息可分割为多个数据文件,或多个可共享同一组数据文件的表格。本章将说明数据文件如何组成被称为表格空间(Tablespace)的逻辑对象 - 存放数据库对象的容器,若将表格空间散置于多个数据文件,可能会严重的降低效能表现,此部分将在后面的章节讨论。

除了Oracle数据文件之外,Oracle 10g具有新的自动储存管理(Automatic Storage Management,ASM)。ASM是Oracle专用的档案系统,只有Oracle物件可以使用,其功能可以指派一组磁盘给ASM,并且Oracle已将管理这些磁盘,ASM集结多个磁盘成为一个群组并建立ASM群组,ASM 群组与档案系统类似,因此ASM群组可以以放置大量的Oracle数据储存对象,例如:表格空间、重置日志群组、封存日志文件及备份文件等。

ASM与一殴的Linux档案系统不同,所以OS的指令(如ls)将无法检视ASM群组的内容。除了Oracle表格空间、重置日志等,ASM还提供动态增加或移除磁盘,以及容错的功能,若已使用硬件的容错功能,则不建议使用软件(ASM)容错,主要是考量容错与系统效能的因素。
ASM使用被称为「ASM执行项次」的小型Oracle执项次管理ASM装置,使用ASM装置之前,必须启动并执行ASM执行项次,此外,ASM上限极高,如下所示: 。

■ 每一个储存装置系统可容纳10, 000个ASM磁盘。

■ 每一个ASM磁盘最多可容纳4千兆字节。

■ 每一个磁盘群组可容纳一百万个档案。

■ 每一个档案最大可存放2.4兆字节。
短期内应该不容易使用到像这样的上限(至少等到Oracle 11发行后)。

如果想用ASM建立Oracle储存对象,只需要使用“+”号再指定ASM群组名称,而不是使用档案名称 (例如:应使用‘+diskgroupl’并非档案的名称)。不需要指定ASM群组内的位置。

提示:

建议将重置日志、封存日志与数据文件的实体位置分开,对于ASM群组也是相同的作法。若使用ASM 至少将这些组件分为3个ASM群组,假如很不巧的话,储存媒体发生故障的情形,至少可保有其中两个组件。我们将会在Linux 上安装Oracle 10g文里更详细来说明ASM。


控制檔

控制文件可存放信息,例如:数据库名称、数据的位置及重置曰志档。Oracle需要这些信息才可以启始数据库执行项次,此外,保护这些控制档是必备的基本工作。Oracle提供可储存 多个控制档备份的机制,在集群系统的环境下,每一个集群系统的成员都可以存取这些控制檔。

重置日志档

重置日志文件统称为重置日志,作用为存放数据库的所有变更。这些信息能够应用于系统备援,并可以对数据库重新套用已执行的变更,或是已确认但尚未执行的变更,重置日志必须有良好的效能,并且能免受硬件故障的问题(无论是透过软件或硬件的内错功能),若遗失重置日志的信息,将无法完整的复原系统。

透过为每一个重置日志建立副本,Oracle提供重置日志文件的多任务备份功能,可依照重置日志文件的活动性,选择是否使用此功能。大多数的情况使用硬体RAID技术,透过硬件的 重置日志容错功能,即可避免Oracle与OS的过载问题,因为考量重置日志信息的重要性,所以在此环境下,建议停用磁盘的快取内存功能。在部分特殊情况下,重置日志的活动性很高,如果Oracle镜射的高速缓存,分属于不同的RAID系统,加上使用独立的高速缓存,即可启用I/O子系统的高速缓存。

重置日志文件通常使用于灾难复原,特别是在数据库以及执行项次必须还原的情况下,当系统发生断电的状况时,重置日志文件的信息可将数据库还原至状况发生的时间点。这就是重置日志档如此重要的原因。

在集群系统的环境下,每一个执行项次有专属的重置日志文件,必须让所有系统都可以存取这些重置曰志文件,若集群系统内的某一个节点失效,则可以使用其中一个正常节点来存取失效节点的重置日志档,并复原失效节点部分的数据库。此部分将在于RAC(Real Application Cluster)里来详述。

封存日志档

封存日志文件主要功能为备份线上重置日志档。当执行封存日志模式时,能自动地备份在线重置日志档,封存日志档主要应用于灾难复原,其作用可以复原Oracle数据库:封存日志 也可使用于异地备援管理(Oracle Data Guard)。在本章Oracle登入机制的封存日志程序会有更详细的说明。

参数档

Oracle参数文件存放系统设定信息。参数档共有两种格式,pfile是ASCII文字檔;使用于系统启动时透过文字编辑器编修,spfile(Server Parameter File)为Oracle可读取档;只能在Oracle服务器内编辑,为设定的建议方式,spfile是Oracle数据库预设的启始方式,发布启始指令之后,执行项次会搜寻名为 $ORACLE_HOME/dbs/initSID.ora 的服务器参数档,在RAC环境中,此档案仅包含一个共享的spfile链接(同时也链节至共享档案系统,如OCFS或磁盘装置)。此外,pfile与spfile的主要差异在于pfile为客户端档案,而spfile为服务器端的档案。

透过pfile建立spfile。反之亦然可以使用以下指令建立spfile:

CREATE SPFILE =‘/u01/ORCL/pfileORCL.ora’
FROM PFILE = ‘/opt/oracle /amin/ORCL/pfile/initORCL.ora’;


相对的,可以使用类似指令从一个pfile建立另外一个pfile:

CREATE PFILE = ‘/opt/oracle /admin/ORCL/pfile/initORCL.ora’
FROM SPFILE = ‘/u0I/ORCL/spfileORCL.ora’;

此外,也可以依照以下步骤重设定Oracle的执行项次:

⒈ 建立pfile。

⒉ 透过编辑pfile修改Oracle系统。

⒊ 使用pfile启动执行项次。

⒋ 根据需求修改,如设定索引等。

⒌ 建立spfile。

⒍ 透过spfile重新启动执行项次。


警告与追踪档

警告与追踪文件负责存放Oracle数据库服务器与备份程序的信息,警告日志存放系统启动与关机的作业信息、系统设定、系统状态,以及错误的发生事件。追踪文件则存放系统发生问题的特殊信息,这些追踪文件可协助找出系统的问题并且修正这些问题。

备份档

依照不同的备份类型,会有多种不同格式的备份文件,可以由系统管理者或透过备份程序管理备份文件,并依照实际需求选择备份的类型,以及想要使用的备份软件。

许多Oracle使用者会使用third-party厂商的备份解决方案,提供备份功能的产品使用Oracle的API,并且提供额外的功能,如使用磁带机以及多重装置。


2.2.2 逻辑数据结构

实体数据结构由作业系统档案组合而成,逻辑数据结构则代表Oracle数据库服务器内数据存放的方式。逻辑数据结构依效能与效率表现而设计。

逻辑数据结构由以下组件合成:

■ 表格空间(Tablespace)

■ 区段(Segment)

■ 延伸区块(Extent)

■ 数据区块(Data Block)

这些逻辑数据结构内存放Oracle纲要对象(Schema Object),纲要对象的说明也包含在本章内容中。

Oracle数据结构由多种不同的组件组合而成,部分为逻辑组件;部分则是实体组件,数据库内最小的元素为数据区块,区块的大小固定并且可以存放数据。数据区块的存放方式为一连 串的区块组合称为延伸区块(Extent),此外,数据库对象则由许多的延伸区块组合而成,则称之区段(Segment)。

数据区块、延伸区块与区段都存放在数据文件中,表格空间由一个或一个以上的数据文件组合而成,如下图2-1 表格空间是数据库对象的容器,每当建立一个对象(如表格或索引)即会指派至表格空间内,对象指派完成并设定其属性,RDMBS则自动地管理延伸区块。







本章将学习如何管理数据区块、延伸区块、区段、表格空间、数据文件,以及相关的属性。在下一章学习Oracle数据结构、重置日志文件、控制文件与系统回复机制。

学习Oracle数据结构之后,即可得知Oracle RDBMS的功能,更了解如何管理以及调校系统。了解基本的区块组件之后,将更容易理解我们所介绍的其它部分。

表格空间

Oracle表格空间为Oracle 等数据库存放数据库对象的容器,表格空间由一个或多个数据文件组成,可能是作业系统的档案系统、Oracle集群档案系统(Oracle Cluster Filesystem,OCFS)、RAW装置或使用自动储存管理(Automatic Storage Management,ASM)管理档案。数据文件可以设定为固定大小,也可以使用自动或手动的延伸大小,当建立表格空间且指派对象之后,将自动地执行实体对象储存管理。

通常表格空间为一组使用者或一个群组的使用者,两者共享一组数据设定,例如:Accounts Receivable有专属的表格空间,而Accounts Payable则有另外所属的表格空间,这两个群组可能共享同一个通用分类账本表格空间,并依照分类数据的功能管理空间与使用者。表格空间则会自动地管理其中的数据。

将群组划分为不同的表格空间,可以简化这些群组的管理工作,表格空间由一个或一个以上的数据文件组合而成,使用每个表格空间的多个数据文件,主要可以将数据分散于多个不同的磁盘、,将可配置I/O的负载平衡进而提升效能,也能透过增加额外数据文件扩充表格空间。

Oracle表格空间由一个数据文件,或是最多可达1024数据文件所组成,因此可建立非常大的表格空间,以及非常大的数据库对象。

表格空间的重要性在于综合多个数据文件,以提供最好的数据输出粒度。建立表格空间后,可以有效的控制表格空间内实际的表格分布,表格空间仔细的设定过程中会有几个基本的设定选项(本章将涵盖此部分),但大部分的设定将自动完成。

每一个Oracle数据库至少要一个表格空间,建立一个数据库之后,预设值会建立一个SYSTEM表格空间,数据字典存放于SYSTEM表格空间,系统则会预设将一个使用者指派到SYSTEM表格空间,但不是必须或建议的作法。必须依照需要的功能特性指派使用者的表格空间,也可以指定这些使用者的磁盘使用空间,并指定可使用的空间大小。

表格空间可存放以下四种类型的区段,这些区段包括:

■ 资料区段(Data Segment) 这是基本的区段类型,可存放表格与集群资料。

■ 索引区段(Index Segment) 索引区段可存放索引。

■ 回复区段 (UNDO Segment) 回复区段为特殊的区段类型可复原回复信息,在下一章更详细说明回复区段。

■ 暂时性区段 (Temporary Segment) 暂时性区段可存放暂存数据。

除此之外,Oracle 数据库还提供其它多种类型的表格空间,因为可依不同目的来使用不同类型的表格空间,所以数据库可处理各类型的工作。

■ 标准表格空间(Normal Tablespace) 预设或标准的表格空间类型,可存放Oracle对象,并可以使用CREATE TABLESPACE指令建立。

■ 暂时性表格空间(Temporary Tablespace) 暂时性表格空间可存放暂时性区段,可以使用CREATE TEMPORARY TABLESPACE指令建立。

■ 回复表格空间(Undo Tablespace) 回复表格空间是一种特殊的表格空间,能够存放回复数据,可以使用CREATE UNDO TABLESPACE指令建立。

■ 只读表格空间(Read-Only Tablespace) 只读表格空间是带有只读属性的标准表格空间,无法对只读表格空间作内容变更,只读表格空间的建立方式必须,先建立标准地表格空间再加上只读的属性。

表格空间的预设值供读写功能,但也可以指定成只读属性(将在本章「只读表格空间」的部分详述),只读表格空间可以在许多状况下提供很大的用处。

透过Oracle数据字典(Oracle 8i或更早的版本),或者使用本地管理表格空间,本地管理表格空间的功能为Oracle 9i提供的新功能,并且具备多种优点。

字典管理表格空间 这是数据库早期的空间管理方式,主要透过数据字典的表格来管理延伸区块,无论建立或释放延伸区块都将会更新数据字典的信息,延伸区块已经长期的使用此种管理方式。

字典管理表格空间时,将会依照PCTINCREASE参数对表格空间与对象定义一个初始的延伸区块大小、下一个延伸区块的大小,以及每一个额外延伸区块的大小。因此,指定每一个额外延伸区块会比前一个建立的延伸区块大多少?这种机制非常便利,而且Oracle提供更好的管理机制,就是本地管理表格空间。

本地管理表格空间 Oracle 8i开始提供本地管理表格空间的功能,而Oracle 9i则将此功能设定为预设的表格空间类型,在Oracle 10g也是预设的表格空间类型,除非指定其它类型,否则本地管理选项将是新建的表格空间类型。

本地管理表格空间可以管理表格空间内的延伸区块,此功能提供更佳的弹性,并减少数据字典的竞争。使用本地管理表格空间可建立统一大小的延伸区块,或建立更大的表格空间,此外,本地管理表格空间利用位图(Bitmap)来管理表格空间内的延伸区块。使用字典管理表格空间编辑延伸区块时,不会建立退回(Rollback)信息。


透过本地管理表格空间的延伸区块大小,可以设定为自动,或者依照每一个表格空间为基础,也可依数据库对象的储存媒体而定,若指定延伸区块的大小则表格空间内均使用统一的设定。

手动或自动的区段管理 可以透过手动的Freelist或自动的位图来管理表格空间的所有区段,Freelist为传统的区段管理方式,可以使用PCTUSED与PCTFREE,本章将说明此部分。指定Segment Management子句即可设定为手动的Freelist区段管理,Oracle 9i提供新的位图区段管理方式,此种方式以自动化区段空间管理所著称,并成为较常使用的区段管理方式,其作用可以指定AUTO来启动位图的延伸区段管理。


表格空间的大小

通常表格空间最大可至1024数据文件,Oracle数据文件的限制为4百万个区块;Oracle的大小限制为4百万区块x区块大小,并视各种操作系统而定义其操作系统的数据文件上限,因此,数据文件的上限可依操作系统档案大小或Oracle的限制而定,其中后者会比较小。

Oracle 10g使用了Bigfile表格空间,Bigfile表格空间可允许建立4兆区块的大型数据文件,此种表格空间支援大型数据文件可配合RAID系统或ASM使用,若使用CREATE BIGFILE TABLESPACE指令,就可以建立Bigfile表格空间。

建立表格空间 建立表格空间必须指定一个或多个数据文件,以及储存的参数,数据文件可能是档案系统的档案或储存装置,储存参数可以定义表格空间的使用方式,本章将说明其重要性以及详细的内容。

CREATE TABLBE 指令可配合许多参数建立表格空间,因为选项众多而且使用者可以很简单的检视这些选项,所以在此仅讨论其中的部分选项。建立表格空间的基本指令如下:

CREATE [UNDO] TABLESPACE tsname
DATAFILE data_file_name data_file_size
[storage clause]
[BLOCKSIZE size [K] ]
[TEMPORARY]
[EXTENT MANAGEMENT DICTIONARY]
[EXTENT MANAGEMENT LOCAL [AUTOALLOCATE] ]
[EXTENT MANAGEMENT LOCAL [UNIFORM SIZE size [K/M] ]
[SEGMENT SPACE MANAGEMENT AUTO]
[SEGMENT SPACE MANAGEMENT MANUAL]


以下为几个重要参数的说明。






建立表格空间有许多选项参数可使用,可以在Oracle的文件中找到这些参数选项。以下为建立表格空间的几个范例。

本地管理表格空间的简单范例。

CREATE TABLESPACE ts1
DATAFILE ‘/u01/app/oracle/oradata/orac/ts01.dbf’SIZE 10M;
CREATE TABLESPACE ts2
DATAFILE ‘/u01/app/oracle/oradata/orac/ts02.dbf’SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;

字典管理的表格空间。

CREATE TABLESPACE ts3
DATAFILE ‘/u01/app/oracle/oradata/orac/ts03.dbf’SIZE 10M
DEFAULT STORAGE (INITIAL IM NEXT 1M PCTINCREASE 10)
EXTENT MANAGEMENT DICTIONARY
SEGMENT SPACE MANAGEMENT MANUAL;

本地管理的回复表格空间。

CREATE UNDO TABLESPACE undo01
DATAFILE ‘/u01/app/oracle/oradata/orac/undo01.dbf’SIZE 10M;

CREATE TABLESPACE指令中具有许多的参数选项,在Oracle文件中可看到所有选项的详细清单。

合并表格空间 本地管理的延伸区块通常不需要合并,但是字典管理有时候需要使用表格合并的功能,因为数据字典可以管理表格空间、配置各种空间大小到延伸区块的纲要对象,若重复的配置空间之后可能会产生空间碎片。配置延伸区块之后,Oracle将寻找最接近需求的空间大小,再配置成新的延伸区块,当表格空间建立一段时间之后,依需求新增或释放延伸区块,会发现延伸区块旁有许多零碎的自由空间。

透过合并表格空间即可合并相邻的自由延伸区块,如此一来,能够在配置新的延伸区块时,弹性的运用自由空间。

系统表格空间

若使用本地管理SYSTEM表格空间,将无法建立任何字典管理表格空间,而且也无法使用上述范例。若想建立字典管理表格空间必须使用字典管理SYSTEM表格空间。

新增数据文件至表格空间

新增数据文件至表格空间的方式,除了在表格空间建立期间指定需加入的数据文件之外,还 有另一种更快的并行作业方式。在建立表格空间期间建立数据档,属于序列性一次一个的作业,但是在建立大型表格空间时,若采用并行作业方式将可以节省很多的时间。

若没有停用SMON的功能,SMON程序则自动的合并表格空间,虽然手合并表格空间的机 会很少,仍需要了解如何执行这项工作。

新增数据文件 需要更大的空间,或者想把I/O流量分散至更多颗磁盘,需要新增更多的数据文件至表格空间,此时,新增数据文件至表格空间将比数据库建立期间更快速。CREATE TABLESPACE指令以序列地方式工作,代表数据文件一次一个的建立,并透过新增数据文件即可并行的处理此作业;因此可同步的新增多个数据文件。


新增数据文件可以使用ALTER TABLESPACE指令,范例如下。

ALTER TABLESPACE ts1
ADD DATAFILE ‘/u0l/app/oracle/oradata/orac/ts01b.dbf’ SIZE 10M;

此指令新增名称为ts1的额外10MB数据文件至表格空间。

变更表格空间属性 可以使用ALTER TABLESPACE指令,变更表格空间属性:

■ 新增或重新命名资料文件。

■ 变更为ONLINE或OFFLINE。

■ 合并字典管理表格空间的延伸区块。

■ 开始或结束备份模式。

■ 从永久改为暂时,或者从暂时改为永久。

■ 更改储存子句、大小或成为autoextent模式。


由以上的说明可发现,有许多的选项。


只读表格空间 前文提到将表格空间变更为只读属性,只读表格空间比读写表格空间小,并且被限制为不可更改其中的纲要对象,若被设定为只读表格空间之后,则不需要备份表格空间。

因为数据保证不会被更改,所以不需要常态性的备份只读数据,若表格空间曾经执行备份工作,则可以加强表格空间的保存性。


因为只读表格空间并非透过Oracle编修,通常会将这类型的表格空间存放在只读的媒体,如CD-ROM或WORM,若必须随时可读取数据那么CD-ROM将会是很好的选择。

建立只读表格空间 所有的表格空间在使用前都会先建立为可读写并指派数据,当表格空间内建立数据与索引后,即可透过ALTER TABLESPACE指令,或者使用Oracle Enterprise Manager来设定为只读表格空间。

可以使用ALTER TABLESPACE指令来建立只读表格空间。使用的语法类似以下范例:

ALTER TABLESPACE “ts1”READONLY;

只读表格空间有许多用途却非常特殊,必须依照用途选择使用此类型的表格空间。

若有大量的固定数据可以存放于速度较慢的媒体,则可以选择使用只读表格空间,或者不需修改的旧数据也可以使用此种类型的表格空间。

暂时性表格空间 当无法提供内存给排序数据时,暂时性表格空间可提供数据排序使用,透过指派表格空间给排序作业后,在表格空间中不需配置或解除配置空间来给其它用途,因此会产生碎片。

当排序作业无法使用内存时,则必须建立并且使用暂时性区段。暂时性区段可以配置延伸区块,并且继续配置延伸区块直到空间足以执行排序作业为止,当执行大型DSS查询时,这些暂时性区块有可能会非常大。

当此类型作业指定使用表格空间后,不仅排序作业会更有效率,而且将会减少暂时性使用数据表格空间的机率。

建立暂时性表格空间 可以使用CREATE TABLESPACE指令来建立暂时的表格空间,也可以使用GUI工具或ALTER TABLESPACE指令,可将永久性格空间变更为暂时性空间。表格空间可以使用类似以下的语法变更属性:

ALTER TABLESPACE “ts2” TEMPORARY;

将表格空间从永久性改为暂时性,或者从暂时性改为永久性的机率不是很大,通常会使用其 一种方式建立暂时性表格,并且继续保持这种型态。


表格空间的诀窍 表格空间为纲要对象维护空间的资源。试着想象一下,如果类似在磁盘组上的档案系统已配置空间,直到建立或存放档案后才正式开始使用,此为Oracle 表格空间的实际状态。


建立纲要对象后,就会从表格空间中配置延伸区块,而这些延伸区块任纲要建立时的储存参数,或者表格空间储存参数的默认值而配置。

Oracle依照可得的自由空间,尝试平衡表格空间,虽然这可能会产生一些问题。

假设有两个18GB 的磁盘且建立两个数据文件;第一个磁盘10GB,第二个5GB,Oracle会依比例较大磁盘存放比另一个硬盘多两倍的数据,虽然这样的设计很好,但有可能造成较大表格空间必须负担两倍的I/O流量,相较之下,这一种I/O不平衡不够完美,若需要使用多个数据文件建议将数据文件平均的分布于磁盘上。

其它比较好的I/O负载平衡方式,通常来自于硬件或操作系统本身的特性 (如磁盘阵列) ,无论是硬件或软件的磁盘阵列都将因此而产生更好的负载平衡。

设定与管理表格空间属于费时的工作,必须做好事前的预备工作,而且预先规划绝对是值得的,完善的预先规划可以减低日后解决问题的时间。

表格空间的维护 建立表格空间之后工作还没有完成,必须监控空间使用以及表格空间的负载平衡,容量规划是非常重要的任务,早期发现并且解决问题将可减少严重问题的发生机率,此外,透过监控系统与事先规划可避免高成本的停机问题。

RAID比表格空间负载平衡更好

磁盘阵列是一种可以在多个磁盘间取得I/O负载平衡的简单方式,硬件或软件数组可以将数据均衡的分布在多颗磁盘之间。

Oracle数据库建立表格空间的传统方式为建立许多数据表,并散置于单一的磁盘。现在有更好的更新方式:透过建立RAID数组在表格空间内建立条状少量的大型资料文件。

常态性监控表格空间

在一个月中,排定几天监控系统效能,并且在月初订定排程,选择不同天与不同的时段将可取得不同的样本。

监控表格空间 可以使用Enterprise Manager或许多厂商开发的应用程序监控表格空间,都可以很便利的使用图表显示表格空间、延伸区块及区段,虽然定期监控表格空间是很好的想法,但是本地管理表格空间可以更简化表格空间的管理工作。

表格空间管理中最重要的工作为空间管理,通常数据库茁壮的速度会远远地超出预期,若没有做好准备将可能造成很大的空间问题。

负载平衡 为了确认效能表现必须监控磁盘的实体I/O使用率,定期观察高峰与离峰的实体磁盘状态,千万不要期望状况会一成不变,因为系统的效能表现会持续的改变,所以必须持续的监控。

资料区块

Oracle透过逻辑结构控制存放数据的空间使用,这些结构包括区段、延伸区块与资料区块。区段是一组延伸区块的组合,可存放特殊类型的数据:区段则是由多个延伸区块所组成,而 延伸区块是由数据区块所组成(如图2-2),此外,区块是Oracle数据库内最小的储存单位,数据库区块包含区块以及数据的表头信息。






资料区块为Oracle数据库的最小组成元素,每一个磁盘与Oracle数据在内存的I/O作业都是在区块等级内完成,虽然多个区块可能会同时进行读取与写入作业,但Oracle数据存放于磁盘的内存与区块,数据区块的大小依需求可能小至512字节或大至64KB。

Oracle 9i介绍了非标准区块大小的概念,在Oracle 9i与Oracle数据库10g服务器中,提供不同表格空间;使用不同区块大小的功能。
区块是所有数据存放在Oracle数据库中的基本建构组件,Oracle区块中存放多个row piece,一个row piece可能是完整的row、一部分的row或row的指标,若区块中仅存放部分的row 则代表这是一个Chained Row,若区块存放row的指标,那么这是一个Migrated Row,Chained Row与Migrated Row将于梢后讨论。


非标准区块大小

Oracle 9i之前,数据库的所有区块均为同样大小,数据库建立时,即设定固定的区块大小。Oracle 9i,数据库仍会先建立一种区块大小,但额外建立的表格空间可以使用不同的区块大小,数据库便可最佳化OLTP与数据仓储应用程序,这样的设计可符合不同数据库活动的需求,小型区块适合使用于OLTP形式的活动, 大型区块则符合数据仓储与决策支援应用程序。


区块由多个部分组成,区块最前端为区块的表头,接着是表格目录,再来是row目录,区块的其余部分则为可使用空间与row数据,由PCTFREE与PCTUSED配置参数,可以决定区块如何配置自由空间与row数据,这些将在稍后说明。区块表头、表目录及row目录放在最前端,大约占用84至107字节的空间。区块的各个部分说明如下:






Oracle的区块如图2-3

区块是Oracle数据结构中其它组件的基本容器,数据存放于磁盘与缓冲怏取的区块中,以有效率的区块存放为主,可以带来良好的系统效能与减低空间浪费,但是区块可能产生的缺点,就是可能会变成Migreated Row或Chained Row。


Migreated Row 与Chined Row 当row pieces没有存放于数据区块中,或整个row pieces没 有存放于资料区块即发生两种状况,这两种状况分别是Migreated Row与Chined Row,Oracle建立几种机制可以编辑资料与支援row。以下为这些状况说明。

Migreated Row 当更新的数据与row piece无法存放于区块,此时row将会全部移动到不同的数据区块,因为索引会依照区块中row的rowid或位置,维护地址的信息,为了维持位址数据的正确性,数据则会移动到新的区块,并且在原来的位址留下一个指标。

基本上这属于位址转送,虽然可避免更新索引,但对于长期执行却显得没有效率。

Migreated Row会造成系统的负担,因为Oracle必须花费CPU时间寻找row的空间,然后复制row到新的数据区块,此项工作将会消耗CPU时间与I/O流量,因此UPDATE状态会导致效能浪费。

Chained Row 假使row被置放于一个大小不符合的区块,那么row将会被打散为多个row pieces,并且散布于多个不同的区块,这些row pieces称为Chained Row,虽然可以避免或修正Migreated Row,但是通常只有在数据库建立时,设定较大的区快大小才可以尽量避免Chained Row的状况。

若想要更改区块大小可以先汇出数据,再重建数据并设定更大的区块大小,使用Oracle 9i即可建立新的表格空间来设定更大的区块大小,并且复制数据至新的表格空间。

很难避免Chained Row的问题,尤其是长字段、长CHAR或VARCHAR2栏位的情况下,若特别注意大型字段的问题,可在数据库建立时有效的调整数据库区块大小。

适合的区块大小可确保有效的区块使用,以及I/O流量最小化,若建立太大的区块,将无法有效率利用SGA的空间。若建立太小的区块则可能使row无法放入区块,必须视应用程序与数据的使用需求来设定区块的大小。

产生Chained Row不仅会造成系统的负担,而且还会在存取时造成问题,Chained Row需要一次以上的I/O读取row,Oracle读取的数据来自于数据区块:每一次存取row会让SGA读入多个区块。

监听Migrated Row与 Chained Row 可以使用ANALYZE指令的LIST CHAINED ROWS选项来检查Migreated Rows与Chained Rows,为了分析这两种情况,必须先建立CHAINED_ROWS表格,这个工作可透过SQL程序utlchain、sql来执行,可以在Oracle的RDBMS/admin目录下找到这个程序。

SQL>@utlchain
Table created.
SQL>Rem
SQL> Rem Analyze the Table in Question
SQL>Rem
SQL>ANALYZE
2 TABLE scott.emp LIST CHAINED ROWS;
Table analyzed.
SQL>Rem
SQL>Rem Check the Results
SQL>Rem
SQL>SELECT * from chained rows;
no rows selected

被选出来的row,可能是Chained Row或Migreated Row,解决这个问题的方法则是将有问题的row复制到暂时性表格,并删除原始的rows,再将暂时性表格的row重新放回原来表格。

PCTUSED与PCTFREE
建立表格空间时,可以指定表格空间为本地管理或字典管理(将在下一个部分说明)。除此之外,本章也会说明如何使用手动或自动管理区段,若想要选择使用手动管理区段,则可以使用PCTUSED与PCTFREE参数来指定数据区块的配置方式,若选择自动管理区段将无法使用这些选项。

在手动区段管理模式下,可以使用储存参数PCTUSED与PCTFREE,在数据区块的表格、索引、或表格空间建立时,设定其属性。这些参数可定义数据区块的数据存放,以及为更新而保留的空间大小,若使用PCTUSED与PCTFREE即可以更准确的管理数据区块,在许多情况下,了解应用程序与数据将可协助提升整体系统效能。

前面已讨论过Chained Row与Migreated Row对效能的影响,容易产生于资料区块空间不足时执行插入或更新的作业。PCTUSED与PCTFREE参数可以为区块保留更新的空间,故可避免Migreated Row的情况发生。

将PCTFREE想象为高水位,而PCTUSED为低水位,若数据区块的空间比PCTFREE更少,则区块将无法新增任何的row,直到表格的总空间比PCTUSED更少才可以再次加入新的row。
PCTFREE与PCUSED的加总不可以超过100,因为PCTFREE代表100的高水位,若两者总和大于100将使得这个公式不一致,而且PCTFREE会低于PCTUSED。

PCTFREE
PCTFREE可以在数据区块内保留已存在row的成长空间,可以持续新增row至数据区块,直到数据区块的总空间低于PCTFREE的设定值。

高的PCTFREE数值,会带来以下的影响:

■ 已存在的row将会有很大的总成长空间。

PCTFREE – PCTUSED的范例

假设PCTFREE与PCTUSED使用以下的数值设定:

PCTFREE = 20
PCTUSED = 40

在此例中,可继续新增 row至数据区块直到数据区块达到80%使用率(100%-20%),此时数据区块无法新增更多的row;剩余的空间被保留,作为现有数据的成长空间,更新也可使用此额外空间。
当数据区块的使用率减低为40% (已使用)时,才可以新增row至数据区块,如此一来,数据区块即可保有已使用row的成长空间,并且避免Chined Row的问题。
预设的PCTREE与PCTUSED参数值如下:

PCTFREE = 10
PCTUSED = 40

■ 因为区块重组频率降低,故可提升效能表现。

■ 因为避免Chained Row的问题,故效能因此提升。

■ 因为区块使用比较没有效率,所以通常需要更多的空间,数据区块中通常都有一定数量的闲置空间。


低的PCTFREE数值会有以下相反的效果:

■ 较少的成长空间提供给已存在的row。

■ 因为区块重组的频率高,所以产生较差的效能。

■ 因为产生Chained Row的机率增加,造成CPU使用率及额外I/O流量也会变大,所以效能变差。

■ 空间使用更有效率,区块的空间使用率较高可以减少空间的浪费。


若应用程序必须经常新增数据至row,那么PCTFREE可协助处理这个状况,因为PCTFREE选项可使用于CREATE CLUSTER、CREATE TABLE、CREATE INDEX与CREATE SNAPSHOT指令,所以建议个别检查每一个表格,集群及索引,并且决定各个项目的合适的PCTFREE数值。


PCTUSED 只要达到PCTFREE的设定值,即无法新增区块,除非区块的总空间低于PCTUSED,另一个PCTUSED的特性则是Oracle会使用现有的数据区块,除非超过PCTUSED的设定值才会新增资料区块。

高的PCTUSED数值有以下特性:

■ 因为可能会产生许多的Migrated Row与Chained Row,所以会降低效能。

■ 因为数据区块使用率更高,所以可避免空间浪费。
低的PCTUSED数值有以下的影响:

■ 因为Migrated Rows 与Chained Row数量减少,所以效能可以提升。

■ 数据区块中有更多未使用空间,所以空间利用比较没有效率。


与PCTFREE一样,建议个别评估每一个表格是如何设定PCTUSED参数值,将可大幅提升系统的效能。

调整PCTFREE与PCTUSED参数值时,可依照以下准则:

■ 更新频率,row的高成长 若应用程序必须经常执行更新作业,那么row的大小就会造 成影响,此时可设定高的PCTFREE数值,以及低的PCTUSED参数值。如此一来,对数据区块的row提供很大的成长空间。
例如:

PCTFREE=20-25
PCTUSED=35-40
(100 – PCTFREE_) - PCTUSED = 30 to 45

■ 插入活动,row的低成长 若插入新的row更新率就会降低,形成低的row成长率,此时可设定低的PCTFREE数值,并且设定比较高的PCTUSED数值,以避免Chained Row的问题。这样的空间配置让数据区块可新增rows,直到形成Migreated Row或Chianed Row的临界点。除非数据区块释放出足够的空间才可以继续插入新的rows。

PCTFREE = 20
PCTUSED = 30
(100 - PCTFREE_) - PCTUSED = 30 to 45

■ 效能为主,空间充裕 若非常重视效能,同时也有足够的可利用空间可以设定很高的PCTFREE,以及非常低的PCTUSED参数值,确保杜绝Migrated Row与Chained Row的问题,虽然这样可能有点浪费空间,但是却能够有效避免Migrated Row与Chained Row的问题。
PCTFREE = 30
PCTUSED = 30
(100 - PCTFREE_) - PCTUSED = 40

■ 空间为重,效能其次 若有大量的表格或中等的表格空间,而磁盘空间非常宝贵,此时可可设定非常低的PCTFREE与极高的PCTUSED,这样的配置可以最有效运用有限的空间,值得注意的部分则是可能因为产生Chained Row与Migrated Row,所以造成效能滑落。

PCTFREE = 5
PCTUSED = 90
(100 – PCTFREE_) - PCTUSED = 5

▓ 提示:

只有手动区段管理模式可以使用PCTUSED及PCTFREE参数,建议使用自动延伸区段管理模式。

使用多种区块大小

Oracle 9i带来最引人关注的功能,就是在同一个数据库内混合使用多种区块大小,这样可以分别在DSS使用大型区块,同时在OLTP使用小型区块,这是很便利的功能,但是成效取决于管理者对系统及数据的了解程度。

为了应用多重区块大小的能,必须遵守两件事情,首先必须依照区块大小划分Oracle暂存区快取内存,再以非标准区块大小建立表格空间。

▓ 提示:

设定DB_CACHE_ADVICE为ON能够将多重区块大小的效能统计数据,集合至
V$DB_CACHE_ADVICE 表格可藉此检视效能。


以非标准区块大小设定Oracle暂存区高速缓存快取内存 内存依照DB_CACHE_SIZE参数 的预设值来配置给暂存区高速缓存,标准区块的大小由DB_BLOCK_SIZE参数设定,而非标准区块大小,则依照DB_2K_CACHE_SIZE、DB _4K_CACHE_SIZE等参数设定。

依照想要配置的预设区块大小,来设定DB_CACHE_SIZE参数值。在总记忆体中,视需求个别设定DB_CACHE_SIZE、DB_4K_CACHE_SIZE等。

▓ 提示:

KEEP、RECYCLE与DEFAULT的多重暂存区高速缓存设定,只会套用在预设区块大小。

以非标准区块大小建立表格空间 为了建立非标准区块大小的表格空间,必须在建立表格空间时,使用BLOCKSIZE的关键词,并在关键词后面写想要设定的区块大小。其范例如下:

CREATE TABLESPACE oltp_ts
DATAFILE ‘/u/oracle/data/o1tp1.dat’SIZE 100M,
‘/u/oracle/data/o1tp2.dat’SIZE 100M
BLOCKSIZE 2K

这个范例可建立2K的表格空间,也可参考此范例来建立其它的表格空间大小。

延伸区块

为了使Oracle RDBMS达到更好的弹性化与保持良好的效能,必须建立可以一起建立与管理连续区块组合的机制,若要让整个Oracle磁盘子系统的不同区块分别散布不同的对象,如此将使系统没有效率且速度变慢,为了让系统更有效率,因此,建立了延伸区块。

延伸区块是一组连续区块组合而成的Oracle对象,只要对象需要新增空间即建立此区块组,延伸区块的数量由延伸区块管理所定义,也就是储存参数。

字典管理的表格空间延伸区段管理
延伸区段的传统管理方式,就是在
CREATE TABLE或CREAT TABLESPACE子句指定延伸区块的大小,在此可指定区块最小值、第二延伸L 遣的大小,以及每一个额外延伸区块成长的百分比,如此一来,可以配合对象的需求提供更大的延伸区块,因为表格空间的延伸区块信息均存放于数据字典,所以非常有效率,但是往往这样却会造成系统的负担,正因为如此,造成了本地管理表格空间的延伸区段管理问题。


本地管理表格空间的引申区块管理
负责管理表格空间内的延伸区块,依照设定可以是同样的大小,或是更大的区块大小。这项设定取决于UNIFORM或AUTOALLOCATE子句的设定,并可以指定延伸区块由位图管理,而不是透过数据字典管理。虽然这样可能会比字典管理建立更多的延伸区块,但这个方式更快速也更简单,除此以外,若使用统一大小的延伸区块,无论是字典管理或是自动配置延伸区块都不会产生碎片的问题,所以建议本地管理表格空间使用自动配置延伸区块的方式。

区段

区段是特定Oracle对象的延伸区块组合,如表格、索引等。区段有多种类型其说明如下:







这些区段可以想象为数据的对象,虽然其中也有些例外状况,实际上Oracle集群在区段内存放多种对象,而部分表格则是多个区段组合的对象,除了少数例外状况之外,区段为延伸区块所组成的对象。

2.3 Oracle执行项次

Oracle数据库服务器由数据库与Oracle执行项次所组成,本章前面的部分已说明Oracle执行项次,此为Oracle数据库服务器最重要的组件,然而,往后仍有许多与Oracle执行项次相关的部分。

2.3.1 执行项次的定义

Oracle执行项次由Oracle行程与数据库存取信息的共享内存组成,执行项次由多个Oracle背景行程,以及这些行程使用的共享内存所组成,如图2-4显示

Oracle背景行程与记忆体共同组成Oracle的执行项次,而Oracle执行项次与数据库则形成Oracle数据库服务器。

Oracle执行项次由Oracle背景行程,与这些行程使用的内存所组成。而Oracle执行项次的定义不包括实体数据库,但是启动数据库却需要Oracle执行项次。







2.3.2 执行项次的组件

如上一段所说明,Oracle执行项次由Oracle背景行程与行程使用的共享记忆体所组成,背景行程由多个执行项次建立时,即会产生多个背景执行的Oracle行程,这些行程可维护Oracle数据库,也可以行使用者指定的工作。

除了背景行程之外,为了存取Oracle数据库,必须配置内存提供给这些背景行程与使用者形成,这些内存也被称为SGA(System Global Area),在这一个部分,将学习背景行程与SGA内存。

背景行程

Oracle行程透过背景行程在Oracle执行项次中执行多种工作,这些工作包括

实时应用程序集群

Oracle执行项次由Oracle背景行程与行程使用的共享内存SGA(System Global Area)。

Oracle执行项次可连接一个数据库,并组成一个Oracle数据库服务器,而且多个执行项次可连接至同一个数据库,这是Oracle实时应用程序集群的基础又称为Oracle RAC,虽然集群是简释,但较常使用。与其它Oracle执行项次沟通、执行系统维护与清理,将已存取的区块写入磁盘,以下为Oracle背景行程的简短描述。








以上列出许多类型的背景行程,在部分作业统上(如Microsoft Windows)背景行程其实是单一行程内的多个执行绪,这样可能会产生问题,因为单一行程内的所有执行绪必须共享同样的虚拟内存地址空间。

在linux上,背景行程就是行程而不是执行绪,因此提供非常有弹性、高效能以及稳固的系统。

SGA

SGA是Oracle的共享内存区域,可存放数据并控制一个Oracle执行项次的信息,当Oracle执行项次启动后,即配置SGA;并且在结束Oracle执行项次时,解除SGA的配置。每一个Oracle执行项次都有专用的SGA,SGA的信息由数据库缓存器、重置日志暂存器及共享数据区(Shared Pool) 成:在执行项次启动时建立并有固定的大小。

数据库缓存器快取
缓存快取内存存放最近使用的数据区块,这些区块可存放已存取,但尚未写回磁盘的数据(又称为Dirty Block),尚未存取的区块或存取后已写回磁盘的区块(又称为Clean Block)。因为暂存区快取依照MRU(Most Recently Used)语法保存,所以内存保留最常使用的暂存区,便可减低I/O流量并提升效能。

暂存区可分散为多个不同的片段,也就是Keep Cache、Recycle Cache、与Default Cache,这些快取有不同的目的,并且可增加系统的效能。


除了上述的三种缓存区快取片段之外,Oracle 9i还提供非预设大小的暂存区快取区块。可建立多种不同大小的缓存区快取区块,但是预设区块的大小只能够切分为Keep、Recycle及Default。

重置日志缓存区
SGA 的重置日志缓存区可存放重置项目,或者表格的变更纪录,重置日志暂存区可以用最有效率及最快的速度将数据写入重置日志,重置日志的目的为快速复原系统的功能。

共享数据区
SGA的共享数据区可以存放共享内存结构,如Library Cache与数据字典内部数据的共用SQL区域。

Large Pool
是一个选用项目可以替代共享数据区的功能,Large Pool可使用于I/O作业、备份、回复、共享服务器行程、XA接口的内存,以及并列查询选项的并列讯息队列内存。


共享数据区非常重要,假设内存配置给共享数据区的空间不足将降低效能表现,共享资料区由Library Cache与数据字典快取所组成。

函式库快取缓冲区(Libaray Cache)
函式库快取缓冲区可存放共享SQL指令区,解析完成的parse tree与execution plan就是放在共享SQL区之内,若多个应用程序使用同样的SQL叙述句即可减低内存使用量,并且减低存取parse tree的时间。

数据字典缓冲区(Dictionary Cache)
Oracle数据字典包涵一组表格与视观表(view)的参考数据,Oracle将数据库逻辑结构与实体结构的数据存放于此。数据字典包含以下信息:

■ 使用者信息,如使用者存取权限。

■ 数据库表格的整合性规范。

■ 数据库表格所有栏位名称与数据类型。

■ 纲要对象的空间配置与使用信息。

为了分析SQL叙述句Oracle 经常存取数据字典,Oracle使用的存取作业经常因为数据字典的效能瓶颈,进而影响所有的数据库使用者,若能有效率的配置共享数据区,便能有效杜绝这样的效能问题。

2.4 使用者行程

除了Oracle的背景行程之外,还有另外一部分属于使用者行程(又称为伺服器行程)。这些行程负责处理来自于使用者的数据处理,并且回传给使用者,除此之外,服务器行程也负责编辑使用者在缓存器高速缓存内的数据。

使用者或客户端行程意指使用者联机至Oracle数据库服务器,使用者行程透过Oracle程序接口、操作使用者的输入与Oracle服务器行程,使用者行程也可以显示使用者查询的信息,或者将信息以更实用的形式呈现。

2.4.1 服务器行程

使用者联机至Oracle 数据库服务器时建立代表的服务器行程,又称为影子行程(Shadow Process),服务器行程连接使用者与Oracle接口,主要负责回复使用者的查询。例如:使用 者行程查询一个SGA没有的数据,影子行程负责从数据文件读取此数据区块并将数据到SGA。使用者行程与影子行程之间可能是一对一的关连性(依照服务器的设定),虽然一个影子行程可连接多个使用者行程(在多执行绪服务器的设定) 如此可减低系统资源的使用率。

2.4.2 PGA内存

PGA是一个内存区域,其存放Oracle服务器行程的数据与控制信息,依照Oracle服务器安装时的选择来决定PGA存放数量与内容。此区域存放以下元件:

■ 堆栈空间(stack Space) 存放session的变量、数组等。

■ Session信息 若非执行于多执行绪服务器,session信息存放于PGA,若在多执行绪伺服器,session信息则存放于SGA。

■ 私有SQL区域 属于PGA区域的一部分,如使用的结合变量(Binding Variable)与执行期缓冲区(Runtime Buffer)。

因为可能会有数百位使用者同时连接Oracle数据库服务器,所以在决定系统大小的时候,必须注意使用者内存,内存的总数为所有使用者行程的加总。本文章将说明内存中,关于SGA与PGA内存区域的设定。

2.4.3 MTS与专用服务器行程的比较

在专用服务器行程(Dedicated Server Process)中,使用者行程与服务器行程属于一对一的关连性,每一个服务器行程只对应一个使用者行程。在大型系统中可能常态性的有大量使用者连接Oracle数据库服务器,所以会有大量的行程,为了减低行程的数量可以使用交易监控、多任务器(Multiplexer)或使用Oracle多执行绪服务器选项,MTS提供多使用者连接同一个共享服务器行程。

MTS如何运作
多执行绪服务器将使用者需求队列于共享资源区,提供许多使用者共享多个共享的服务器行程,这些需求成为队列由共享服务器行程执行。分配器行程负责管理使用者的的联机与需求的队列,这些分配器行程负责接收需求与配置需求于队列,完成需求后回传数据给使用者。

MTS与专用服务器
多执行绪服务器的最大优点为减少服务器行程,可以有效减少CPU使用率,以及内存使用率。但是,多执行绪服务器同时也可能会造成系统的额外负担。因此 对于长时间执行的批次作业,建议使用专用服务器行程。

对于个别的每一位使用者,专用服务器行程更有效率且快速,但是Oracle数据库服务器执行共享伺服器行程会比较有效率。因为每建立一个新的服务器行程,同时会消耗内存与系统的资源。如果在Linux系统执行专用服务器行程,系统将能够顺利的负荷数百位使用者的使用率,但如果增加至600-700使用者,比较适合使用多执行绪伺服器模式。

2.5 Oracle 10g新功能

Oracle 10g提供新的功能,可提升效能、稳定性、管理性及延展性,而且能够使用网格运算功能。Oracle数据服务器几乎每一个组件都有强化这一个新功能。

2.5.1 效能与稳定性的功能

Oracle 10g效能与稳定性的功能,包含以下特性及强化的部分:

■ 网络设定参数 为了最佳化特定应用程序与网络,Oracle 10g提供TCP/IP设定传送与接收的缓冲区。

■ InfiniBand网络支持 Oracle增加对InfiniBand网络Sockets Direct Protocol(SDP)标准的支援,所以可以使用新的InfiniBand网络。

■ RETURNING叙述的单一集合聚合机制 将多个交易行程集合至同一个表格,大幅提升功能性。

■ Data Pump Oracle的Data Pump 提供类似以往Export/Import的工具,却拥有更高的效能与功能组合。

Oracle 10g 提供的效能与稳定性值得一试,但是还有许多其它的功能促成这一个版本的发行。

2.5.2 集群

Oracle 10g 要大幅提升与加强多个RAC的新增功能,包括以下:

■ 高可用性延伸套件 Oracle 10g RAC提供RAC延伸套件,主要可加强应用程序。

■ 集群工作量排程 可于集群等级排程,而不须在执行项次等级编辑应用程序。

Oracle 10g 要RAC为网格运算架构的关键要素,并且加强对此工作的支持。

2.5.3 可用性

Oracle对可用性功能提升最好的强化(除了Oracle 10g RAC之外),如:

■ 轮替式升级(Rolling Upgrade) 从这一个版本开始,可以透过逻辑备用数据库执行轮替式升级,但必须要配合DATA Guard与SQL。

■ 强化在线重新定义 (Online Redefinition) Oracle加强数据库运作期间的重新定义纲要对象功能。

2.5.4 可管理性

加入多个可管理性的功能让管理工作更简单与人性化,这些新功能包括:

■ Java监控工具 加入新的工具可以监控JVM还有与Oracle SQL的互动。

■ 加强监控待机时间(Wait Monitoring) 除了等待状况之外,Oracle也会保留等待的历史记录及其成因。

■ 追踪点对点应用程序 加强追踪点对点应用程序也包括J2EE。

■ 数据库功能的状态 Oracle可以追踪各种功能的状态,以及使用率。

■ 自动排程 可以自动的统一排程管理工作。
由上述说明可得知,新版本已加入许多新的管理功能。

2.5.5商业智慧

Oracle增加许多功能,如此一来,可提升Oracle数据库在商业智能环境中的效能与使用率。包括以下功能:

■ 生物信息(Bioinformatic) Oracle增加DOUBLE与FLOAT数据类型的支持,大幅加强执行直觉式运算分析应用程序的效能,如消费者生物信息。

■ 统计数据的功能 将统计功能加入数据库中,因此只要在数据库外部执行这些功能即可撷取数据。

■ 文件功能 加入多个文件控管的功能。

Oracle SQL引擎还有多个未列出的新增功能,可以强化商业智能的处理。

2.5.6 开发应用程序

加入多个开发应用程序的新功能。这些功能包括:

■ 扩展区域涵盖性 增加对区域性及语言的支持并强化已存在的功能。

■ Unicode 3.2支援到Unicode 3.2版本。

■ Globalization Development Kit 在全域环境中,Oracle的GDK可以协助部署因特网应用程序。


Oracle增加多种新功能可协助开发人员在全域环境中执行应用程序。
2.5.7 Linux 64位元的支援性
Oracle增加对64位元Linux的支援性,可以支持设定与管理大量的RAM与SGA。我们将详细说明这些功能。

2.6 网格运算

Oracle 10g开始支持网格运算降低服务器成本,并且可以在网格中同时运行Oracle 10g与集群系统,因为集群系统的冗余特性,所以网格具有高可得性,除此之外,因为可扩充新节点,所以也提供高效能与稳固性。在数据库层,网格运算以Oracle RAC集群为基础,此部分将在往后其它章节详述。在应用程序层,Oracle新增负载平衡与冗余性网格控制便可提供应用程序的网格运算。


总结

本章介绍Oracle的架构。下一章说明交易行程与纲要对象,将可以显现整体的架构。这是本文章其余部分的基本结构,Oracle的概念与架构可影响在Linux操作系统中的布署与调教。

除了讨论Oracle架构之外,本章也讨论了网格运算及部分Oracle 10g带来的新功能,为了最佳化Oracle的支援度,在下一章将介绍在Linux操作系统上的Oracle架构。


To be continued........


请继续参阅第四篇....



出处:南方Linux
阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~