oracle数据库调优描述

来源:这里教程网 时间:2026-03-03 17:31:25 作者:

数据库调优方面主要包括了内存调优、I/O的调优、操作系统资源的管理和性能视图相关调优几个方面。 内存方面,主要关注的是cache。使系统运行块,最通用的方法就是将用过的数据缓存起来,包括sql、pl/sq、数据块、编译过的可直接执行的语句等。oracle的内存主要是SGA和PGA两部分,SGA的内容主要有:shared pool包括了library cache和data dictionary cache   library cache 主要缓存的是sql和pl/sql的可执行形式   data dictionary cache主要缓存的是数据字典信息 buffer cache主要缓存的是查询所需要的数据块 large pool主要作用是处理大规模的信息,比如做recovery manager、备份、并行语句执行、多服务器共享等 java pool主要缓存java相关类 log buffer 主要缓存对数据块的修改以上内存结构都属于SGA基本内容,即系统全局区的组件。内存调优就是对这几个部分进行大小和设置的调整。 11g中已经实现了自动内存管理,一般情况下,只需要告诉oracle有多少可用内存即可,其他的工作由oracle来完成。 手工内存管理模式下,才可以对各个内存池进行调整。因此对于内存,主要是了解各个池的含义和作用,以及怎样判断其配置不合理。通常来说,进行性能诊断时ADDM报告也会给出比较合理的解决方案。但是其中给出的可能是将哪个参数增加或减少,减少到多少还是由dba的经验判断的。buffer cache、shared pool分别是将以前用过的数据、语句(sql、pl/sql)存起来,当再次使用时避免物理读增加响应时间。因此,对于一般的OLTP系统来说,池的命中率高证明缓存得到了使用,硬解析少,系统性能可能更好。但也有例外。实例刚启动等特殊情况下命中率低是正常的,会逐渐提高。buffer cache存储的是数据,由于内存优先,LRU算法不能也无法将使用频率很高的数据一直在内存中而不被aged out。通过细分,将希望保留时间长的数据放入keep池,将比希望保留在内存中的(太大或不经常用的)放入recycle池,(一般数据在default池),可以进一步地提高固定内存量的有效性。有效使用buffer cache,也就是使频繁执行的语句避免不必要的资源消耗。shared pool中除了library cache和data dictionary cache,选配server result cache。 由于共享服务器、并行查询、recover manager需要花费的内存量比较大,所以才建议分到large pool中。 reserve pool是预留区域,只有当内存不够用时才启用。 为保证共享池的高效,经常执行的语句可以考虑使用共享游标,减少在多个用户间同义词的调用,用pl/sql进行日志的查询等工作(减少可能的硬解析、网络负担等),缓存序列值等。服务器进程会将buffer cache中数据块的修改写入到redo log buffer,再有redo log buffer通过LGWR写入到在线重做日志文件中。 SGA是系统全局区,对应地,每个用户都有其独有的PGA。存储用户独有的数据和控制信息。默认的大小是SGA的20%,可以通过pga_aggregate_target等参数调整。主要取决于系统功能以及用户数量。oracle提供了很多动态视图来监测PGA的内存使用,了解这些视图,主要是方便发生问题时判断是哪个用户、会话的问题。result caches即结果或结果对应原表的缓存。server result cache是SGA的一部分,client result caches存在于client process上。两者无依赖关系,用法比较简单,需要注意其限制因素。通常来说,也不会有太多应用。 从i/o方面讲,首要的任务就是合理、充分地利用磁盘资源,使i/o效率得到充分使用,并有一定的前瞻性。 出于安全性考虑,很多生产系统使用RAID技术;rac环境下还需要注意节点间的i/o。oracle推荐使用oracle自动存储管理(ASM)。优点在于条带化、镜像、在线存储配置和动态平衡、文件创建删除的管理。LVM逻辑卷管理工具及硬件条带化有助于实现i/o平衡,如果没有这些设置,就应该根据每个文件的i/o要求来进行磁盘分配了。“将表和其对应的索引分开存放可以减少i/o的说法”是没有根据的;重做日志文件最好放在单独的磁盘上,处于i/o考虑,还应避免在重做日志文件所在磁盘上使用RAID5技术;归档日志应该放在不同的磁盘。 如果使用oracle文件管理系统(OMF),创建文件时不需要指定位置,提高了管理效率并自动实现i/o的优化。在选择数据块的大小方面,应该根据系统的特点。主要是查询数据的数量和是否有序两个因素。通常决策支持系统使用大数据块,而oltp系统使用默认或小数据块。存储过程dbms_resorece_manager.calibrate_io可用于i/o校准。 而无需按照oracle,也可以使用orion工具评估磁盘的i/o性能。 操作系统的资源方面,问题分为进程管理、内存管理以及调度三方面。通常来说,操作系统的调优相对应用和数据库调优作用不是很明显。 由于并发事务间有优先级别的问题,可以为不同的资源组分配资源。操作系统资源的优化,主要就是使优先级高的会话得到更多资源,并较快完成,而优先级低的可以占用较少的并行甚至等待。 使用缓存技术和允许异步i/o,能提高i/o效率。使用操作系统的资源管理方法可以解决很多问题,而oracle资源管理器可以作为一个补充。操作系统资源管理不同于域管理等方式,资源并不是分配给某个会话后,其他会话不能用,而是相对共享的。 影响资源分配的主要是分页或交换分区、大量系统调用、大量进程。

相关推荐