ORACLE 性能优化
oracle优化方法总结

千里之行,始于足下。
oracle优化方法总结Oracle优化是提高数据库性能和响应能力的重要步骤。
本文总结了一些常见的Oracle优化方法。
1. 使用索引:索引是提高查询性能的主要方法。
通过在表中创建适当的索引,可以加快查询速度,并减少数据访问的开销。
但是要注意不要过度使用索引,因为过多的索引会增加写操作的开销。
2. 优化查询语句:查询语句的效率直接影响数据库的性能。
可以通过合理地编写查询语句来提高性能。
例如,使用JOIN来替代子查询,尽量避免使用通配符查询,使用LIMIT来限制结果集的大小等。
3. 优化表结构:表的设计和结构对数据库的性能也有很大的影响。
合理的表设计可以减少数据冗余和不必要的数据存储,提高查询速度。
例如,适当地使用主键、外键和约束,避免过多的数据类型和字段等。
4. 优化数据库参数设置:Oracle有很多参数可以用来调整数据库的性能。
根据具体的应用场景和需求,可以根据情况调整参数的值。
例如,调整SGA和PGA的大小,设置合适的缓冲区大小,调整日志写入方式等。
5. 使用分区表:当表的数据量很大时,可以考虑将表分成多个分区。
分区表可以加速查询和维护操作,提高数据库的性能。
可以按照时间、地域、业务等来进行分区。
6. 优化存储管理:Oracle提供了多种存储管理选项,如表空间和数据文件管理。
合理地分配存储空间和管理数据文件可以提高数据库的性能。
例如,定期清理无用的数据文件,使用自动扩展表空间等。
第1页/共2页锲而不舍,金石可镂。
7. 数据压缩:对于大量重复数据或者冷数据,可以考虑使用Oracle的数据压缩功能。
数据压缩可以减少磁盘空间的使用,提高IO性能。
8. 使用并行处理:对于大型计算或者批处理任务,可以考虑使用Oracle的并行处理功能。
并行处理可以将任务分成多个子任务,并行执行,提高处理能力和效率。
9. 数据库分区:对于大型数据库,可以考虑将数据库分成多个独立的分区。
数据库分区可以提高数据的并行处理能力,减少锁竞争和冲突,提高数据库的性能。
浅谈Oracle数据库SQL性能优化

千里之行,始于足下。
浅谈Oracle数据库SQL性能优化
SQL性能优化在Oracle数据库中是非常重要的,并且是一个复杂而繁琐的过程。
下面是一些常见的SQL性能优化技巧。
1. 使用正确的索引:索引是加快查询速度的重要因素。
确保表中的列被正确索引,以便Oracle能够快速定位所需的数据。
2. 优化查询语句:编写高效的查询语句是提高性能的关键,避免使用大量的子查询、联合查询以及不必要的计算。
3. 提高表的设计:优化表的结构和设计,包括拆分表、合并表、垂直分区和水平分区等。
4. 使用合适的数据类型:使用合适的数据类型可以节省存储空间和提高查询效率。
5. 避免使用全表扫描:全表扫描是一种费时的操作,尽量避免使用它,使用索引或其他技术来提高查询效率。
6. 分析并优化执行计划:使用Oracle的性能分析工具来分析查询执行计划,找出慢查询的原因,并优化查询的执行计划。
7. 优化硬件和服务器配置:提高服务器的性能,如增加内存、优化磁盘和网络等。
8. 定期收集统计信息:定期收集表和索引的统计信息,以便Oracle优化查询的执行计划。
第1页/共2页
锲而不舍,金石可镂。
9. 使用缓存和预编译:使用数据库缓存和预编译技术来提高查询速度。
10. 并发控制:合理设计并发控制机制,避免不必要的锁和死锁,提高查询和更新的并发性能。
总之,SQL性能优化是一个综合性工作,需要深入了解Oracle数据库的架构和原理,并结合具体的业务场景进行优化。
通过合理的索引设计、优化查询语句、优化表设计以及优化硬件和服务器配置等手段,可以大大提高Oracle数据库的性能。
Oracle的性能优化

千里之行,始于足下。
Oracle的性能优化Oracle数据库性能优化是提高数据库性能的关键步骤之一。
通过对数据库的优化,可以提高查询速度、降低系统负载、提升系统稳定性,从而提高用户的体验。
下面将介绍一些常见的Oracle数据库性能优化策略。
1. 索引优化:索引是提高查询效率的重要手段,可以极大地减少查询时的磁盘I/O操作。
优化索引包括以下几个方面:- 选择合适的索引类型,如B树索引、位图索引等。
根据具体业务场景选择适当的索引类型。
- 考虑创建复合索引,将多个列放在同一个索引内,可以减少索引的数量,提高查询效率。
- 避免创建过多的索引,过多的索引会增大数据插入和更新的成本。
- 定时对索引进行统计信息收集,使优化器能够更好地选择索引执行计划。
2. 查询优化:- 避免使用SELECT *查询,只查询需要的列,减少数据传输量。
- 使用合理的JOIN语句,避免嵌套循环连接或者全表扫描。
- 使用EXISTS或IN替代NOT EXISTS或NOT IN,后者在数据量大时性能较差。
- 避免使用函数或者表达式作为WHERE条件,这会导致索引失效。
- 使用分页查询时,尽量使用ROWNUM而不是OFFSET/FETCH,后者性能较差。
3. 表结构优化:- 合理设计表结构,尽量避免冗余数据和重复字段。
- 使用正确的数据类型,减少存储空间的浪费。
第1页/共3页锲而不舍,金石可镂。
- 选择合适的表空间和存储策略,避免表空间的碎片化和数据文件的扩展问题。
- 定期清理无用数据,避免数据库膨胀过快。
4. 系统参数优化:- 调整SGA参数和PGA参数的大小,根据实际情况合理分配内存。
- 调整日志参数,如redo日志大小和checkpoint间隔,减少写入磁盘的次数。
- 调整并发参数,如并行度和数据库连接数,提高系统的并发性能。
5. 存储优化:- 使用合理的存储结构,如表空间、数据文件、表和索引的分布策略。
- 使用合适的存储介质,如固态硬盘(SSD)、闪存阵列等,提高存储性能。
Oracle性能调优——基本参数调整

Oracle性能调整(一)——基本参数调整一、操作系统参数交换区是Oracle的一项基本的要求。
可以根据Oracle的发行要求来确定。
一般交换区大小的要求是该服务器内存的2倍至4倍之间,建议是内存的4倍Note2:oracle 文件设置当服务器平台已完成操作系统的安装后,就应该开始认真的考虑下面的问题:A、是否采用裸设备实际应用的生产系统基本都是采用裸设备,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。
B、安装点的考虑Oracle的安装点就是指数据文件、日志文件和控制文件的安置路径,为了使系统在以后运行性能达到优化,建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上。
最好将数据文件、日志文件和控制文件分别存放在不同的路径。
C、SYSTEM表空间对应数据文件在自定义安装会话中,建议你根据需要设置system表空间所对应的数据文件的大小。
一般要设置比默认值的2倍。
该数据文件的大小最好是在300MB至500MB间。
因为数据文件太小不利于系统的运行。
D、临时表空间对应的数据文件临时表空间对应的数据文件可以根据将来系统存放的应用的处理情况来定。
比如系统将来可能要经常进程排序处理,则需要设置较大的临时表空间,也可能需要再建立新的临时表空间。
这里建议临时表空间的数据文件在100MB至300MB左右。
E、回滚段表空间对应的数据文件回滚表空间都是系统管理,初始值也是根据系统事务量预估计的值,实际到运行阶段如果系统常出现ORA-01555错误的时候,可能就需要增加回滚表空间的大小。
F、日志文件的大小日志文件的大小对于Oracle系统的运行也是相当重要。
默认值是太小。
实际根据事务繁忙预估计日志大小,没有固定的具体值范围,建议重做日志切换时间不能过短也不能过长,一般在20-40分钟左右。
该参数可以在系统运行期间根据数据库系统日志切换时间重新调整,控制文件的大小。
G、数据库块的大小如果你的应用系统是OLTP的话,可以采用较小的数据库块。
oracle性能优化面试题

oracle性能优化面试题一、概述Oracle性能优化是数据库管理中的重要环节,通过合理的调整和优化,可以提升数据库的运行效率和响应速度,提高系统的稳定性和可用性。
在面试中,常常会涉及到Oracle性能优化相关的问题,下面是一些常见的Oracle性能优化面试题。
二、索引优化1. 请说明什么是索引?索引是一种特殊的数据库对象,它能够加快数据库的查询速度。
索引由一个或多个列组成,它们的值会按照一定的顺序进行排序,并建立索引数据结构以支持快速查找。
2. 如何确定何时创建索引?创建索引需要权衡查询的速度和更新的效率。
一般来说,当查询的频率远远大于更新的频率时,可以考虑创建索引。
同时也需要考虑查询的字段是否经常被使用,以及查询的覆盖度等因素。
3. 请说明常见的索引类型?常见的索引类型包括唯一索引、非唯一索引、主键索引、聚簇索引和非聚簇索引等。
4. 如何选择合适的索引?选择合适的索引需要考虑查询的频率、更新的频率、查询的覆盖度等因素。
同时还需要考虑索引的大小以及对于查询的影响。
三、SQL优化1. 请说明常见的SQL调优手段?常见的SQL调优手段包括使用合适的索引、优化SQL语句的写法、使用合适的连接方式、减少数据库的访问次数等。
2. 如何使用执行计划进行SQL优化?执行计划是Oracle数据库为了优化查询语句而生成的查询执行计划,其中包含了查询的操作步骤、连接方式、访问路径等信息。
可以通过查看执行计划来判断查询是否需要进行优化,并通过优化查询的方式来提升性能。
3. 如何优化大表查询?优化大表查询可以通过分页查询、增加条件过滤、创建合适的索引等方式来进行。
同时也可以考虑对大表进行分区或者分表的方式来提高查询效率。
四、资源优化1. 如何优化内存资源?优化内存资源可以通过调整SGA和PGA的大小来实现。
SGA包括共享池、数据库缓存和重做日志缓冲等,可以通过调整参数来合理分配内存。
PGA是为每个会话分配的私有内存区域,可以通过调整PGA_AGGREGATE_TARGET参数来优化。
34种Oracle性能优化的方法

34种Oracle性能优化的方法1、选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.2、WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.3、SELECT子句中避免使用‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间4、减少访问数据库的次数:ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE 参数, 可以增加每次数据库访问的检索数据量 ,建议值为2006、使用DECODE函数来减少处理时间:使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.7、整合简单,无关联的数据库访问:如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)8、删除重复记录:最高效的删除重复记录方法 ( 因为使用了ROWID)例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);9、用TRUNCATE替代DELETE:当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)10、尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE为管理上述3种资源中的内部花费11、用Where子句替换HAVING子句:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。
Oracle性能调优

千里之行,始于足下。
Oracle性能调优
Oracle性能调优是指通过对数据库系统进行各种配置和优化,以提升数据库的响应速度、并发能力和稳定性,以满足用户的需求。
以下是一些常见的Oracle性能调优技巧:
1. 硬件配置:增加服务器的内存、CPU和磁盘等硬件资源,以提高数据库的整体性能。
2. SQL优化:通过检查和优化SQL语句,去除不必要的查询、索引不匹配等问题,以提高查询性能。
3. 索引优化:根据实际查询访问模式,设计合适的索引并定期进行重建和维护,以加快查询速度。
4. 数据库参数优化:调整Oracle数据库的各项参数,如SGA、PGA、缓冲池等,以提升数据库的性能。
5. 分区表和分区索引:将大表分割为多个小表,并使用分区索引来提高查询效率和维护性能。
6. 批处理操作:对于大批量的数据操作,尽量使用批处理操作,减少物理I/O次数,提高处理效率。
7. 数据库统计信息收集:定期收集和更新表的统计信息,以便查询优化器做出更准确的查询计划。
第1页/共2页
锲而不舍,金石可镂。
8. 资源管理:合理配置Oracle数据库的资源管理策略,如设置合适的连接数、并行度等,以实现最大化的利用率。
9. 数据库分析工具:使用各种数据库性能监控和分析工具,如AWR报告、SQL Trace等,来定位和解决性能瓶颈问题。
总结来说,Oracle性能调优是一个持续优化的过程,需要不断地监测、分析、调整和测试,以实现最佳的数据库性能。
同时,在调优过程中需根据具体情况进行有针对性的优化措施,以达到最好的性能效果。
Oracle数据库性能优化分析

千里之行,始于足下。
Oracle数据库性能优化分析Oracle数据库性能优化分析是指对Oracle数据库进行综合性能分析和优化的过程。
通过分析数据库的运行状况、识别潜在的性能瓶颈、确定解决方案并实施优化措施,可以提高数据库的性能和效率。
以下是Oracle数据库性能优化分析的一般步骤:1. 收集性能数据:通过Oracle的性能监控工具,如AWR报告、统计信息收集等,收集数据库的性能数据,包括CPU利用率、I/O响应时间、锁定情况等。
2. 确定性能瓶颈:通过分析性能数据,确定数据库中存在的性能瓶颈,如高CPU使用率、高IO等待、长时间的锁等待等。
3. 优化SQL语句:分析执行频次较高的SQL语句,通过重写SQL语句、调整索引和统计信息等方式,优化SQL语句的执行计划,减少IO开销和CPU消耗。
4. 优化数据库结构:根据应用的需求和查询模式,调整表结构、分区策略、索引设计等,以提高查询性能和数据访问效率。
5. 优化数据库配置参数:调整数据库的配置参数,包括缓冲区大小、日志大小、并发连接数等,以最大限度地利用硬件资源,提高数据库的吞吐量和响应时间。
6. 确保数据完整性和一致性:通过使用合适的约束和触发器,确保数据的完整性和一致性,防止数据错误和冲突对性能造成负面影响。
第1页/共2页锲而不舍,金石可镂。
7. 监控和调优:定期监控数据库的性能指标,如响应时间、吞吐量等,及时识别和解决潜在的性能问题,保持数据库的高可用性和性能稳定性。
需要注意的是,性能优化是一个综合性的工作,需要结合具体的应用场景和需求来进行分析和优化,没有一种通用的解决方案,需要根据实际情况进行定制化的优化措施。
同时,性能优化是一个持续改进的过程,需要定期评估数据库的性能状况,并根据需求进行调整和优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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建议统一取AL32UTF83. 扩展段管理(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文件数据。
同样的,系统默认时取值有点小。
需要更改。
建议取值:206. 重做日志(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 SPACEMANAGEMENT)当创建表空间的EXTENT的管理方式是LOCAL且为非临时表空间时,需要指定数据段(如表、索引、分区等)的管理方式。
系统有两种选择:⏹MANUAL⏹AUTO如果指定为MANUAL方式,则ORACLE使用系统字典表中的FREE LIST 的相关信息来分配SEGMENT空间;如果选择AUTO,则系统通过表空间上的BITMAP信息来分配空间。
建议:使用AUTO方式来管理SEGMENT的分配。
注意:当设置成AUTO方式时,建表时的PCTUSED、FREELIST等参数将不再有效二、内存调整1. 内存调整的意义ORACLE将其数据存贮于内存以及磁盘中。
对内存的访问速度将远快于对磁盘的访问速度。
因此,数据库性能调优的一个最基本目标就是如何有效地减少对磁盘的访问(物理IO)。
加大内存的容量并根据业务特性有效地分配内存给ORACLE的不同内存结构使用将可以大大提高系统的性能。
2. ORACLE的内存结构⏹Buffer cacheORACLE数据块的缓存。
ORACLE在访问数据时,首先从该缓存在查找所需数据,如果该缓存中没有数据,则系统试图从磁盘中获取数据。
⏹Shared pool该部分内存存贮ORACLE的许多方面的数据,包括被执行过的SQL语句以及其执行计划、系统数据字典以及其他数据。
⏹Large pool这部分主要用来保存并行查询时候的一些信息,还有就是RMAN 在备份的时候可能会使用到。
如果设置了MTS,则由于UGA部分要移入这里,则需要具体根据session最大数量和sort_ares_size 等相关会话内存参数的设置来综合考虑这部分大小的设置⏹Log bufferORACLE在写REDO LOG 文件之前,是先将LOG数据存于此处,当LOG BUFFER的大小充满度达到1/3时,将会触发物理的写日志操作。
说明1.如果系统中设置了buffer_pool_keep 、buffer_pool_recycle两个缓存的话,其内存的分配并不是从buffer cache中获取,而是从整个SGA的内存区获取。
具体相关说明见以下相关章节。
2.在项目中,数据库一般不安装成MTS方式3. SGA内存之外的内存在设置与调整SGA内存之前,需要了解在数据库相同的主机上还有什么其他应用程序也需要较大的内存。
如计费数据库主机上,很可能同时也在跑计费程序。
另外就是操作系统本身出需要一定的内存。
虽然各类操作系统都有虚拟内存的支持,也就是说可以将SGA设置成比物理内存还要大的数据值,但这样做已完成违背了性能调优的意义,从而导致大量的内存页面的切换以及物理IO操作。
说明可以通过操作系统的命令来查看是否存在大量的页面切换:HP-UX:swapinfo、vmstat等AIX:lsps、vmstat等4. SGA内存的取值范围确定分配给ORACLE的内存的大小需要考虑的主要因素有:主机上其他应用的内存的需求、操作系统的内存需求、数据库的使用特性等。
通常情况下,可以将SGA内存的最大使用值确定在ORACLE可用物理内存的70%以内(即从物理内存中去除各类非ORACLE应用所需内存所剩余的内存的70%以内)。
说明设置SGA最大可用内存可通过修改参数max_sga_size5. 设置BUFFER CACHEa)确定BUFFER CACHE大小在安装一个新的实例时,不可能比较准确知道设置多大的BUFFER CACHE 是合适的。
所以通常的做法是先根据经验设置一个大小,然后启动ORACLE的相关统计开关,然后在该数据库上执行典型的应用或模拟实际应用。
最后检查ORACLE的相关系统计数据,做出相应的调整。
可以通过以下两个方面了解BUFFER CACHE的设置:⏹检查系统表:V$DB_CACHE_ADVICE,获取BUFFER CACHE的大小的建议以及不同BUFFER CACHE大小对系统性能的影响。
⏹检查当前系统的BUFFER CACHE的命中率。
为了获取V$DB_CACHE_ADVICE中的数据,需要将数据库的参数DB_CACHE_ADVICE设置成TRUE。
可以通过以下SQL语句来获得BUFFER CACHE的大小的建议:SELECT size_for_estimate, buffers_for_estimate,estd_physical_read_factor, estd_physical_readsFROM V$DB_CACHE_ADVICEWHERE name = ’DEFAULT’AND block_size = (SELECT value FROM V$PARAMETERWHERE name = ’db_block_size’)AND advice_status = ’ON’;以下是从测试机中采集下来的统计数据:以下是其统计图表:从以上数据得知,当前的DB_CACHE_SIZE大小约为32M,如果在有空闲物理内存的情况下,将DB_CACHE_SIZE调成240M将会有效减少系统的物理IO读的次数。
但时,如果再增大其大小,对读的性能的提高将不会再有明显的改善。