Oracle 学习之--Buffer Cache深入解析

简介:

wKioL1PPVxOwPpjTAAL_LJN_ltc591.jpg

服务器进程和数据库缓冲区高速缓存:

   当服务器需要块时,需要按系列步骤读取块:

1、首先,服务器使用散列函数检查是否可以从缓冲区高速缓存中获得所需要的块。如果找到缓冲区,则将它移动到LRU列表中远离LRU末尾的另一端。这是逻辑读取,因为没有发生实际的I/O。如果在缓冲区高速缓存中找不到缓冲区,则服务器进程(Server)必须从数据文件中读取。

2、对数据文件进行读取之前,服务器进程将搜索LRU列表,以获得空闲的缓冲区。所有被服务器进程修改的缓冲区都放在检查点队列中。以便在检查点期间写出到磁盘。

3、如果检查点的大小超出了其阈值,服务器会发出信号通知DBWn刷新数据缓冲区高速缓存中的脏数据缓冲区。如果服务器在搜索阈值内找不到空闲的缓冲区,将发出信号通知DBWn进行刷新。

4、找到空闲缓冲区后,服务器将块从数据文件中读入到数据库缓冲区高速缓存中过的空闲缓冲区。Oracle服务器进程把缓冲区移动到LRU列表中远离LRU末尾的位置。

5、如果对块的读取不一致,服务器会由当前块和回滚段重建块的早期版本。

wKiom1PPWf3QxLHpAAKvpcChYLg906.jpg

DBWn进程和数据库缓冲区高速缓存:

    DBWn将脏数据块写入数据文件,以确保服务器有空闲块,并以此来管理缓冲区高速缓存。DBWn响应实例中不同的事件:

1、Checkpoint Queue Exceeds Threshold:如果服务器进程发现检查点队列的大小超出其阈值,就会发出信号通知DBWn进行刷新。DBWn则将检查点队列中的缓冲区全部写出。

当检查点队列25%满就会触发DBWn的写操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL> desc x$kvit          
  Name                                      Null?    Type
  ----------------------------------------- -------- ----------------------------
  ADDR                                               RAW( 8 )
  INDX                                               NUMBER
  INST_ID                                            NUMBER
  KVITVAL                                            NUMBER
  KVITTAG                                            VARCHAR2( 64 )
  KVITDSC                                            VARCHAR2( 64 )
SQL> col KVITTAG  for  a20
SQL> col KVITDSC  for  a50
SQL> set linesize  120
SQL> select KVITTAG,KVITVAL,KVITDSC,INST_ID  from  x$kvit  where  KVITTAG= 'kcbldq' ;
KVITTAG                 KVITVAL KVITDSC                                               INST_ID
-------------------- ---------- -------------------------------------------------- ------
kcbldq                        25  large dirty queue  if  kcbclw reaches  this              1

2、Search Threshold Exceeded:如果在搜索阈值范围内,服务器进程在LRU列表中找不到空闲缓存区,就会发出信号通知DBWn刷新检查点队列。DBWn则直接将检查点队列中的脏数据缓冲区全部写出。


1
2
3
4
SQL> select KVITTAG,KVITVAL,KVITDSC,INST_ID  from  x$kvit  where  KVITTAG= 'kcbfsp' ;
KVITTAG                 KVITVAL KVITDSC                                             INST_ID
-------------------- ---------- -------------------------------------------------- ------
kcbfsp                        40  Max percentage of LRU list foreground can scan  for       1

3、LGWR Singals a Checkpoint:当LGWR发出信号,指示检查点已经发生时,DBWn将脏数据缓冲区从检查点写入到磁盘上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
SQL> select *  from  v$log;
     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
          5           1         952    10485760           2  YES INACTIVE                1360633  23 -JUL -14
          6           1         953    10485760           2  NO  CURRENT                 1360669  23 -JUL -14
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> select *  from  v$log;
     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
          5           1         954    10485760           2  YES INACTIVE                1360952  23 -JUL -14
          6           1         955    10485760           2  NO  CURRENT                 1360962  23 -JUL -14
日志:
Completed checkpoint up to RBA [ 0x3b9. 2.10 ], SCN:  1360669
Wed Jul  23  15 : 08 : 08  2014
Beginning log switch checkpoint up to RBA [ 0x3ba. 2.10 ], SCN:  1360952
Thread  1  advanced to log sequence  954
   Current log#  5  seq#  954  mem#  0 : +DG1/prod/onlinelog/group_5 .263.848858213
   Current log#  5  seq#  954  mem#  1 : +RCY1/prod/onlinelog/group_5 .256.848858217
Wed Jul  23  15 : 08 : 25  2014
Thread  1  cannot allocate  new  log, sequence  955
Checkpoint  not  complete
   Current log#  5  seq#  954  mem#  0 : +DG1/prod/onlinelog/group_5 .263.848858213
   Current log#  5  seq#  954  mem#  1 : +RCY1/prod/onlinelog/group_5 .256.848858217
Wed Jul  23  15 : 08 : 33  2014
Completed checkpoint up to RBA [ 0x3ba. 2.10 ], SCN:  1360952
Wed Jul  23  15 : 08 : 34  2014
Beginning log switch checkpoint up to RBA [ 0x3bb. 2.10 ], SCN:  1360962
Thread  1  advanced to log sequence  955
   Current log#  6  seq#  955  mem#  0 : +DG1/prod/onlinelog/group_6 .264.848858253
   Current log#  6  seq#  955  mem#  1 : +RCY1/prod/onlinelog/group_6 .257.848858259
Wed Jul  23  15 : 08 : 36  2014
Completed checkpoint up to RBA [ 0x3bb. 2.10 ], SCN:  1360962

4、Alter Tablespace offline Temporary or Alter Tablespace Begin Backup:如果表空间被临时脱机更改,或者启动了他的联机备份,则DBWn会将表空间的脏数据缓冲区从检查点队列写出到磁盘上。

5、Drop Object:删除某个对象后,DBWn会首先将该对象脏数据缓冲区刷新到磁盘上。

6、Clean Shutdown:(正常、立即或事务处理)










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1445105,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
JSON JavaScript Go
Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
掌握 Go 语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解 Go 基础知识的好起点是查阅 Go 官方文档
484 2
|
4月前
|
数据处理 Python
Python学习:迭代器与生成器的深入解析
Python学习:迭代器与生成器的深入解析
23 0
|
2天前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
9天前
|
Oracle 关系型数据库 数据库
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
|
9天前
|
存储 Oracle 网络协议
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
|
5月前
|
域名解析 缓存 网络协议
dpdk课程学习之练习笔记四(dns预备)
dpdk课程学习之练习笔记四(dns预备)
33 0
|
2月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
72 0
|
2月前
|
缓存 Oracle 关系型数据库
oracle 软软解析
oracle 软软解析
14 0
|
5月前
|
存储 算法
【数据结构-零基础学习】线索二叉树(代码+图示+解析)
【数据结构-零基础学习】线索二叉树(代码+图示+解析)
50 0
|
3天前
|
缓存 Java 开发者
10个点介绍SpringBoot3工作流程与核心组件源码解析
Spring Boot 是Java开发中100%会使用到的框架,开发者不仅要熟练使用,对其中的核心源码也要了解,正所谓知其然知其所以然,V 哥建议小伙伴们在学习的过程中,一定要去研读一下源码,这有助于你在开发中游刃有余。欢迎一起交流学习心得,一起成长。

推荐镜像

更多