影响Oracle数据库系统性能的初始化参数

关键词: 管理系统 数据库系统 信息化 性能

影响Oracle数据库系统性能的初始化参数(共7篇)

篇1:影响Oracle数据库系统性能的初始化参数

影响Oracle数据库系统性能的初始化参数

具体影响Oracle系统性能的初始化参数如下:

SGA(系统全局区)

系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。

1、主要包括数据库高速缓存(the database buffer cache),

重演日志缓存(the redo log buffer),

共享池(the shared pool),

数据字典缓存(the data dictionary cache)以及其它各方面的信息。

db_block_buffers

1、数据高速缓冲区

2、访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。

3、db_block_buffers以块为单位,假如DB_BLOCK_SIZE=2K,db_block_buffers=3200,则占用内存=3200*2K=6400K。

share_pool_size

1、SQL共享缓冲池

2、该参数是库高速缓存和数据字典的高速缓存。

Log_buffer

1、重演日志缓冲区

sort_area_size

1、排序区

processes

1、同时连接的进程数

global_names

1、如果“数据库链路名”和它所要连接的“数据库”拥有相同的名字,则设置global_names = TRUE,否则,设置global_names = FALSE

db_block_size

1、数据库块大小

2、Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,

而8KB块的数据库只要1次就读完了,大大减少了I/O操作。

3、数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库,并且建库时,要选择手工安装数据库。

open_links

1、同时打开的链接数

dml_locks

1、用户一次可对表设定锁的最大数目

2、如果有三个用户修改6个表,则需18个DML锁来实现并行操作,如果设定DML_LOCKS不够大,操作时执行将中断,你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的DML_LOCKS的`值,但该值的大小对数据库的其他性能没有影响,所以一般都把它设得很大,远超过实际中可能达到的值,如果在系统运行中经常发生表锁死的现象,就应该考虑加大该值。

open_cursors

1、打开光标数

2、这个参数可以同时被每个用户进程拥有,这个参数的最大值依操作系统不同而不同。

3、在创建一个包含很多表的合成视图时,如果此参数很小,则视图创建会不成功。

dbwr_io_slaves

1、后台写进程数

篇2:影响Oracle数据库系统性能的初始化参数

通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内。在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个临时表空间了。在用户进行数据库操作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。而如果这个临时表空间设置不当的话,则会给数据库性能带来很大的负面影响。为此管理员在维护这个临时表空间的时候,不能够掉以轻心。要避免因为临时表空间设置不当影响数据库的性能。具体来说,主要需要注意如下几个方面的内容。

一、创建用户时要记得为用户创建临时表空间。

最好在创建用户时为用户指定临时表空间。如可以利用语句default temporary table space语句来为数据库设置默认的临时表空间。不过在Oracle数据库中这个不是强制的。但是笔者强烈建议这么做。因为如果没有为用户指定默认临时表空间的话,那么当这个用户因为排序等操作需要使用到临时表空间的话,数据库系统就会“自作聪明”的利用系统表空间SYSTEM来创建临时段。众所周知,这是一个系统表空间。由于在这个表空间中存放着系统运行相关的数据,一般的建议是用户的数据不能够保存在这个表空间中。那么如果将用户的临时表空间防止在这个系统表空间之内,会产生什么负面影响呢?

由于临时表空间中的数据是临时的。为此数据库系统需要频繁的分配和释放临时段。这些频繁的操作会在系统表空间中产生大量的存储碎片。当这些存储碎片比较多时,就会影响系统读取硬盘的效率,从而影响数据库的性能。其次系统表空间的大小往往是有限制的。此时临时段也来插一脚,就会占用系统表空间的大小。

为此数据库管理员需要注意一点,当没有为用户指定临时表空间时,用户排序等操作仍然需要用到临时段。此时数据库系统就会将临时段放入到系统表空间中。为此就会对数据库的性能产生不利的影响。所以笔者建议各位读者与数据库管理员,在创建用户的时候同时为用户指定一个默认的表空间,以减少临时段对系统表空间的占用。

二、合理设置PGA,减少临时表空间使用的几率。

当排序操作产生临时数据时,数据库并不是马上将其存储在临时表空间中。通常情况下,会先将这些临时数据存储在内存的PGA程序全局区内。只有当这个程序全局区无法容纳全部数据时,数据库系统才会启用临时表空间中的临时段来保存这些数据。但是众所周知,操作系统从内存中读取数据要比从硬盘中读取数据块几千倍。为此比较理想的情况是,这个程序全局区足够的大,可以容纳所有的临时数据。此时数据库系统就永远用不到临时表空间了,

从而可以提高数据库的性能。

但是这毕竟只是一个理想。由于内存大小等多方面的限制,这个PGA程序区的大小往往是有限制的。所以在进行一些大型的排序操作时,这个临时表空间仍然少不了。现在数据库管理员可以做的就是合理设置这个PGA程序全局区的大小,尽量减少临时表空间使用的几率。如在实际工作中,数据库管理员可以根据需要来设置初始化参数SORT_AREA_SIZE参数。这个参数主要控制这个PGA程序全局区内排序区的大小。通常情况下,如果这个数据库系统主要用来查询并且需要大量的排序、分组汇总、索引等操作时,那么可以适当调整这个参数,来扩大PGA分区的大小。相反,如果这个系统主要用于更新操作,或者在这个数据库服务器上还部署由其他的应用程序,那么这个PGA分区就不能够占用太多的内存,以防止对其他应用程序产生不利的影响。所以说,数据库官员不能够一刀切,需要根据实际情况来调整。在必要的情况下,可以增加系统内存来增加PGA分区的大小,从而降低临时表空间的使用几率,以提高数据库的排序、分组汇总等操作的性能。

总之,如果临时段被频繁使用的话,由于内存与硬盘在性能上的差异,从而会降低数据库的性能。为此在平时工作中,数据库管理员还需要监控临时表空间的使用情况,以判断是否需要采取措施来减少临时表空间的使用来提高数据库的查询性能。为了实现这个目的,笔者建议数据库管理员可以查看v0_segment这张动态性能视图。通过这张动态性能视图可以查看系统排序段(临时段的一种)的使用情况。另外通过动态性能视图v0_usage还可以查询使用排序段的用户与会话信息。从而为数据库管理员优化数据库性能提供数据上的支持。对于这个排序段,笔者还要说明一点。对于排序段来说,同一个例程的所有SQL语句(如果需要排序操作的话)都将共享同一个排序段。并且排序段在第一次需要用到时被创建。排序完成后这个排序段不会被释放,只有在这个历程关闭后排序段才会被释放。为此以上两张视图要综合起来分析,才能够得到数据库管理员想要的信息。

三、要为临时表空间保留足够的硬盘空间。

其他表空间对应的数据文件,在其创建时就会被完全分配和初始化,即在其创建时就会被分配存储空间。但是临时表空间对应的临时文件则不同。如在Linux操作系统中,临时表空间创建时系统是不会分配和初始化临时文件的。也就是说,不会为临时文件分配存储空间。只有临时数据出现需要用到临时文件的时候,系统才会在硬盘上分配一块地方用来保存临时文件。此时就可能会产生一个问题,即当需要用到临时文件系统为其分配空间的时候,才会先系统分区中没有足够的存储空间了。此时就会产生一些难以预料的后果。

为此对于这些临时文件,数据库管理员最好能够预先为其保留足够的空间。如在Linux操作系统中,可以将其防止在一个独立的分区内,不允许其他应用程序使用。如此的话,就不用担心临时文件没有地方存储了。另外由于临时表空间主要用来存放一些排序用的临时文件。为此如果能够将这个临时表空间存放在性能比较好的分区中,还可以提高数据库系统读取临时表空间中数据的速度。另外由于系统需要频繁分配临时表空间中的数据,为此临时表空间所在的分区会出现比较多的碎片。此时如果将临时表空间存放在一个独立的分区内,那么数据库管理员就可以单独对这个分区进行碎片整理,从而提高这个分区的性能。所以无论出于什么原因,将临时表空间防止在一个独立的分区内,是一个不错的想法。不仅可以保证临时文件有存储的空间,而且还可以提高数据库的性能。

篇3:影响Oracle数据库系统性能的初始化参数

关键词:Oracle,性能优化,SQL

0 引言

Oracle作为一种大型的数据库系统被广泛应用在电力、电信、金融、民航等重要部门。在实际应用中, 随着系统中数据的增加, 访问量的加大, 常常会出现系统响应迟缓, 性能下降的问题。围绕数据库应用系统的性能优化, 目前在业界已有一些研究成果。本文从软件产品生命周期的设计、编码及部署阶段入手, 结合多年的实际工作经验, 分析了在软件开发过程中影响性能瓶颈的诸多因素, 给出了基于Oracle数据库管理系统的优化方法及策略。

1 设计阶段上的优化

设计阶段是软件开发中仅次于需求分析之后的第二阶段, 如果能够进行科学、合理的设计, 能够有效避免许多在后继阶段中引起的系统性能问题。一旦数据库设计付诸实施, 我们将很难在应用环境中改变数据库的设计。因此, 本阶段的控制措施十分重要!这里从性能分析的角度, 重点阐述数据库对象的优化设计和应用逻辑实现设计两部分。

1.1 数据库对象设计

数据库对象优化设计的重点在数据库基表设计、索引设计和数据库系统整体性能设计三个方面。

1.1.1 数据库基表设计

人们在开始进行数据库基表设计的时候, 很容易忽略基表在数据量很大的情况下, 是否会引起应用性能下降问题, 以及日常维护、备份恢复、数据清理等工作是否也会因此而受到影响。而往往在系统投入运行以后才发现随着系统业务量的增大, 正常的使用、日常的备份、以及数据清理等操作会变得越来越耗时, 甚至达到无法在业务给定的时间内完成的地步, 给客户及使用单位带来许多无法想象的麻烦。因此系统的数据库基表的设计十分重要。

对于大的数据库基表, 我们可以采用数据库分区技术来优化产品的应用性能, 同时也能大大简化DBA对于这些大尺寸库表的日常维护工作, 做到防患于未然。

1.1.2 索引设计

在数据库设计中, 另一个与应用系统性能有很大关系的问题是建立合适的索引。设计好的索引结构, 可以避免查询时的全表扫描, 加快查询速度。而在实际应用中, 常常没有制定有效的索引管理策略, 许多应用系统的索引都是在开发人员在编写代码时看到需要索引就创建一个索引, 而较少甚至根本不去查看和分析已有的索引是否可以利用。随着应用功能的扩展, 索引数量只是简单地增加, 而很少考虑重复利用、合并和删除重复索引。最终导致雷同或可合并的索引大量存在, 不但消耗大量的空间, 还影响库表记录的增、删性能。

1.1.3 数据库系统整体性能设计

这部分设计的重点在于尽量减少I/O争用、分散I/O。如果对于基表和索引的存储位置没有进行合理分布, 则很容易在系统中造成热点数据, 使系统的并发处理能力大打折扣。在实际应用中一般可遵循以下几条策略:

将表和索引分散在不同的I/O单元上;

将需要经常关联的表分散在不同的I/O单元上;

对于热点访问的基表和索引, 尽量分散在尽可能多的数据块甚至不同硬盘上。可以将基表和索引存放在RAID0或RAID5的磁盘阵列中;或使用很大的PCTFREE存储参数, 使数据量尽量分散在不同的数据块中, 使数据稀疏化;

应用Oracle的LMT本地表空间管理和ASSM自动段存储管理技术管理数据块的表空间和基表索引等存储对象, 以提高I/O请求并发率。

1.2 应用逻辑设计

在应用逻辑设计过程中, 较普遍存在的问题是仅关注如何通过SQL语句实现应用逻辑的功能, 但很少分析SQL语句应以什么样的执行计划运行效率最佳;很少分析执行计划是应确保始终不变, 还是需要随着数据分布的变动而相应的变动, 以及如何变动进行设计。

在一个应用系统中存在大量的SQL语句, 很难做到针对每一条SQL语句都进行完善的分析设计工作。因此, 可以运用“2-8原则”的思想, 对执行时间长, 或并发量大的SQL语句精心设计“理想执行计划”, 使其性能得以优化。

2 编码阶段上的优化

在数据库应用系统中, 造成应用程序反应缓慢、系统资源消耗大的直接原因常常是不良的SQL语句。往往一个不良的SQL语句会导致整个数据库系统高负荷运转, 甚至对外暂停服务。因此在编码阶段应首先对SQL语句进行优化。

另外尽量使用存储过程。有些不需和客户端交互太多、处理的数据量较大的程序, 例如报表, 可以使用存储过程实现。这样可以减少网络流量, 而且存储过程本身是编译好的, 经过一些优化处理。降低事务执行的粒度。某些业务处理的数据量较大, 如果写成一个SQL语句或放在一个事务中, 执行起来会占用系统很多资源, 影响其它业务的执行, 可以考虑降低粒度, 分成多次执行。

3 部署阶段上的优化

在此阶段中经常会遇到在开发环境执行效率很高的应用部署到生产系统中后, 性能却很不理想的情况, 引发这种情况很多时候是因为部分SQL在部署到生产环境之后, 由于实际的数据分配与测试环境不同, 导致Oracle的CBO生成了不同于开发环境下生成的执行计划。

在这一阶段, 我们可以从开发环境中提取出最优的SQL执行计划集合, 部署到生产系统中, 以固定需要固定执行计划的SQL。此外在部署阶段还应该注意不断跟踪、优化不良的SQL语句。

4 结束语

Oracle数据库应用系统的性能优化是一个复杂、繁琐的系统工程, 涉及的方面有很多, 我们认为系统性能在70%以上由应用系统的结构设计和SQL语句来决定, 数据库端可调性只有20%左右, 因此这里我们重点强调了产品开发在设计、编码及部署阶段在性能方面容易引起瓶颈的因素及解决方法, 希望能在产品投入使用之前就引起性能方面的重视及改善。实践证明, 上述措施行之有效。

当然对系统的优化调整不是一次性的, 还需要在使用过程中不断反复调整, 但如果在产品实施之初就开始注意性能的优化问题, 对以后的系统维护会减少很多负担, 从而提升软件产品的整体性能。

参考文献

[1]陈峰.关于改善ORACLE数据库应用软件产品性能品质的研究:硕士学位论文.北京:北京邮电大学, 20011.

[2]Thomas Kyte.苏金国王晓振等译.Oracle 9i&10g编程艺术.人民邮电出版社, 2009

篇4:影响Oracle数据库系统性能的初始化参数

关键词:信息系统;Oracle数据库;性能优化

中图分类号:TP392

从我国实况来看信息系统还存在各种不足,比如怎样充分发挥计算机系统资源,怎样确保用户的服务质量及响应速度等。因此,研究优化Oracle数据库的性能具有适用价值。

1 信息系统Oracle数据库性能优化

笔者就从Oracle数据库系统中选择I/O、内存、SQL语句以及网络性能方面入手,分析这些组成部分在运行中性能发送的一些问题,并且针对这些问题提出合理的优化措施。

1.1 对内存进行优化

优化内存比较常用方法就是调整系统的全局区(SGA)。具体操作就是调整内存中各种组件,包含JAVA池、缓冲区高速缓存等,对内存结构进行调整时需要加大SGA大小,但是必须要确保SGAS长度一定在实际所用内存范围之中。

1.2 调整共享池

共享池主要有两个部分组成,即高速缓存和数据字典缓存。其参数就确定了共享池的大小。而在高速缓存模块中又是由SQL语句文本,执行计划以及PL/SQL块、JAVA类共同组成。将“select namespace,gethitratio from v$librarycache”输送到执行栏目中,就能够从数据库中获取到缓存的统计信息。在该执行语句中gethitratio主要是实现查询对象的句柄标识名字和次数之间比率。在该数据库中,如果该比率低于了95%,就要进行调整。其查询语句是“select sum(pins-reloads)/sum(pins)*100 from v$librarycache”,通过执行该局于就可以得到高速缓存命中率。数据字典的缓存就是把数据字典中所含的各种信息存储进去。SQL语句查询对象信息时是通过数据字典进行高速存取,降低了不缓存之时从数据字典中查询的次数,通过这种查询方式就能够提升其性能。而且对v$rowcache动态性能视图进行查询,可以得到数据字典中缓存相关信息,输入执行语句“select(sum(gets-getmisses))/sum(gets) from v$rowcache”,通过执行后就可以得到数据字典中的缓存命中率。一旦最终结果值低于85%,必然要增大共享池容量才可以。

1.3 调整缓冲区的高速缓存

在SGA中,高速缓存是重要的组件之一,在执行保持之时高速缓存区就是负责对磁盘中相关数据进行读取、拷贝,保持服务器就能够对所有拷贝块进行共享。假如该服务器要得到数据块,就会先到高速缓存之中去查询所需数据,如果需要的数据在这个缓冲区之中,那么该进程就可以从高速缓冲区之中直接读取所需数据,如果数据并未在这个高速缓存之中,必然会从磁盘中相关数据文件进行读取,同时还将所读取数据存储进高速缓存之中,之后这些存储的数据就能够被服务器的进程使用。因此要尽可能让进程读取缓冲区的高速缓存中数据,并且经过相关的查询语句就可以执行,还能够通过查询得到使用高速缓存各种情况。

1.4 调整重做日志缓冲区

重做日志的缓冲区,也就要在内存中对高速缓存进行重做。一般情况下,该缓冲区的容量有1MB就可以的。但是该缓冲区一旦占据的空间三分之一,就会发出“rollback”和“commit”的命令,或者将DBWn进程写进到LGWR之中,通过这种方式就可以重做日志的缓冲区,将磁盘中重新写入内容。如果要想恢复数据库,必须要通过重做日志的缓冲区之中各种项目,这一种操作非常重要。要查询重做日志缓冲区中效率,输入相关的查询语句就能够查询结果,最终查询结果值只有接近0才正常,假如这个值不断的增大,就要适当增大log_buffer大小。

1.5 优化I/O

事实上,影响Oracle数据库性能一种主要原因就是磁盘I/O,一旦解决好了I/O,就能够有效提升数据库性能,配置数据库性能准则即为尽可能的降低磁盘I/O及平衡多个磁盘的驱动器,并且还要尽可能使用本地管理的空间,对动态视图进行查询就可以得到数据文件中的I/O 性能。在平衡I/O,能够采用的策略主要有如下几种:

(1)把访问次数比较多的数据文件促进独立的磁盘上。

(2)给用户数据创建出单独的表空间,并且把这个表空间单独放到system表中。

(3)有几个数据文件存在于同样表空间之中,就要存放到不同的磁盘之中。

(4)索引应该处于独立表空间中,还应该把索引以及表的数据存放至不同磁盘之中。

(5)构建出临时的表空间,用来实现排序操作,这样就能够有效阻止数据库中碎片进入表空间中,同时创建独立表空间给回滚段。

(6)尽可能做大日志文件,避免切换日志过于频繁;同时重做日志文件不要和数据库文件放进同一个磁盘中,降低磁盘之间的竞争。

1.6 优化CPU

当数据库中的I/O操作到了最低的程度,同时也分配了足够的内存,但是应用软件依然遭到CPU约束。优化CPU目标就要让CPU尽可能滿足用户所需,同时尽可能减小等待以及额外的开销影响到CPU,并且服务器能不能够正常的工作直接关系着CPU,当工作高峰CPU使用率处于90%标识着服务器具有良好工作状态。但是假如空闲之时CPU的使用率超过了90%,说明服务器中的CPU资源不足。如果出于工作的高峰,CPU的使用率依然比较低,这就说明服务器中的CPU资源比较充足。

在运行中,管理数据库人员只要查询数据字典中相关统计项,就可以查询Oracle 数据库使用CPU所占据时间,同时将相关查询语句输入到执行程序中,就可以获取到该操作系统使用了CPU所占据的时间,当然操作系统使用时间也就是用户态+系统态的时间总和。数据库占据了时间超过了总时间90%,这就说明服务器之中CPU几乎都让Oracle数据库占据了,表明运行良好;如果其他各种程序将CPU资源全部占有,Oracle数据库必然无法活儿更多的CPU资源及时间。查询v$sesstat数据字典就能够知道目前所连接的Oracle 数据库中每一个回话所占用CPU时间,就能够知道会话所占用服务器CPU的时间情况,以及导致CPU资源缺乏根源,事实上重解析SQL语句,锁冲突等均可能造成CPU资源严重不足。管理人员将相关查询语句输入,该语句能够查询解析SQL语句的情况,执行语句中的parse time cpu就表示出系统所用时间,执行语句中的parse time elapsed为响应时间,而用户等待的时间采用公式可获取。而且从该公式之中还能够得到解析SQL语句中平均等待的时间,如果这个平均值靠近0,就表明系统正常,一旦等待解析的平均时间较长,就要从中查询解析效率比较低,应该优化相关的语句,同时还应该改变Oracle中的参数,通过参数来增加高速缓存的光标数值。当然,数据库的管理人员还能够采取查询语言(select buffer_gets, executions, sql_textfrom v$sqlarea),而且该查询语句还能够对低效率的SQL语句进行查询,对该语句进行优化同样能够提升CPU利用效率。

1.7 优化网络性能

数据库的应用不断增加,自然网络这个承载数据库服务器的平台至关重要,直接影响着用户发送数据。因此,调整网络性能也是必然趋势,而优化网络就需要尽可能降低网络中数据流量,从而降低了网络资源的使用。

1.7.1 Oracle 网络协议

Oracle数据库比较常用的网络协议为SQL*Net或者Net 8,该协议处于七层开放式的回话层中,将透明连通性提供给Oracle服务器与客户端。透明连通性就是通过接口层SQL*Net/Net 8接收来自Oracle应用的SQL语句。而且按照相关的标准格式打成包,同时把该包传送至数据库。SQL*Net/Net 8主要是用来负责构建及维护客户和服务器间的网络会话。

1.7.2 检测网络性能的方法。数据通过了网络程序之后必然会出现延迟,因此就需要优化其性能,才能够有效保障网络的吞吐量,才能够降低网络的流量。从使用现状分析可知,要想非常精确的确定出网络的延迟十分困难。但是在Oracle数据库中设计了三个动态性能表,这些表就能够用来测量出网络延迟,这些表分别是v$session_event,v$session_wait与v$sesstat。

(1)v$session_even,该操作主要是操作时Oracle的等待时间,该值就可以多网络效率进行有效评估。

(2)v$session_event;将目前正在运行的会话(等待事件)全部列出来,所谓等待事件就是说明共享或者前台进程中正处于等待的消息。只要存在等待事件,一定要查询等待事件是不是被Oracle接收或者被客户端发送,而且还能够查该表是不是意外被中止,只要客户端发出消息就能够确定出Oracle是否已经作出回应或者依然在等待。

(3)通过v$sesstat查看已经接收或者发送到客户端的字节数,还能够查询到客户端传递过来的请求数目。

2 结束语

笔者依据自身经验,做了如上Oracle数据库相关优化探讨。但是该分析属于一项比较复杂工作,涉及到多个方面,不但要具备扎实数据库技术,还要非常熟悉操作系统、硬件设备以及机器结构等各个方面。笔者全面了解了Oracle体系结构,并且探讨了对该体系结构的优化,包含了优化I/O、优化内存等等,从而更确保了房产信息系统的实时监控。

参考文献:

[1]翟岩龙,宿红毅,战守义.数据库性能监控体系的研究与应用[J].计算机科学,2009(11).

[2]王娜,宿红毅,白琳等.数据库性能监控分析系统的设计与实现[J].计算机工程,2010(24).

[3]滕永昌.Oracle10g数据库管理系统[M].北京:机械工业出版社,2012.

[4]杨华千,刘勇国,杨德刚,廖晓峰.Oracle的存儲体系结构及其对象空间分配研究[J].计算机科学,2013(09).

作者简介:冯育栋(1982.09-),男,江苏靖江人,科员,本科,研究方向:信息系统管理维护。

篇5:影响Oracle数据库系统性能的初始化参数

随着信息化技术的不断发展, 越来越多的企业开始管理创新, 广泛的应用信息化管理系统, 从而提升企业的现代化管理水平。而信息化管理系统基本上都是建立在数据库系统的基础上的各种功能的实现, 因此数据库系统性能的高低, 就会直接影响应用系统的性能。而且一般来说当大型数据库在运行一段时间之后, 由于存在着大量的数据, 在运算速度上就会不同程度的受到影响, 而计算机操作系统、内存、应用程序算法以及数据库服务器等诸多元素都会对数据库系统的性能构成重要的影响。

2 数据库系统主要性能的评价指标分析

数据库系统性能评价指标主要有以下几点:

2.1 系统吞吐量

这个指标指的是单位时间里, 数据库系统所能够完成SQL语句的执行数量。通过是以每秒事务量 (tps) 来衡量。系统吞吐量越高, 那么系统反应时间和执行速度也会越快。

2.2 用户响应时间

这主要指的是用户向数据库提交SQL执行语句开始, 到数据库执行并向用户反馈结果集这段时间, 也就是应用系统的反应时间, 主要是以毫秒来衡量。通常分为CPU执行时间和用户等待时间两种。

2.3 数据库命中率

Oracle数据库系统中, 用户进程所使用到的数据都会先集中在缓冲区, 也就是会集中到系统内存中, 这样能够提升数据读取效率, 如果内存数据能够符合用户的需要, 那么命中率就会越高, 那么系统执行效率就会越高。第四, 内存使用情况。这主要体现在共享内存和运行内存以及永久内存三个存储空间的科学分配上, 内存利用效率越高, 系统性能就会越高。第五, 磁盘I/O速度。因为大量的数据都会存储在硬盘上, 因此从硬盘数据转移到内存单位时间I/O规模越大, 那么速度就会越快, 就能够有效缩短用户响应时间, 从而提升数据库系统性能。

3 Oracle数据库应用系统的优化技术分析

3.1 SQL语句的优化

SQL语句是操作数据库的脚本语言, 如果SQL语句能够在优化器的作用下, 能够充分利用数据库的索引表, 那么就能够有效减少数据库扫描索引表的I/O次数, 就能够提升数据执行效率。而优化SQL语句的主要步骤有以下几点:

(1) 查找存有问题的SQL语句, 对这些语句进行提前优化, 发现问题就能够有效降低错误的读取数据库的频度, 查找问题SQL语句的主要方法主要是通过搜集统计数据功能, 在Oracle数据库管理系统中含有DBMSSTATS包以及ANALYZE解析命令, 其中DBMSSTATS包主要是搜集有关链接数据行的相关统计数据, 语法结构为:exec DBMS_SATS.gather_table_stats (owname’, ’t ablename’, ’partnmae’) 。而ANALYZE解析命令则是分析数据簇的相关情况。其主要的语法结构为ANALYEZE CLUSTER Cluste_name Computer STATISTICS。然后再使用SQLTrace32对SQL语句进行分析, oracle中的udump管理区就会对SQL语句进行跟踪, 对语法的解析和执行以及CPU时间和语法执行时间和逻辑读取的次数等参数进行记录, 接着在通过Oracle Enterprise Manager Console图形工具获得数据库相应的性能指标信息, 从而为SQL语句优化提供重要的参考。

(2) 构建正确的SQL语句, 提升查询效率。在使用SQL语句时要规避索引不能够和用户表空间建立在同一个磁盘上, 这样会造成大量的资源浪费现象。另外WHERE的子句的查询顺序也要进行优化, 注意从上至下的顺序进行查询, 同时表之间的连接要出现在其他WHERE标识符之前, 这样就能够有效减少调用数据库的数据量, 从而提升SQL语句的执行效率。

3.2 Oracle内存优化调整

Oracle数据库管理系统中, 其内存结构相对其他数据库管理系统而言相对复杂, 主要影响的参数包括Shared pool, Database Buffer Cache以及Java Pool等。对于Oracle的内存结构的优化主要可以从下面几个方面着手:

3.2.1 对Shared pool进行优化

也就是对共享池的大小进行合理优化。共享池主要是缓冲区以及数据字典高速缓冲区的重要存放点, 如果数据库缓冲区设置较小, 那么就会影响到数据使用性能。如果缓冲区过大, 随着使用次数的不断增加, 就会造成大量的数据碎片, 于是也会逐渐降低系统的性能。通常提升数据库缓冲区的命中率可以通过下面的执行语句来进行优化:Select (1-sum (reloads/sum (pins) ) ) from v$librarycache。执行这个SQL语句之后, 返回的结果如果小于0.95, 那么就需要增加这个共享池大小, 来提升缓冲区命中率。而优化数据字典缓存则可以通过下面的SQL语句来优化:select sum (1- (getmisses) / (sum (gets) +sum (getmisses) ) ) from v$rowcache。如果这个SQL语句的执行值小于0.85, 那也要增大共享池大小来优化内存结构。

3.2.2 对高速缓存进行优化

如果缓冲区中包含的高速缓存空间越大, 那么载入到内存中的数据量就会越大, 那么I/O存取效率就会越高, 对此可以通过下面的语法来进行优化:select name, value from v$sysstat where name in (‘dbblokcgets’, ’consistent gets’, ’Physical reads’) 。执行这个SQL语句之后, 如果返回的值小于0.85, 那么就需要增加缓冲区高速缓存的值来提升数据库的性能。

3.2.3 优化日志缓冲区

如果日志缓冲区分配值太小, 那么就没有充分的空间来防止重做条目, 从而延长等待时间。对此可以从下面这个语句来查看日志缓存区是否满足需求:Select name, value from v$sysstat where name=’redo log space requests’。如果这个语句执行之后, 得到的结果为0, 那就不需要进行调整, 否则就需要增加日志缓存, 通常可以上调5%左右, 然后重复执行这个语法, 直到最终的返回值接近0。

3.3 针对oracle的表空间进行优化

表空间是Oracle数据库管理系统的重要创新, 合理使用表空间能够有效提升数据库的性能。对此可以从下面几个方面来着手优化:

3.3.1 科学规划表空间

将数据和索引分到不同的表空间, 这样能够有效降低I/O竞争。在修改应用上, 将重演日志和归档日志进行分开, 尽可能将90%以上的输入输出操作放在系统表空间中, 或者在索引表空间和回滚表空间中。

3.3.2 优化表空间的结构

对此首先就要分离系统表空间, 彻底规避在系统表空间中存储大量非系统用户对象, 这样就会造成数据维护的数据调用重复读, 从而降低数据库系能。然后就要分离索引段。特别要规避和相关的数据段存储在同一个表空间中, 如果调用同一个数据, 就会重复执行输入输出操作, 同时还容易出现冲突, 导致时间等待, 从而降低数据库利用效率。最后要分离临时表空间, 临时的表空间不应该和其他类型的段放在一起存储, 这对于数据库性能的影响也非常明显。

4 结语

总而言之, Oracle数据库管理系统的功能非常强大, 在应用Oracle数据库时, 需要结合相应的硬件环境, 同时在软件性能上采用科学的数据库布局模式, 再加上合理的内存分配, SQL语句的优化以及表空间的优化, 就能够有效提升Oracle数据库性能, 从而提升应用系统的性能。

摘要:数据库性能的高低, 对于企业管理水平和工作效率的提升都具有非常重要的作用。本文在分析数据库系统主要的性能评价指标基础上, 提出了Oracle数据库应用系统的主要优化措施, 从而为提升数据库性能提供一定的参考。

关键词:Oracle数据库,性能优化,内存分配

参考文献

[1]李可可.浅析Oracle数据库的性能优化方法[J].硅谷, 2011 (02) .

篇6:影响Oracle数据库系统性能的初始化参数

1 oracle数据库的特点

Oracle数据库起始于20世纪70年代关系型数据库技术。这种数据库的类型的关键是理解数据之间的复杂关系, 然后依据这些关系构造数据库。Oracle数据库将这种关系型的数据库反映到了计算机上。同时他利用多种软件支持通讯协议的配合, oracle数据库在提供了分布式环境的条件下, 能够实现单点更新, 多点查询。

Oracle数据库被很多大型的信息系统采用, 特别是保险石油, 烟草等对安全性要求特别高的行业。其主要的特点表现在:a.可以充分利用硬件设备, 支持大量的用户在同一时间同一数据库上应用, 并且数据争用小, 数据一致性强;b.具有良好的硬件环境独立性, 支持各种类型的计算机系统。c.遵守读取语言、接口、网络通讯协议、操作系统的工业化标准;d.完美的安全性和操控性;e.具有移植性和兼容性, 不仅可以在不同的机器上运行, 而且可以在不同操作系统中运行, 。

2 oracle数据库优化的主要方向

2.1 cpu的利用方面

服务器在cpu利用率达到90%时工作状态达到最高峰。现在一般使用的系统式通过sar—U命令对cpu的使用率进行查看。Oracle中有对cpu使用率、使用时间、使用状态的详细记录。如果oracle数据库使用占据cpu的90%以上时, 说明oracle数据库被正常使用着, 如果没有达到90%, 说明cpu呗其他程序占用过多, oracle就无法使用更多的cpu时间。

对于SQL的重解释有以下来查看解析状况:parse time cpu查看系统的服务时间;parse time elapsed查看响应时间和用户等待时间之差。由此可以得到用户解析的平均等待时间, 这个时间应该接近于零。

对于冲突的问题, 如果没有冲突, 可以通过“latch free”的统计项进行查看;如果冲突过大, 可以降低spin_count参数值进行消除。

2.2 内存分配

Oracle数据库的内存参数调整主要是全局区SGA的调整。可以说SGA是oracle的心脏。它主要分为三个区域, 共享池、数据缓冲区、日志缓冲区域。SGA根据环境的变化而有所不同, 没有最佳的方案, 但是在设置之前, 首先要考虑以下几个问题: (1) SGA要占物理内存的40%到60%之间; (2) 初始化参数一些文件的参数对SGA的大小有着重要的影响; (3) databuffers参数决定着数据库的性能和SGA大小。

3 oracle数据库的性能优化技术

3.1 Sql语句优化

Sql语句优化就是在正确结果的前提下, 用优化器能够识别的语言, 利用索引减少表扫描的次数。其目的在于, 将Sql语言性能低下的转换为相同并且性能优异, 找到最简洁的数据查找路径, 并保持处理器时间和I/O时间平衡。分为以下几个步骤:

3.1.1 将有问题Sql语言找到, 寻找的方法有以下几种:

a.利用oracle中的相关命令进行搜集统计数据;b.通过图形性能工具获得数据库的命中率、CPU利用率、运行内存等的指标信息, 并将它们以表格或者曲线图的形式显示出来。

3.1.2 建立正确合适的Sql语句。

有以下的参照原则是建立索引, 使用索引的目的是为了提高查询效率, 但是并不是索引越多越好, 要做到根据情况, 添加合适的索引;索引不应该与用户表的空间建立在同一个磁盘上;避免会引起spl引擎资源的排序功能的关键词;注意子句的查询顺序。

3.2 oracle内存调整

3.2.1 优化shared pool

共享池的大小合适与否, 主要体现为数据字典的高速缓冲区和库缓冲区的高命中率上。如果库缓冲区设置太小, 会被语言的连续性不断的装入, 将影响系统的性能;如果设置过大, 将会cpu的使用率过大和空间的碎片化。

3.2.2 优化缓冲区

缓冲区内的高速缓存缓冲区的高速缓存越大, oracle数据库能装入的数据就越多, I/O性能越少, 系统性能越好。

3.2.3 重做日志缓冲区的调整

分配给日志缓冲区的空间如果太小, 就会造成没有足够的空间而等待lgwr会频繁的将数据写入磁盘, 增加了I/O的次数, 影响系统的性能。

3.3 oracle数据库的表空间调整

表空间是oracle的重要逻辑概念, 高效的使用表空间, 有利于提高数据库的性能。

表空间的合理分布, 应该将数据和索引分离、归档日志和重演日志分离。将90%以上的操作集中在系统表空间, 索引表空间, 回滚表空间和数据表空间上。并且将这四个表空间都要存储在单独的磁盘上。

表空间优化结构。首先要把系统表空间分离, 避免存放非系统用户, 否则就会增加系统维护的可能性。除了数据字典, 其他能够移出表空间的都要移除;其次是索引段的分离, 索引段不应该和数据段存在同一个表空间之内, 因为他们的数据管理和查询存在冲突。将它们储存在不同的表空间, 可以减少资源争用, 平衡两者负载, 并且可以较少整理数据表和碎片所需的管理成本;再次, 要将临时表空间分离, 临时段是在数据库中动态生成, 是储存排序操作的相关数据。由于他们是动态的, 所以临时段不应该和其他段放在一起储存。一般是将用户的临时段的表空间数据设置在临时表空间。

结束语

综上所述, oracle是现今使用比较广泛的一种数据库, 其安全, 高效, 限制小、存储量大的特点, 使他受到很多行业的青睐。优化oracle数据库, 对于这个系统的运行和操作有重大意义。Oracle的优化可以通过一定的方法, 在cpu应用率和内存分配的几个方面得以实现。希望通过本文为各行业信息化技术在数据库优化方面提供建议。

参考文献

[1]魏彬.ORACLE SQL语句执行效率研究[J].内蒙古科技与经济, 2013 (11) .

[2]王海凤, 张立民.ORACLE中数据库的恢复策略[J].内蒙古工业大学学报 (自然科学版) , 2003 (03) .

[3]王海凤, 张立民.ORACLE中数据库的恢复策略[J].内蒙古工业大学学报 (自然科学版) , 2003 (03) .

[4]张海霞.ORACLE数据库优化设计[J].内蒙古科技与经济, 2007 (14) .

篇7:影响Oracle数据库系统性能的初始化参数

1 影响Oracle数据库系统性能的因素

Oracle数据库系统性能受到数据库运行的诸多方面的影响与制约,包括数据库服务器性能、数据库配置、网络I/O、应用程序性能等。

1)数据库服务器性能

数据库服务器是整个系统的核心,它的性能直接影响到整个系统的性能。数据库服务器的性能主要取决于服务器上运行的操作系统以及服务器的硬件配置。

2)数据库配置

数据库的配置情况直接决定了数据库的性能优劣,是数据库性能优化的核心。[1]主要包括内存区的设置、I/O设置、参数设置、CPU调整、回滚段设置以及碎片整理等。数据库配置及其调整贯穿于数据库设计、创建、运行的各个阶段。

3)网络I/O

应用程序与数据库服务器之间的交互需要通过网络来进行,网络的性能,特别是网络I/O对整个系统性能有重要的影响。

4)应用程序实现

应用程序的实现方法对数据库性能也有很大的影响,特别是SQL语句的应用、数据库连接方式的选择、数据库端程序设计以及数据库对象的使用情况等,都影响系统的执行效率。

2 Oracle10g数据库系统性能优化与调整策略

Oracle数据库的性能优化,可以从数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发,进行统筹考虑。优化是有目的地更改系统的一个或多个组件,使其满足一个或多个目标的过程。下面从几个不同方面介绍Oracle数据库优化设计方案。

2.1 内存区调整与优化

Oracle数据库实例的内存结构主要由SGA和PGA构成,其中SGA主要包括数据缓冲区、共享池、日志缓冲区,它们的分配是否合理直接决定了数据库性能。

1)数据缓冲区调整与优化。数据缓冲区用于存储从数据库中检索的数据。如果用户请求的数据在数据缓冲区中,则数据从数据缓冲区中直接返回给用户,查询时间短。如果用户请求的数据不在数据缓冲区中,则先由服务器进程将数据从数据文件读取到数据缓冲区,然后再从数据缓冲区中将数据返回给用户,查询时间延长。因此,保证尽量多的用户请求数据在缓冲区中,避免读取数据文件,可以大大提高数据的操作性能。[2]

2)共享池调整与优化。设置共享池的目的为了缓存已经被解析过的SQL,而使其能被重用,不再解析。[3]通过确保大多数语句能够在共享池中查找到它们自己的一个已分析版本,就可以提高语句分析和执行的效率,降低资源消耗。共享池中存放的信息是应用程序需要经常访问的,因此需要保持这些信息的高命中率。共享池大小是否合适,主要体现在库缓冲区和数据字典高速缓冲区的命中率上。

3)日志缓冲区调整与优化。日志缓冲区用于存放数据的修改信息。日志首先写入日志缓冲区,在一定条件下由L GWR进程将日志缓冲区的信息写入日志文件。如果日志缓冲区已满,但还没有写入日志文件,则日志写入处于等待状态,即日志缓冲区写入失败。过多的日志写入失败,说明日志缓冲区偏小,影响数据库性能。

4)PGA区调整与优化。PGA区主要由私有会话区以及排序区构成。其中,排序区设置是否合理对数据库性能有一定的影响。在Oracle数据库中,排序可以在PGA的排序区或临时表空间的临时段中进行,由于使用临时段时需要对磁盘进行I/O操作,降低的排序的效率,因此Oracle建议尽量在排序区中进行排序操作。

2.2 磁盘I/O调整

对于数据库系统来说,磁盘I/O操作是数据库性能最重要的方面,影响磁盘I/O性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。减少磁盘I/O操作的最根本的方法就是利用高速缓存存放频繁使用的数据信息,最小化磁盘I/O,降低Oracle服务器查找和返回行所花费时间的最有效的方法之一就是利用索引、分区。

1)索引Index的优化设计。索引是数据库中重要的数据结构,是优化的基础,索引把表中的逻辑值映射到Row ID,因此索引能进行快速定位数据的物理地址。索引必须充分利用才能加快数据库访问速度,建立索引根本目的是提高查询效率,利用索引行记录定位,减少磁盘的读写次数,从而达到提高查询速度的目的。一个建有合理索引的数据库应用系统可能比一个没有建立索引的数据库应用系统效率高几十倍,但并不是索引越多越好,在那些经常需要修改的数据列上建立索引,将导致系统性能的下降和存储空间的浪费。

2)使用Oracle分区技术。分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行FTS(Full Table Scan,全表扫描),明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。

2.3 回滚段设置

回滚段用于保存回退条目,将被修改的数据的初始版本保存在回退条目中,利用该信息,用户可以撤销未提交的事务,Oracle可以维护数据库的一致性,并从实例崩溃中恢复。因此,回滚段在数据库事务处理中起着关键的作用,其设置是否合理直接影响到系统的性能。

在Oracle 10g中,可以使用撤销表空间自动进行回滚段的管理,也可以手动进行回滚段的管理。在手工管理中,应该根据事务大小不同建立不同大小的回滚段,并分散到不同的表空间中。回滚段的数量与事务的数量有关,假设有n个并发事务,当n<16时,需要建立4个回滚段,当16≤n<32时,需要建立8个回滚段;当n≥32时,需要建立n/4个回滚段[4]。

2.4 碎片整理

由于数据库中数据库对象不断变化以及数据操作不断进行,导致磁盘碎片的产生。数据库中碎片可分为表空间级、表级、索引级三类。

1)表空间级碎片是由于段的建立、扩展和删除引起的。可以通过重组表空间、执行AL TER TA2BL ESPACE...COAL ESCES命令或先通过EXPORT程序将数据先导出,然后利用TRUNCATE删除表中数据,最后利用IMPORT程序将数据导入的方法消除表空间级碎片。[5]

2)表级碎片是由于行迁移或行链接导致数据存储不连续而形成的。可以通过设置合适大小的数据块以及PCTFREE、PC-TUSED参数以尽量避免表碎片的产生。通常在创建数据库时,根据应用中记录的大小来设置标准数据块大小,保证其可以存储一条完整的记录。

3)索引级碎片是由于索引太多、索引值变化频繁而导致B-TREE结构失衡、叶节点排序混乱引起的。可以通过减少表上索引数量,以及在数据变化频率较低的列上创建索引或先进行数据的插入操作,然后再为表创建索引等方法,减少索引表的变化,降低索引碎片的产生。

2.5 CPU性能调整

服务器的CPU使用情况对数据库的性能影响很大,调整CPU可以更有效地利用服务器的各种资源,提高数据库的运行速度和效率。

1)尽量利用多个CPU处理器来执行事务处理和查询CPU的快速发展使得Oracle越来越重视对多CPU的并行技术的应用,只要可能,应该将数据库服务器和应用程序的CPU请求分开,或将CPU请求从一个服务器移到另一个服务器。

2)使用PQO方式进行数据查询PQO方式不仅可以在多个CPU间分配SQL语句的请求处理,当所查询的数据处于不同的磁盘时,一个个独立的进程可以同时进行数据读取。

2.6 SQL语句优化

对数据库进行的各种操作(包括添加、删除、查询等等)最终都是通过数据库的SQL语句来执行,因此SQL语句的执行效率最终决定了Oracle数据库的性能高低,SQL语句的书写,通常应该遵循以下原则:

1)尽量避免对全表扫描。

2)对经常查询的表创建合理索引,对大表的查询应在索引上进行。

3)在字符串查询中尽可能少用通配符。

4)如果多个表经常被查询,尽可能使其放在同一数据块中。

5)尽量使用(not)exists的操作替代(not)in这样的操作。

6)连接查询时,要有充分的连接条件。

3 结束语

Oracle10g数据库系统性能优化与调整是一个复杂、繁琐的系统工程,贯穿于数据库系统开发的整个过程。数据库系统的优化和调整,包括内存结构调整、磁盘I/O调整、磁盘碎片调整以及CPU性能调整等,直接决定了整个数据库系统的性能,应该充分利用各种性能优化与调整策略进行反复的调整,以获得系统的最优性能。

摘要:Oracle数据库是当前应用最广泛的大型数据库,随着数据库数据量的增大、并发用户数量增多,系统常常出现吞吐量降低,响应时间变长的性能问题,如何有效优化、调整数据库性能,避免系统瓶颈,是保证Oracle数据库高效运行的基础。该文试从分析影响Oracle数据库系统性能的因素入手,重点介绍了Oracle10g数据库系统优化策略,包括内存区调整与优化、磁盘I/O优化、磁盘碎片、回滚段设置、CPU性能调整以及SQL语句优化等,通过对这些优化策略的介绍,期望能使Oracle10g数据库系统获得最优性能。

关键词:Oracle数据库,数据库配置优化,SQL语句优化

参考文献

[1]藤永昌.Oracle数据库管理员大全[M].北京:清华大学出版社,2004.

[2]布莱拉,马树其.Oracle10G新特性学习指南[M].北京:电子工业出版社,2005.

[3]王海亮.精通Oracle10G系统管理[M].北京:中国水利水电出版社,2005.

[4]盖国强,冯春培.Oracle数据库性能优化[M].北京:人民邮电出版社,2006.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:企业预算管理应用技巧 下一篇:系统管理数据库