- 浏览: 1105691 次
- 性别:
- 来自: 南京
-
博客专栏
-
-
Oracle管理和开发
浏览量:355179
最新评论
-
Simon.Ezer:
请问对于“如果非主键字段值发生改变,则不会同步过去”这种情况, ...
创建增量同步Oracle物化视图问题 -
dahai639:
挺好的,支持一下
Oracle的pipelined函数实现高性能大数据处理 -
zealotpz:
不错,原来是用户oracle 的所属组的问题
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 -
mikixiyou:
zhangyuslam 写道如果担心全局索引失效,可以使用如下 ...
Oracle分区表的分区交互技术实现数据快速转移 -
sea0108:
...
Oracle sql loader使用速成
分析对象Oracle 10.2.0.4 64bit for linux。先声明一下,分析过程和结论都是个人理解,不一定是正确的。
如果有疑问和建议,欢迎一起讨论学习。
SGA 包含fixed sga 、buffer pool(db cache) 、shared pool 、large pool 、java pool 、streams 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 sga 和redo 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 directory 、Heap headers 。
最后一个 "granule" 包含Guard pages 、Redo buffer 、Operating system specific overhead 、Remaining space unused 。
(这是juliandyke.com 上的结论,摘录于此,未证实。)
在X$KSMGE 中可以查到sga 的granule 的组成,但结果数比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 header 和chunk body 一一对应。chunk 的类型分为permanent 、recreatable 、freeable 、free 等等。
每个extent 占用一个granule 。但是,dump 出来的结果显示extent 大小不固定,不一定是一个granul 。
每一个heap 的heap header ,包含used chunks 的list 和free chunks 的list 。
free chunks list 是一个hash table ,由255 个bucket 组成。每一个bucket 中存一个double linked list ,指向free chunk 。
隐含参数'_kghdsidx_count' 的值为2 ,SGA_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_target 为0 时该参数为false ;
同时在10.2.0.5 前若cursor_space_for_time 设置为true 时该参数也为false ,不过在10.2.0.5 以后cursor_space_for_time 参数被废弃
总而言之,SGA 的内存物理结构是以granule 为组成单元,以heap 为分区的。SGA 中的buffer cache 、shared pool 、large pool 等都是按照 heap manager 来配置的。
发表评论
-
Oracle分区表的分区交互技术实现数据快速转移
2013-01-22 11:48 14884有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33336在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 13013UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3858在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8744这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5324在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢 ... -
db block gets和consistent gets的分析
2012-12-26 18:09 0在Oracle的文档中有这样一段解释: db block g ... -
创建增量同步Oracle物化视图问题
2012-12-25 14:07 15387我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10823在O racle数据库中,通过v$archived_lo ... -
如何删掉临时表空间的文件
2012-12-18 15:40 0Unlike Oracle datafiles which m ... -
Oracle sql性能诊断暨event 10046和10053使用
2012-12-17 10:24 0早上em grid control监控显示数据库的负载增加,其 ... -
查LOB字段占用的空间大小
2012-12-13 16:00 4621查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4105这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 5035Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4433Oracle的监听器服务注册 ... -
Deleting archivelog on physical standby with RMAN in Oracle 10g
2012-11-28 13:25 0Turns out to be quite easy ... -
to_char将number转成string的小技巧
2012-11-27 14:14 10674很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29362(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1956Oracle的data guard创建完成 ...
相关推荐
《Exploring Oracle Internals》一书深入探讨了Oracle数据库的内部工作原理和技术细节,对于希望深入了解Oracle数据库结构、功能以及如何进行有效管理的专业人士来说是一本宝贵的资源。本书不仅提供了理论上的解释,...
《Oracle Core Essential Internals for DBAs and Developers》是针对数据库管理员(DBAs)和开发者的一本深入解析Oracle核心内部机制的重要参考资料。这本书旨在帮助读者理解Oracle数据库系统的基础架构、工作原理...
《Oracle Core Essential Internals for DBAs and Developers》是一本针对数据库管理员(DBAs)和开发人员深入理解Oracle核心原理的重要参考资料。这本书详细介绍了Oracle数据库系统的内部工作机制,帮助读者提升在...
《Oracle Core: Essential Internals for DBA》是Jonathan Lewis撰写的一本深入介绍Oracle数据库内部工作原理的专业书籍。此书被广大数据库管理员(DBA)视为研究和掌握Oracle内部机制不可或缺的资源。 首先,从...
本文档由 David Gornshtein 和 Boris Tamarkin 编写,旨在深入探讨 Oracle Latch 的内部机制及其在系统全局区 (SGA) 中的作用。虽然这是一份非 Oracle 官方文档,但对于理解 Latch 的工作原理仍然具有很高的参考价值...
在Oracle 10.2及更高版本中,Library Cache的大小直接影响内存分配,其大小可以通过两种方式设定:如果启用了自动内存管理(Automatic Memory Management),并且指定了SGA_TARGET,那么如果也指定了SHARED_POOL_...
实例调优关注的是整个数据库实例的性能,包括内存管理、后台进程、PGA和SGA的配置等。而性能调优策略则可能涵盖长期的性能优化规划和方法,以保持数据库的高效运行。 7. **DSI405e - Performance Tuning Strategy*...