把Oracle内存结构说透[转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3741 | 回复: 0   主题: 把Oracle内存结构说透[转帖]        下一篇 
yun
注册用户
等级:少校
经验:1082
发帖:83
精华:4
注册:2012-12-17
状态:离线
发送短消息息给yun 加好友    发送短消息息给yun 发消息
发表于: IP:您无权察看 2012-12-17 16:55:44 | [全部帖] [楼主帖] 楼主

引言

Oracle Server由两个实体组成:实例(instance)与数据库(database)。

实例(instance)包括:内存结构(SGA、PGA)和用户进程,实例为用户同数据库交互的媒介。

数据库(database)包括:物理结构(数据文件、日志文件、控制文件等)和逻辑结构(表空间、段、区、块、等)

Oracle内存结构与oracle性能息息相关,内存结构是CPU与IO桥梁,内存结构对于数据库来说非常重要。

一、内存结构概述

内存结构主要有:系统全局区(System Global Area简称SGA)和(Process Global Area简称PGA)组成。

系统全局区SGA:当启动实例的时候分配,是一组包含一个Oracle实例的数据和控制信息的共享内存结构。

进程全局区PGA:当Server进程建立时分配,此区域包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反。PGA 是只被一个进程使用的私有区域。PGA 在创建进程时分配,在终止进程时回收。

二、系统全局区SGA

1.SGA由几个内存结构组成

数据高速缓冲区(Database Buffer Cache)

共享池(Shared Pool)

重做日志缓冲区(Redo Log Cache)

其他结构(如锁管理)

附图:

北京联动北方科技有限公司

2.SGA可选内存结构

大池

JAVA池

注:Fixed Sized:Oracle的不同平台和不同版本可能不一样,对于确定环境是一个固定值,里面存储SGA各部分组件信息,引导建立SGA的区域。

Variable Size:包括share_pool_size、java_pool_size、large_pool_size等内存设置和管理数据缓冲区等内存结构的 Hash table、块头信息等。北京联动北方科技有限公司

Datebase Buffers:数据缓冲区,个版本包含的内容不同。

Redo Buffers:重做日志缓冲区的实际大小,和Log_buffer的值稍有不同。

SGA的管理:

      △9i:SGA总大小由初始化参数SGA_MAX_SIZE确定。各个内存组件大小之和不能超过这个参数,在这个大小之下,SGA各个内存组件可以在不重启数据库的情况下直接修改大小,所以叫做SGA的动态管理。

      △10g:SGA大小既可以像9i一样动态管理,也可以实施SGA的自动管理。只需要设置初始化参数SGA_TARGET,SGA各个内存组件就可以由数据库自动设置大小,设置的依据来源于自动收集的统计信息。

      △11g:oracle的内存管理方式可以根据版本向下兼容,oracle 11g中引入了自动内存管理(Automatic Memory Management),仅用两个参数完成oracle的内存管理工作,参数说明:MEMORY_TARGET:oracle所能使用的最大内存,该参数可以动态调整;MEMORY_MAX_TARGET:MEMORY_TARGET参数所能动态设定的最大值,不能动态调整,需要重启数据库。

北京联动北方科技有限公司

①数据高速缓冲区(Database Buffer Cache):数据高速缓冲区存储了从数据文件中检索到的数据块的镜像拷贝。

      △获取和修改数据提高了性能

      △通过LRU算法管理

      △db_block_size决定了主块大小

      △定义缓冲区数取决于db_block_size

②共享池(Shared Pool):存储最近执行过的sql语句和最近使用过的数据定义。在分析阶段,服务器进程使用 SGA 中称作共享池的区域来编译 SQL 语句。

      △包括两个与性能有关的内存结构

     库缓存:存储最近使用的SQL 语句信息。如果重新执行 SQL 语句而且共享 SQL 区域已经包含语句的执行计划,那么服务器进程就不需要分析语句。库高速缓存通过减少分析时间和内存要求来改善重新使用 SQL 语句的应用程序的性能。

     数据字典缓存:数据库中最近使用的定义的集合。它包括有关数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。

      △调整共享池大小(shared_pool_size)

alter  system set  shared_pool_size  =  “X”;


③重做日志缓冲区(Redo Log Cache):缓存对于数据块的所有修改,主要用于恢复其中的每一项修改记录。

      △修改记录叫做重做条目

      △重做条目包含重构和重做修改信息

      △log_buffer定义大小

注:执行DDL或DML语句时,服务器进程首先将事务变化记载到重做日志缓冲区,然后才会修改数据高速缓存。

④大池:一个可选的SGA区域,可以缓解共享池(Shared Pool)负担。PARALLEL_AUTOMATIC_TUNING = TURE,大池的空间是动态的,由系统控制。

      △主要作用:共享服务器的会话区域(UGA),服务器进程I/O,使用RMAN备份恢复,并行查询缓存信息。

      △不使用LRU链表管理

      △指定大小,alter  system  set  large_pool_size = “X”;

      △动态指定大小

查看大池已使用或未使用内存

北京联动北方科技有限公司

注:如果发现未使用内存很大或者不断增加,表示大池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大大池的内存。

⑤java池:可选的SGA区域,属于SGA中的可变区域,Java池的内存用于存储所有会话中特定Java程序代码和JVM中的数据

      △java命令需要分析的环境

      △安装使用java需要

      △由参数JAVA_POOL_SIZE设置。Java池最大可到1 GB,不能动态调整。

查看java已使用或未使用内存

北京联动北方科技有限公司

注:如果发现未使用内存很大或者不断增加,表示JAVA池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大JAVA池的内存。

三、进程全局区(PGA)

进程全局区(PGA):此区域包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反。PGA 是只被一个进程使用的私有区域。PGA 在创建进程时分配,在终止进程时回收。

进程全局区(PGA)包括以下组件:

      △排序区:用于处理 SQL 语句时可能需要的任何排序

      △会话信息:包括用于会话的用户权限和性能统计

      △游标状态:标明处理会话当前使用的 SQL 语句中的阶段

      △游标状态:标明处理会话当前使用的 SQL 语句中的阶段

PGA 在创建进程时分配,在终止进程时回收。

扩展阅读(网络参考资料,以下资料归属网络作者,请注重“版权”)

http://v.youku.com/v_show/id_XMzQ5OTE0OTQ0.html                             sga视频 
http://blog.csdn.net/yujin2010good/article/details/7709120                  oracle体系结构 
http://database.51cto.com/art/201010/231747.htm                             oracle内存结构SGA 
http://blog.csdn.net/robinson_0612/article/details/5534832                  oracle10gSGA自动化管理 
http://soft.chinabyte.com/database/397/12311397.shtml                       oracle体系结构介绍 
http://blog.csdn.net/yujin2010good/article/details/7709120                  oracle体系结构详解 
http://blog.csdn.net/tianlesoftware/article/details/5594080                  oracle内存架构详解 

http://vb118.blog.163.com/blog/static/173933100201142531527355/              oracle sga


本文出自 “骑士-knight” 博客,谢绝转载!




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论