当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle Tuning技巧总结

Oracle
Oracle数据库集复制方法浅议
Oracle 数据表分区的策略
Oracle收购TimesTen 提高数据库软件性能
Oracle中大批量删除数据的方法
一个oracle指令的好网站
ORACLE数据库空间整理心得
如何Shrink Undo表空间,释放过度占用的空间
Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
收集的ORACLE函数大全
PL/SQL Number数字类型函数
PL/SQL 日期时间类型函数及运算
PL/SQL 类型格式转换
Oracle关于时间/日期的操作
PL/SQL数据类型及操作符
PL/SQL number型数据
ORACLE 常用的SQL语法和数据对象
如何保持Oracle数据库的优良性能
Oracle轻松取得建表和索引的DDL语句
重新编译PLSQL中的无效对象或者指定的对象 的方法
在OracleE数据库的字段上建立索引的方法

Oracle Tuning技巧总结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 59 ::
收藏到网摘: n/a

    关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的优化,就可以使一套完整的Oracle应用系统处于良好的运行状态。
本文主要是把一些Oracle Tuning的文章作了一个简单的总结,力求以实际可操作为目的,配合讲解部分理论知识,使大部分具有一般Oracle知识的使用者能够对Oracle Tuning有所了解,并且能够根据实际情况对某些参数进行调整。关于更加详细的知识,请参见本文结束部分所提及的推荐书籍,同时由于该话题内容太多且复杂,本文必定有失之偏颇甚至错误的地方,请不吝赐教,并共同进步。

1. SGA的设置 
    在Oracle Tuning中,对SGA的设置是关键。SGA,是指Shared Global Area , 或者是 System Global Area , 称为共享全局区或者系统全局区,结构如下图所示。 

    对于SGA区域内的内存来说,是共享的、全局的,在UNIX 上,必须为oracle 设置共享内存段(可以是一个或者多个),因为oracle 在UNIX上是多进程;而在WINDOWS上oracle是单进程(多个线程),所以不用设置共享内存段。

1.1 SGA的各个组成部分 
    下面用 sqlplus 查询举例看一下 SGA 各个组成部分的情况:
SQL> select * from v$sga;NAME VALUE-------------------- ---------- Fixed Size 104936Variable Size 823164928Database Buffers 1073741824Redo Buffers 172032


或者
SQL> show sga
Total System Global Area 1897183720 bytes
Fixed Size 104936 bytes
Variable Size 823164928 bytes
Database Buffers 1073741824 bytes
Redo Buffers 172032 bytes

Fixed Size 
    oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA 各部分组件的信息,可以看作引导建立SGA的区域。

Variable Size 
    包含了shared_pool_size、java_pool_size、large_pool_size 等内存设置

Database Buffers 
    指数据缓冲区,在8i 中包含db_block_buffer*db_block_size、buffer_pool_keep、buffer_pool_recycle 三部分内存。在9i 中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、 db_nk_cache_size。

Redo Buffers 
    指日志缓冲区,log_buffer。在这里要额外说明一点的是,对于v$parameter、v$sgastat、v$sga查询值可能不一样。v$ parameter 里面的值,是指用户在初始化参数文件里面设置的值,v$sgastat是oracle 实际分配的日志缓冲区大小(因为缓冲区的分配值实际上是离散的,也不是以block 为最小单位进行分配的),v$sga 里面查询的值,是在oracle 分配了日志缓冲区后,为了保护日志缓冲区,设置了一些保护页,通常我们会发现保护页大小是8k(不同环境可能不一样)。参考如下内容