
Internal
事后诸葛亮
深入浅出!
展开
-
Oracle内存全面分析(3)
1.1.3.3. Buffer Cache的重要视图关于Buffer Cache,oracle提供一些重要视图,用于查询关于Buffer Cache的重要信息,为调整Buffer Cache、提高性能提供参考。下面一一介绍它们· v$db_cache_advice上面我们提到了Oracle的建议器,其中有一个针对Buffer Cache的建议器。在我转载 2013-11-28 16:05:16 · 864 阅读 · 0 评论 -
v$latch和v$latch_children简介!
Latch 是一种低级串行锁机制,用来保护内存结构。Latch 机制会通过对内存位的置0或置1来持有或者释放Latch。v$latch 展现的是统计信息的汇总,v$latch_children 展现的是统计信息的明细。之所以这样设计,是因为Latch在本质上是串行的,为了提高并发性,Oracle将很多内存结构进行分隔、拆分,通过多个子Latch来分别守护不同的内存区域,从而提升了性能。在数原创 2011-12-26 15:56:54 · 4159 阅读 · 0 评论 -
高速缓存区(buffer cache)
1、高速缓存区结构oracle为了将物理I/O最小化,把最近使用过的块数据保管在内存的一定区域。这部分内存区域就是高速缓存区。高速缓存区与共享池、重做缓存区成为SGA的最重要的内存区域。利用下面的命令可了解当前实例的高速缓存区大小。SQL> show sgaTotal System Global Area 9620525056 bytesFixed Size 2215原创 2012-09-10 18:07:42 · 3540 阅读 · 0 评论 -
共享池( shared pool)
1、共享次(shared pool)共享池是组成SGA的重要结构中的一个。可以通过以下命令确认SGA结构。SQL> show sga;Total System Global Area 9620525056 bytesFixed Size 2215704 bytes --固定区域Variable Size 8522825960 bytes --可变区原创 2012-09-20 14:58:03 · 3667 阅读 · 0 评论 -
Oracle内存全面分析(10)
2.4. Oracle在windows下的内存管理 2.4.1. Windows内存系统概述Windows NT使用一个以页为基础的虚拟内存系统,该系统使用32位线性地址。在内部,系统管理被称为页的4096字节段中的所有内存。每页的物理内存都被备份。 对于临时的内存页使用页文件(pagefile),而对于只读的内存页,则使用磁盘文件。在同一时刻,最多可以有16个转载 2013-11-28 16:11:47 · 846 阅读 · 0 评论 -
Oracle内存全面分析(8)
2. Oracle的内存管理在这部分章节中,我们将从更底层的角度来了解Oracle的内存管理。当然,涉及到内存管理,就不可避免的要了解OS对内存的管理,在这以章节中,将谈到不少关于OS内存的管理知识。如果概念记得不清除了,可以找一本《操作系统》的书看看先。 2.1. Oracle内存管理基础要了解内存管理,首先需要知道虚拟内存。而要了解虚拟内存,就先要知道转载 2013-11-28 16:10:22 · 735 阅读 · 0 评论 -
Oracle内存全面分析(12)
4. Dump内存解析下面以shared pool为例,解释一下dump出来的内存结构。SQL> conn sys/sys as sysdbaConnected.SQL> oradebug setmypidStatement processed.SQL> oradebug dump heapdump 2Statement processed.SQL>转载 2013-11-28 16:13:44 · 884 阅读 · 0 评论 -
Oracle内存全面分析(11)
3. 内存错误处理Oracle中最常见的内存错误就是4030和4031错误。这两个错误分别是在分配PGA和SGA时,没有足够内存分配导致的。经过我们以上对Oracle内存的了解以及对内存管理机制的浅析,可以总结在这两种错误发生时,我们该如何分析和处理。3.1. 分析、定位ORA-40304030错误是由于oracle进程在内存扩展时,无法从OS获取到所需的内存转载 2013-11-28 16:13:14 · 743 阅读 · 0 评论 -
Oracle内存全面分析(9)
2.2. Oracle的内存的分配、回收Oracle中的共享内存区的分配都是以chunk为最小单位的。Chunk不是一个固定值,它是一个扩展段(extent)中一块连续的内存。而Oracle的内存(其他存储,如磁盘也是)的增长是以扩展段为基础的。2.2.1. 空闲列表和LRU链表空闲的chunk按照大小来组织在相应的空闲列表(Free List)中。而未pin转载 2013-11-28 16:11:10 · 806 阅读 · 0 评论 -
Oracle内存全面分析(7)
1.3. UGA (The User Global Area)PGA是一段包含一个Oracle服务或后台进程的数据和控制信息的内存。PGA的大小依赖与系统的配置。在专用服务(Dedicated Server)模式下,一个服务进程与一个用户进程相关,PGA就包括了堆空间和UGA。而UGA(User Global Area 用户全局区)由用户会话数据、游标状态和索引区组成。在转载 2013-11-28 16:09:32 · 665 阅读 · 0 评论 -
Oracle内存全面分析(2)
1.1.2. 关于SGA的重要视图要了解和观察SGA的使用情况,并且根据统计数据来处理问题和调整性能,主要有以下的几个系统视图。· v$sga这个视图包括了SGA的的总体情况,只包含两个字段:name(SGA内存区名字)和value(内存区的值,单位为字节)。它的结果和show sga的结果一致,显示了SGA各个区的大小:SQL> select * from v$转载 2013-11-28 10:38:13 · 766 阅读 · 0 评论 -
Oracle内存全面分析(6)
1.2. PGA (The Process Global Area)PGA(Program Global Area程序全局区)是一块包含一个服务进程的数据和控制信息的内存区域。它是Oracle在一个服务进程启动是创建的,是非共享的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中的Oracle代码才能读写它。因此,PG转载 2013-11-28 16:08:50 · 730 阅读 · 0 评论 -
Oracle内存全面分析(5)
1.1.4.7. 共享池的重要视图最后,我们再介绍关于共享池的一些重要视图· v$shared_pool_advice这个视图与Oracle的另外一个优化建议器——共享池建议器——相关。我们可以根据这个视图里面oracle所做的预测数据来调整共享池大小。它的预测范围是从当前值的10%到200%之间。视图的结构如下字段数转载 2013-11-28 16:07:47 · 845 阅读 · 0 评论 -
Oracle内存全面分析(1)
Oracle的内存配置与oracle性能息息相关。而且关于内存的错误(如4030、4031错误)都是十分令人头疼的问题。可以说,关于内存的配置,是最影响Oracle性能的配置。内存还直接影响到其他两个重要资源的消耗:CPU和IO。 首先,看看Oracle内存存储的主要内容是什么:程序代码(PLSQL、Java);关于已经连接的会话的信息,包括当前所有活动和非活动会话;程序运行时必须转载 2013-11-28 10:35:22 · 712 阅读 · 0 评论 -
Oracle内存全面分析(4)
1.1.4.2. 字典缓存(Dictionary Cache) 数据字典是有关于数据库的参考信息、数据库的结构信息和数据库中的用户信息的一组表和视图的集合,如我们常用到的V$视图、DBA_视图都属于数据字典。在SQL语句解析的过程中,Oracle可以非常迅速的访问(如果需要的话)这些数据字典,在SQL Trace中,这种对数据字典的访问就被统计为回调(recursiv转载 2013-11-28 16:06:49 · 670 阅读 · 0 评论 -
Enqueue (队列等待)
Enqueue (队列等待):Enqueue是一种保护共享资源的锁定机制。该锁定机制保护共享资源,以避免因并发操作而损坏数据,比如通过锁定保护一行记录,避免多个用户同时更新。Enqueue采用排队机制,即FIFO(先进先出)来控制资源的使用。在Oracle 10g之前,Enqueue事件是一组锁定事件的集合,如果数据库中这个等待事件比较显著,我们还需要进一步来追踪是哪个类别的锁定引发了数据原创 2013-11-29 15:55:57 · 2260 阅读 · 0 评论