Duangw

数据库调节

索引:

  1. 使用svrmgrl查看参数
  2. 关键参数
  3. 优化I/O

1.使用svrmgrl查看参数

所有参数:show parameters;

某些参数,如buffer:show parameter buffer;

查看当前SGA的大小:show sga;

 

2.关键参数

db_block_buffers

这个参数的值决定了Oracle使用的数据高速缓冲区的大小。在实际应用中,应该将这个参数的值设得越大越好。甚至大到足以放下整个数据库。

这个参数的设定对SGA区所占用的内存影响很大,随着该参数的参数值的增大,SGA区所占用的内存也相应地快速增加。在一般情况下,应使SGA区所占用的内存不超过系统物理内存大小的50%。

shared_pool_size

这个参数的值决定了Oracle使用的程序高速缓冲区和数据字典高速缓冲区的大小。尽可能设置大的值,由于性能的原因,希望有很大的程序高速缓冲区。

同样地,这个参数的设定对SGA区所占用的内存影响很大,随着该参数的参数值的增大,SGA区所占用的内存也相应地快速增加。在一般情况下,应使SGA区所占用的内存不超过系统物理内存大小的50%。

sort_area_size

这个参数的值决定了Oracle用于排序操作的内存大小。含有order by和group by子句的SQL语句以及create index语句都将引发排序操作。

当Oracle无法获得足够的内存空间进行排序操作的时候,它将使用磁盘作为缓存进行排序操作,所以这个参数的值也应该设得尽可能的大。

根据经验,其缺省的设置值太低,建议将其改为初始值的两倍。

processes

这个参数的值决定了能同时访问Oracle数据库的进程数。这个参数的初始值为50,但是这个值太小了,因为Oracle系统本身所使用的系统进程以及由某个进程所产生的新进程都将占用可使用的进程数。

除非想限制使用Oracle数据库的用户数,或者由于机器的性能不足,否则应将该参数的值设得尽可能的大。

在安装Oracle8i时,建议将此参数的值设为200。经验表明,该值大于大多数应用程序所需的值。

open_cursor

这个参数的值决定了一个用户同时可以打开的游标数目。这个参数的初始值太小,当用户无法打开游标时,应用程序将停止运行。建议将该参数的值设为2500。

该参数的值应设得尽可能的大,否则应用程序将由于无法打开游标而停止运行。

database_writers

这个参数的值决定了可同时向数据库写入信息的进程数目。如果工作在一个可以支持多进程的操作系统上,应该马上改变这个参数的值,以获得更好的性能。

建议为每个数据文件设置两个数据库写入进程。

timed_statistics

这个参数告诉Oracle记录下系统运行时的一些附加信息,这些信息在调试环境下是非常有用的,但是在实际运行环境下,建议将这个功能关闭,因为这个附加功能将导致系统性能的下降。

optimizer_mode

这个参数值的设定将影响到Oracle处理SQL语句的方式。这个参数有以下四种设定值:

  1. FIRST_ROWS或ALL_ROWS:这两个设定值将使Oracle使用基于代价的优化方法来执行SQL语句,在这种优化方法下,Oracle在执行SQL语句的时候,将重点考虑表的大小进行优化。
  2. RULE:这个设定值如果使用,Oracle将使用内部的度量系统来决定SQL语句将如何被执行。
  3. CHOOSE:这个值是缺省设置。当用户有必需的信息时,则告诉Oracle使用基于成本优化的方法;反之,则使用基于规则的方法。
  4. 对已存在的系统先进行性能统计分析,然后改变系统所使用的优化方法。实践证明,如果在没有进行测试的情况下,贸然改变系统所使用的优化方法将对系统造成灾难性的影响。

建议对新建立的系统使用基于成本的方法进行系统的优化。

 

3.优化I/O

表和索引

为所有的表建立适当的索引,这一点对于系统的性能影响最为久远;将表和索引分别存放在不同的磁盘驱动器上,强烈建议创建不同的表空间来存放表和索引。

对于大表至少要建立一个索引。这里所说的大表是指记录数目超过1000的表。

系统表空间

将系统表空间放在独立的磁盘驱动器上。不要让其他用户在系统表空间中存放任何内容。

临时段

建立一个单独的表空间存放临时段。

回滚段

建立一个单独的表空间存放回滚段。

联机重做日志

将联机重做日志存放在单独的磁盘驱动器中。