ORACLE数据库优化理论探析摘要:Oracle数据库是一种具有高可靠性、高安全性、高兼容性的大型关系数据库,得到广泛应用,要使Oracle数据库满足应用需求,有效管理和利用数据,较好地为业务服务,对Oracle数据库优化显得尤为重要。关键词:数据库优化ORACLESQL中图分类号:TP2文献标识码:A文章编号:1672-3791(2012)04(b)-0032-01数据库作为系统的核心,其设计和应用对系统执行的效率和稳定性具有重大影响。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。本文主要从以下角度分析数据库性能优化技术。1ORACLE数据库的系统性能评估参数DBA应该根据信息系统的类型注意考虑相关的数据库参数。1.1在线事务处理信息系统(OLTP)系统有频繁的Insert.Update操作,需要确保数据库的并发性、可靠性和最终用户的速度,考虑以下参数:数据库回滚段是否足够?建立索引、聚集、散列的必要性?系统全局区(SGA)大小是否合适?SQL语句是否高效?1.2数据仓库系统(DataWarehousing)主要任务是从ORACLE的大量数据中进行查询,总结数据之间的相关规律。涉及以下参数:是否采用B*-索引或者bitmap索引?是否采用并行SQL查询?是否采用PL/SQL函数编写存储过程?是否需要建立并行数据库提高数据库的查询效率?2ORACLE数据库优化、参数调整2.1设计数据结构和应用程序需要注意考虑是否应用ORACLE数据库的分区功能;哪些频繁访问的数据库表应该建立索弓I;根据所需要的数据库资源决定应用程序采用Client/Server还是Browser/Web/Database体系结构2.2应用程序最终将通过SQL语句执行,SQL语句的执行效率是ORACLE数据库性能的决定因素同一功能可以通过不同的SQL语句来实现,但是不同的SQL语句执行效率不一样。SQL语句的调整需要注意以下几点。(1)尽量使用索引,创建索引可以提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,加快数据的检索速度。第三,加速表和表之间的连接,有利于实现数据的参考完整性。第四,在使用分组和排序子句进行数据检索时,减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。(2)选择联合查询的联合次序。程序员首先需要选择要查询的主表,因为主表需要对整个表数据进行扫描,所以主表应该数据量最小。(3)子查询中尽量用where(NOT)exists代替IN或NOTIN语句。(4)尽量将视图查询转换为对数据表的直接查询以下几点。(5)SHARED_POOL_RESERVED_SIZE参数,该参数在SGA共享池中开辟一个连续的内存空间,方便存放大的SQL程序包。(6)DBMS_SHARED_POOL程序能够将某些频繁使用的存储过程“锁”在SQL区中,方便随时利用,大大提高最终用户的响应时间。3服务器内存的调整在信息系统运行时可以对内存进行优化配置,DBA根据数据库运行状况对数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小进行调整;包括调整程序全局区(PGA区)的大小。值得注意的是,SGA区不能太大,否则会占用操作系统使用的内存,造成虚拟内存的页面交换,影响系统运行。SGA的调整包括以下几点。(1)共享池:包括共享SQL区和数据字典缓冲区,前者主要用于存放用户SQL命令,后者主要用于存放数据库运行的动态信息。DBA通过执行语句:select(sum(pins・reloads))/sum(pins)nLibCache”fromv$librarycache;查询共享SQL区的使用率。如果使用率<90%,应该适当增加共享池的大小。通过执行语句:select(sum(gets-getmisses-usage-fixed))/sum(gets),,RowCache'fromv$rowcache;查询数据字典缓冲区的使用率,同样,如果结果<90%,应该适当增加共孚池的大小°(2)数据缓冲区。通过语句:SELECTname,valueFROMv$sysstatWHEREnameIN(uudbblockgets'","consistentgets””,"physicalreads””);查询数据缓冲区的使用情况。使用命中率=1-(physicalreads/(dbblockgets+consistentgets))o如果结果<90%,应该适当增加数据缓冲区的大小。(3)0志缓冲区。执行语句:selectname,valuefromv$sysstatwherename...