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

Oracle
浅谈Oracle数据库SCN号
浅谈DBMS_SCHEDULER如何使用
数据丢失 Oracle闪回
Oracle教程:完全备份的SH文件
Oracle服务器参数文件管理技巧
Oracle认证:向视图中插入数据的方法
Oracle教程:Oracle基础知识整理
使用Java和oracle实现BLOB字段的字符串读取
Oralce 9i安装OID目录服务器说明
Oracle 11gR2重要的4个新特性说明
OpenCalais:为Oracle数据库添加语义元数据为Oracle数据库添加语义元数据
phpBB 3.0.6 RC1简单介绍和下载
Oracle:oracle的体系结构,你了解多少?
怎样才能限制SQL Server只能让指定的机器连接
有关Oracle数据库的备份情况
ORACLE8的分区管理
常见数据库系统之比较 - Oracle数据库
在ORACLE中移动数据库文件
ORACLE常见错误代码的分析与解决(三)
Oracle中如何直接运行OS命令(上)

Oracle Tuning技巧总结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 50 ::
收藏到网摘: 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(不同环境可能不一样)。参考如下内容