Oracle分配内存的基本单位:Granule(粒度)

在9i后,SGA的内部组件大小可以动态调整,也可以由数据库自动管理,在设置内存大小的时候,分配的基本单位是粒度(granule)

  • granule是一段连续的虚拟内存,大小区域决SGA_MAX_SIZE大小
  • SGA_MAX_SIZE小于128M,Granule为4M,否则Granule为16M
  • 每个内存组件分配大小必须为Granule的整数倍
  • 整个SGA最小不小于3个Granule大小
  • 查看granule大小:v$sgainfo
  • 如下,因为sga_max_size大小大于128M,所以granule大小为16M

SQL> select name,bytes/1024/1024 MB,resizeable from v$sgainfo;

NAME                                     MB RES

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

Fixed SGA Size                   2.14937592 No

Redo Buffers                       6.765625 No

Buffer Cache Size                       608 Yes

Shared Pool Size                        272 Yes

Large Pool Size                          32 Yes

Java Pool Size                           16 Yes

Streams Pool Size                         0 Yes

Shared IO Pool Size                       0 Yes

Granule Size                             16 No

Maximum SGA Size                 1576.91797 No

Startup overhead in Shared Pool   189.55072 No

Free SGA Memory Available               640

12 rows selected.

SQL> show parameter sga_max_size

NAME                                 TYPE        VALUE

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

sga_max_size                         big integer 1584M

再看如下例子:

虽然设置shared_pool_size大小为10M,但是查看是确实16M,那是因为分配内存的基本单位是粒度granule.每个内存组件分配大小必须为granule的整数倍.

SQL> show parameter shared_p;

NAME                                 TYPE        VALUE

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

shared_pool_reserved_size            big integer 10066329

shared_pool_size                     big integer 0

SQL> alter system set shared_pool_size=10M;

System altered.

SQL> show parameter shared_p;

NAME                                 TYPE        VALUE

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

shared_pool_reserved_size            big integer 10066329

shared_pool_size                     big integer 16M

时间: 2024-10-22 21:54:11

Oracle分配内存的基本单位:Granule(粒度)的相关文章

oracle整体结构-内存结构、物理结构、逻辑结构、进程

Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库). Instance(实例) :在Oracle Instance中主要包含了SGA以及一些进程(例如:PMON.SMON.DBWn.LGWR.CKPT等).如果一个用户的进程连接到Oracle Server时,其实就是连接到Oracle Instance.在SGA中又包含了5大部件:Share Pool.Database Buffer Cache.Redo Log Buffer.Java Pool.Lar

分配内存(Linux设备驱动程序)

分配内存 介绍设备驱动程序中使用内存的方法: 如何最好地利用系统内存资源. kmalloc函数 kmalloc内存分配引擎是一个功能强大的工具. #include <linux/slab.h> void *kmalloc(size_t size, int flags); 参数分配表示flags能够以多种方式控制kmalloc的行为. 标志GFP_KERNEL表示内存分配是代表运行在内核空间的进程执行的,这意味着调用它的函数正代表 某个进程执行系统调用. 使用GFP_KERNEL允许kmallo

oracle的内存管理(之一)

[深入解析oracle-eygle]学习笔记 1.内存管理 ORACLE数据库所使用的内存主要涉及到两个方面:PGA和SGA. 1.1 PGA管理 PGA指的是程序全局区(Program Global Area),是服务器进程(Server Process)使用的一块包含数据和控制信息的内存区域,PGA是非共享的内存,在服务器进程启动或创建时分配(在系统运行时,排序.连接风操作也可能需要进一步的PGA分配),并为Server Process排他访问,所以PGA中的数据结构并不需要通过latch来

ART运行时Compacting GC为新创建对象分配内存的过程分析

在引进Compacting GC后,ART运行时优化了堆内存分配过程.最显著特点是为每个ART运行时线程增加局部分配缓冲区(Thead Local Allocation Buffer)和在OOM前进行一次同构空间压缩(Homogeneous Space Compact).前者可提高堆内存分配效率,后者可解决内存碎片问题.本文就对ART运行时引进Compacting GC后的堆内存分配过程进行分析. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 从接口层面

Oracle实例内存(SGA和PGA)调整

一.名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区).  共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息. (3)缓冲

oracle 初探内存结构

数据库的存储机构 分为 逻辑存储结构 和 物理存储结构 逻辑存储结构: 数据库.表空间.段.区.块         物理存储结构: 数据库.控制文件.数据文件.初始化参数文件.OS块等. 一个区只能在一个数据文件中,一个段中的各个区可以分别在多个数据文件中.组成区的块是连续的.         SGA (SYSTEM Global Area )系统全局区 [buffer cache]数据高速缓存是(由初始化参数DB_CACHE_SIZE指定大小.工作原理和过程是 LRU(最近最少使用 Least

ORACLE 11G内存管理方式

SGA包含的组件: 组件名 说明 参数 buffer cache 存放从数据文件中读取的数据拷贝,所有用户之间是可以共享的 db_cache_size db_keep_cache_size db_recycle_cache_size db_nk_cache_size redo log buffer redo数据 log_buffer shared pool 存放库缓存和数据字典缓存,结果缓存,并行执行消息缓存,以及控制结构信息 shared_pool_size shared_pool_reser

【转载】Oracle之内存结构(SGA、PGA)

[转自]http://blog.itpub.net/25264937/viewspace-694917/ 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重

关于Oracle的内存问题

Oracle中内存结构主要包括两大类分别是SGA和PGA,其中SGA代表的是系统全局区,PGA代表程序全局区. Oracle内存主要存储的有执行程序代码(PL/SQL,JAVA):关于已经连接的会话的信息,包括当前所有活动和非活动会话:程序运行时必须的相关信息:例如查询计划:Oracle进程之间共享的信息和相互交流的信息,例如锁:程序运行期间所需要的数据以及存储在外存储上的缓冲信息等. 内存是数据库体系结构中非常重要的一部分,也是影响数据库性能的主要因素之一.在数据库运行时,内存主要用于存储各种