Oracle9i性能优化与调整PerformanceTuningOracle9iBufferCache数据缓冲区调整数据缓冲区调整估算数据缓冲区:V$DB_CACHE_ADVICE在Oracle9i中,增加了一个新数据字典v$db_cache_advice,可用于测算数据缓冲区从当前值修改为10%至200%时物理读数量的估算。在查询该数据字典前,必须将参数DB_CACHE_ADVICE设置为ON,重新启动数据库。按以下方法查询数据字典v$db_cache_advice,计算缓冲区db_cache_size增加时物理读的结果:估算数据缓冲区:V$DB_CACHE_ADVICE当前CacheSize200%10%估算数据缓冲区:V$DB_CACHE_ADVICEV$SYSSTAT--计算HitRatio:计算数据缓冲区命中率HitRatio:V$SYSSTATOracle9iSharedPool共享池调整共享池调整:SHARED_POOL_SIZE共享池(SHAREDPOOL)是系统全局区SGA的第二个组成部分,主要用于对用户的SQL、PL/SQL程序、以及存储过程、包、函数、数据库触发器等进行语法分析、编译、执行。共享池包括库缓冲(LIBRARYCACHE)、数据词典缓冲(DATADICTIONARYCACHE)、以及用户全局区(USERGLOBALAREA)三个部分。共享池大小计算(SHARED_POOL_SIZE)库缓冲区(LibraryCache)计算SharedPool命中率:共享池大小计算(SHARED_POOL_SIZE)库缓冲区(LibraryCache)计算SharedPool命中率:共享池大小计算(SHARED_POOL_SIZE)库缓冲区(LibraryCache)查询SharedPool空闲空间:共享池大小计算(SHARED_POOL_SIZE)数据字典区(DictionaryCache)共享池大小计算(SHARED_POOL_SIZE)数据字典区(DictionaryCache)Oracle9iLogBuffer日志缓冲区调整日志缓冲区大小计算(LOG_BUFFER)日志缓冲区大小计算(LOG_BUFFER)计算LogBuffer命中率:Oracle9iSortArea排序区调整排序区大小计算(SORT_AREA_SIZE)计算SORTAREA的SQL语句:CREATEINDEXSELECT....ORDERBYSELECTDISTINCTSELECT....GROUPBY排序区大小计算(SORT_AREA_SIZE)计算SORTAREA的SQL语句:排序区大小计算(SORT_AREA_SIZE)计算SORTAREA的命中率:Oracle9iStorage存储参数计算数据字典表空间磁盘空间分配参数计算(INITIALNEXT)Oracle9i数据库参数动态统计用UTLBSTAT/UTLESTAT动态统计数据库参数按以下步骤完成数据库参数动态统计:修改参数文件:设置:timed_statistics=true重启数据库在统计时间段运行:SQL@/home/app/oracle/product/9.0.1/rdbms/admin/utlbstat.sqlSQL@/home/app/oracle/product/9.0.1/rdbms/admin/utlestat.sql产生文件:/home/app/oracle/product/9.0.1/report.txt(Unix)分析文件report.txtUndo空间监控与调整Oracle9iUndo表空间数据字典V$UNDOSTAT记录了每10分钟内产生一行信息,说明上一个10分钟内的Undo信息总和。数据库管理员不需要立刻查询Undo信息,在过一段时间后,只需了解一下Undo信息即可。UNDO_RETENTION在事务提交后,回退段中的空间因为用于存储更新的事务数据而丢失。但是,为了保证数据的一致性,对于长时间运行的查询语句,可能需要旧的Undo信息。参数UNDO_RETENTION表示Undo信息保存的时间(秒),缺省值为900秒。数据字典V$UNDOSTAT可以查询实例中最长的查询语句的执行时间。Oracle9i自动Undo空间调整结果表示过去一小时内的日志信息。只有最后的20分钟使用的Undo空间,在13:57-14:07这一段时间内共有34个事务,使用了488个Undo块。从14:07开始共有7个事务,使用了1883可Undo块,无空间错误问题。如果产生了空间错误,则参数NOSPACEERRCNT会增加,这时数据库管理员需要扩大Undo表空间的大小。最长的查询语句运行了738秒,如果要使查询不产生错误,则必须将参数UNDO_RETENTION至少设置为750。如果该参数设置的值过大,则Undo空间中消耗的空间也随之加大。