ORACLE 性能优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORACLE 数据库性能优化

参考书目:

《ORACLE 9i Database Performance Tuning Guide and Reference》《ORACLE 9i Database Reference》

《ORACLE 9i SQL Reference》

《ORACLE 9i Database Administrator’s Guide》

一、数据库实例创建过程参数确定

在创建数据库实例过程中,需要确定以下几个参数:

1. 数据块大小(DB_BLOCK_SIZE)

该参数指明了ORACLE所处理的数据存贮于数据文档以及SGA内存中的数据块大小。

该参数的可选择的范围为:4k,8k,16k,32k,64k。对于OLTP系统而言,取值可以为4K或8K,对于DSS系统而言,则可以取较大的数据,如32K或64K 建议统一取8K(即8192)

说明

DB_BLOCK_SIZE的大小将影响创建表时的EXTENT的大小。例如指定db_block_size=16K,某表空间的EXTENT MANAGEMENT 为local autoallocate,则其系统将extent的大小最小指定为1M.所以将可能导致空间的浪费。

2. 字符集(Character set)

该参数确定数据库以何种字符集来存贮CHAR以及V ARCHAR、V ARCHAR2等字符类型的值。对于ORACLE数据字典中的字符(如表及字段的COMMENT 内容)具有同样的作用。因此需要考虑如字符集的使用。对于国际项目,因为数据库中的comment内容(包括表及字符、存贮过程中的中文字符等内容)可能性需要以中文存贮,而用户业务数据使用的字符可能性是使用本地的语言,基于此,该参数需要选择支持UNICODE的字符编码的字符集。目前ORACLE9i支持以下二种UNICODE字符集:

⏹UTF8

⏹AL32UTF8

建议统一取AL32UTF8

3. 扩展段管理(EXTENT MANAGEMENT)

该参数指明表空间中的扩展段的管理方式。

对于ORACLE9i以前的数据库,其表空间中的扩展段的分配/回收是通过系统字典表中的信息来分配的。对于该种扩展段的管理方式,ORACLE9i做了根本性的改动。现在可以不通过系统表中的信息来管理扩展段,改为通过位图方式。即在各表空间中通过位图方式记录自己所属的EXTENT信息。该种方式管理表空间中的EXTENT的分配其效果好。所以ORACLE公司建议使用这各位图方式来管理表空间中的EXTENT。如果选择这各方式,则参数为LOCAL 对于使用这种LOCAL方式本分配EXTENT的情况下,还有一种参数,即EXTENT的大小的分配方式:

⏹AUTOALLOCATE

⏹UNIFORM

如果选择UNIFORM分配大小,则可以根据该表空间的使用特性,确定一个值。如某表空间上存贮的基本上都是代码类的表,则可以定义UNIFORM大小为64K;而对于清单类表空间,则可以定义UNIFORM大小为2M或更大。

如果选择AUTOALLOCATE,则ORACLE会自动确定其每个EXTENT的大小。

注:ORACLE 的系统表空间SYSTEM的管理方式不能选择UNIFORM 方式分配大小,只能选择AUTOALLOCATE方式分配。

建议:

所有业务表空间使用EXTENT MANAGEMENT LOCAL 方式来管理EXTENT

对于清单类表空间,其UNIFORM SIZE=2M

注意:

如果指明表空间的管理方式是EXTENT MANAGEMENT LOCAL,则必须指表系统默认表空间。指定为系统缺省的TEMP表空间即可。

4. 最大数据文件数(MAXDATAFILES )

指明了该实例最大的数据文件数。如果系统中数据文件使用数据大于这个值,则表空间创建或扩展将无法进行。系统默认时该值比较小。需要更改这个参数。

建议取值:1000或更大

5. 最大重做日志文件数(MAXLOGFILES)

该参数确定系统最大的REDO文件数据。同样的,系统默认时取值有点小。需要更改。

建议取值:20

6. 重做日志(redo log )文件大小

重做日志文件的大小将影响数据库的性能。大的日志文件能够提高数据库的性能。因为数据库在切换不同的日志文件时将做检查点操作,如果日志文件太小,则检查点操作将会太频繁而导致性能的降底。但是太大的日志文件将给数据可恢复性带来不利。例如当一个日志组中的所有日志不可用的情况发生时,则数据库的恢复将只能恢复到上一次检查点的时刻,即在大多数情况下是恢复到上一个日志文件结束时所做的检查点操作的时刻。(实际情况会因为数据库的相关参数的设置不同而有所不一样,如log_checkpoint_interval、FAST_START_MTTR_TARGET等参数)

所以理想的情况是,将重做日志文件的位置存放于快速、独立的物理设备上,这样可以有效减少LGWR与DBWR进程的冲突等。

重做日志文件的大小因系统规模及业务特性不同而有所不同。如计费数据库的重做日志文件应比营收的要大。设置其大小有一个经验值:即观察日志文件切换的时间间隔,控制其时间间隔在20分钟左右。如果当前系统的日志切换时间间隔比这值小,则可能需要增大每组日志的大小;否则做相反的改动。

注意:

调整系统的日志大小只能通过增加新的日志组,将然后再删除以前旧的日志组的方式进行。ORACLE不支持直接更改日志文件的大小。

建议:对于100万用户量的系统,

计费数据库:500M-1G,分5-10组,每组两个LOG成员文件

营收数据库:300M-1G,分5-10组,每组两个LOG成员文件

7. 表空间的数据段管理(SEGMENT SPACE

MANAGEMENT)

当创建表空间的EXTENT的管理方式是LOCAL且为非临时表空间时,需要指定数据段(如表、索引、分区等)的管理方式。系统有两种选择:

⏹MANUAL

⏹AUTO

如果指定为MANUAL方式,则ORACLE使用系统字典表中的FREE LIST 的相关信息来分配SEGMENT空间;如果选择AUTO,则系统通过表空间上的BITMAP信息来分配空间。

建议:使用AUTO方式来管理SEGMENT的分配。

注意:

当设置成AUTO方式时,建表时的PCTUSED、FREELIST等参数将不再有效

二、内存调整

1. 内存调整的意义

ORACLE将其数据存贮于内存以及磁盘中。对内存的访问速度将远快于对磁盘的访问速度。因此,数据库性能调优的一个最基本目标就是如何有效地减少对

相关文档
最新文档