Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2119800
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:10:34

    对于oracle的内存的管理,截止到9iR2,都是相当重要的环节,管理不善,将可能给数据库带来严重的性能问题。下面我们将一步一步就内存管理的各个方面进行探讨。

    l       概述

    oracle的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是SGA和PGA(process global area or private global area)。对于SGA区域内的内存来说,是共享的全局的,在UNIX上,必须为oracle设置共享内存段(可以是一个或者多个),因为oracle在UNIX上是多进程;而在WINDOWS上oracle是单进程(多个线程),所以不用设置共享内存段。PGA是属于进程(线程)私有的区域。在oracle使用共享模式下(MTS),PGA中的一部分,也就是UGA会被放入共享内存large_pool_size中。

    对于SGA部分,我们通过sqlplus中查询可以看到:

    SQL> select * from v$sga;

    NAME                      VALUE

--------------------              ----------

Fixed Size                   454032

Variable Size                 109051904

Database Buffers              385875968

Redo Buffers                  667648

Fixed Size

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

    Variable Size

    包含了shared_pool_size、java_pool_size、large_pool_size等内存设置和用于管理数据缓冲区等内存结构的hash table、块头信息(比如x$bh消耗内存)等

    Database Buffers

    指数据缓冲区,在8i中包含default pool、buffer_pool_keep、buffer_pool_recycle三部分内存。在9i中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size。这里要注意在8i中三部分内存总和为db_block_buffers*db_block_size。

    Redo Buffers

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

    SQL>  select substr(name,1,10) name,substr(value,1,10) value

    2  from v$parameter where name = 'log_buffer';

NAME                 VALUE

--------------------     --------------------

log_buffer               524288

SQL> select * from v$sgastat ;

POOL  NAME             BYTES

----------- -------------------

fixed_sga                   454032

buffer_cache                385875968

log_buffer                  656384

SQL> select * from v$sga;

NAME                     VALUE

--------------------              ----------

Fixed Size                  454032

Variable Size                109051904

Database Buffers             385875968

Redo Buffers                667648

    关于各部分内存的作用,参考oracle体系结构,在此不再叙述。

【责编:Amy】

--------------------next---------------------

阅读(211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~