`
mikixiyou
  • 浏览: 1105691 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:355179
社区版块
存档分类
最新评论

Oracle SGA internals 猜

阅读更多

分析对象Oracle 10.2.0.4 64bit for linux。先声明一下,分析过程和结论都是个人理解,不一定是正确的。


如果有疑问和建议,欢迎一起讨论学习。


SGA 包含fixed sgabuffer pool(db cache)shared poollarge pooljava poolstreams pool  redo buffers


SGA 中的pool 由多个granule 组成。每个granule 的大小和SGA_MAX_SIZE 的值相关。在Oracle 10.2上,若SGA_MAX_SIZE<=1024MB ,则granule 的值为4MB ;若SGA_MAX_SIZE>1024MB ,则granule 的值为16MB


(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1660044 )


SGA 中的fixed sgaredo buffers 区域是独立分配的,其实它们也存在于某个granule 中。

查询v$sga 视图,显示sga 中的各个部分大小。

SQL> select name,value,to_char(value,'xxxxxxxxxxxxxx') value_hex from v$sga;

 

NAME                       VALUE VALUE_HEX

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

Fixed Size               1220432           129f50

Variable Size          335544496         140000b0

Database Buffers      1795162112         6b000000

Redo Buffers            15556608           ed6000















 

 

再查询v$sgainfo 中,显示更具体的pool 的大小和granule 的值。

SQL> select name,bytes/1024/1024/16 as "bytes(16M)" FROM v$sgainfo;

 

NAME                              bytes(16M)

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

Fixed SGA Size                    .072743416

Redo Buffers                      .927246094

Buffer Cache Size                        107

Shared Pool Size                          16

Large Pool Size                            1

Java Pool Size                             2

Streams Pool Size                          1

Granule Size                               1

Maximum SGA Size                         128

Startup overhead in Shared Pool            5

Free SGA Memory Available                  0















 

 

第一个"granule"  包含Fixed SGA  Granule directoryHeap headers

最后一个  "granule"  包含Guard pagesRedo bufferOperating system specific overheadRemaining space unused

(这是juliandyke.com 上的结论,摘录于此,未证实。)

X$KSMGE 中可以查到sgagranule 的组成,但结果数比sga_max_size 要少一个granule

也可以通过“ALTER SESSION SET EVENTS ‘immediate trace name granulelist level <level>’  ”将granule 的结果dump 出来。

fixed sga area 位于第一个granule 中,它包含的内容如下:

  • Containing all fixed variables
  • Contains pointers to all other structures in SGA
  • Variable name, type, address and size determined when Oracle executable is linked
  • Located at start of first granule of SGA

SGA 分成若干个heap ,根据隐含参数”_kghdsidx_count “来判断heap 的个数。

 

heap heap header 和若干extent 组成。

heap extent extent header 和若干chunk 组成。

chunk chunk headerchunk body 一一对应。chunk 的类型分为permanentrecreatablefreeablefree 等等。

每个extent 占用一个granule 。但是,dump 出来的结果显示extent 大小不固定,不一定是一个granul

每一个heapheap header ,包含used chunkslistfree chunkslist

free chunks list 是一个hash table ,由255bucket 组成。每一个bucket 中存一个double linked list ,指向free chunk

 

隐含参数'_kghdsidx_count' 的值为2SGA_TARGET 也配置了值,所以SGA 中各部分内存是oracle 自动配置的。


SQL> r

   1* select name,value from gv_$parameter t where t.name like '_kghdsidx_count'

 

NAME                  VALUE

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

_kghdsidx_count       2

 

 

SQL> show parameter sga

 

NAME                                  TYPE         VALUE

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

lock_sga                              boolean      FALSE

pre_page_sga                          boolean      FALSE

sga_max_size                          big integer 2G

sga_target                            big integer 2G















 

使用dump heapdump 方法将sga 分一下。

ALTER SESSION SET EVENTS 'immediate trace name heapdump level 2';

SGA heap 有两个,但每个heap 又分成4 个部分。

HEAP DUMP heap name="sga heap"   desc=0x2000002c

HEAP DUMP heap name="sga heap(1,0)"   desc=0x2001a960

FIVE LARGEST SUB HEAPS for heap name="sga heap(1,0)"    desc=0x2001a960

HEAP DUMP heap name="sga heap(1,1)"   desc=0x2001b598

FIVE LARGEST SUB HEAPS for heap name="sga heap(1,1)"    desc=0x2001b598

HEAP DUMP heap name="sga heap(1,2)"   desc=0x2001c1d0

FIVE LARGEST SUB HEAPS for heap name="sga   heap(1,2)"    desc=0x2001c1d0

HEAP DUMP heap name="sga heap(1,3)"   desc=0x2001ce08

FIVE LARGEST SUB HEAPS for heap name="sga heap(1,3)"    desc=0x2001ce08

HEAP DUMP heap name="sga heap(2,0)"   desc=0x2001fa50

FIVE LARGEST SUB HEAPS for heap name="sga heap(2,0)"    desc=0x2001fa50

HEAP DUMP heap name="sga heap(2,1)"   desc=0x20020688

FIVE LARGEST SUB HEAPS for heap name="sga heap(2,1)"    desc=0x20020688

HEAP DUMP heap name="sga heap(2,2)"   desc=0x200212c0

FIVE LARGEST SUB HEAPS for heap name="sga heap(2,2)"    desc=0x200212c0

HEAP DUMP heap name="sga heap(2,3)"   desc=0x20021ef8

FIVE LARGEST SUB HEAPS for heap name="sga heap(2,3)"    desc=0x20021ef8















 

 

参数”_enable_shared_pool_durations” 控制是否启用10g 中特有的shared pool duration 特性,当我们设置sga_target0 时该参数为false

同时在10.2.0.5 前若cursor_space_for_time 设置为true 时该参数也为false ,不过在10.2.0.5 以后cursor_space_for_time 参数被废弃

总而言之,SGA 的内存物理结构是以granule 为组成单元,以heap 为分区的。SGA 中的buffer cacheshared poollarge pool 等都是按照  heap manager 来配置的。

分享到:
评论

相关推荐

    Exploring Oracle Internals

    《Exploring Oracle Internals》一书深入探讨了Oracle数据库的内部工作原理和技术细节,对于希望深入了解Oracle数据库结构、功能以及如何进行有效管理的专业人士来说是一本宝贵的资源。本书不仅提供了理论上的解释,...

    Oracle Core Essential Internals for DBAs and Developers

    《Oracle Core Essential Internals for DBAs and Developers》是针对数据库管理员(DBAs)和开发者的一本深入解析Oracle核心内部机制的重要参考资料。这本书旨在帮助读者理解Oracle数据库系统的基础架构、工作原理...

    oracle core essential internals for dbas and developers

    《Oracle Core Essential Internals for DBAs and Developers》是一本针对数据库管理员(DBAs)和开发人员深入理解Oracle核心原理的重要参考资料。这本书详细介绍了Oracle数据库系统的内部工作机制,帮助读者提升在...

    Oracle Core_ Essential Internals for DBA - Lewis_Jonathan

    《Oracle Core: Essential Internals for DBA》是Jonathan Lewis撰写的一本深入介绍Oracle数据库内部工作原理的专业书籍。此书被广大数据库管理员(DBA)视为研究和掌握Oracle内部机制不可或缺的资源。 首先,从...

    internals_latches(非oracle原厂)

    本文档由 David Gornshtein 和 Boris Tamarkin 编写,旨在深入探讨 Oracle Latch 的内部机制及其在系统全局区 (SGA) 中的作用。虽然这是一份非 Oracle 官方文档,但对于理解 Latch 的工作原理仍然具有很高的参考价值...

    Library Cache Internals

    在Oracle 10.2及更高版本中,Library Cache的大小直接影响内存分配,其大小可以通过两种方式设定:如果启用了自动内存管理(Automatic Memory Management),并且指定了SGA_TARGET,那么如果也指定了SHARED_POOL_...

    oracle dsi(dsi401 dsi402 dsi402e dsi403e dsi404 dsi405 dsi408) 网上下载整理,全部pdf 非ppt

    实例调优关注的是整个数据库实例的性能,包括内存管理、后台进程、PGA和SGA的配置等。而性能调优策略则可能涵盖长期的性能优化规划和方法,以保持数据库的高效运行。 7. **DSI405e - Performance Tuning Strategy*...

Global site tag (gtag.js) - Google Analytics