dump buffer cache

1.基础内容:
ALTER SESSION SET EVENTS ‘immediate trace name buffers level n‘;
    n取值意义:
    1 只转储buffer header.
    2 在level 1的基础上再转储数据块头。
    3 在level 2的基础上再转储数据块内容。
    4 转储buffer header和hash chain.
    5 在level 1的基础上再转储数据块头和hash chain.
    6 在level 2的基础上再转储数据块内容和hash chain.
    8 转储buffer header和hash chain以及users/waiters链表。
    9 在level 1的基础上再转储数据块头、hash chain以及users/waiters链表。
    10 在level 2的基础上再转储数据块内容、hash chain以及users/waiters链表

2.刷新buffer cache
    alter system flush buffer_cache;

3.导出数据块的内容
    #确定表所对应的object_id
    select object_id from dba_objects where object_name=‘T01‘;
    object_id
    -------------
    51780

4.将数据读入到buffer cache
    select * from t01;

5.dump出buffer cache
    ALTER SESSION SET EVENTS ‘immediate trace name buffers level 3‘;
    当前的trace 文件位置:
    > oradebug setmypid;.
    > oradebug tracefile_name;

6.通过object_id 在dump文件中寻找表对应的块
    BH (000007FF087EECC8) file#: 1 rdba: 0x0040ed92 (1/60818) class: 1 ba: 000007FF08636000
      set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 0
      dbwrid: 0 obj: 51780 objn: 51780 tsn: 0 afn: 1
      hash: [9bf53d8,feee108] lru: [97e7a88,57f7108]
      ckptq: [NULL] fileq: [NULL] objq: [97e7af8,e3d6dd8]
      st: XCURRENT md: NULL tch: 4
      flags: only_sequential_access
      LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
      buffer tsn: 0 rdba: 0x0040ed92 (1/60818)
      scn: 0x0000.000a213e seq: 0x04 flg: 0x06 tail: 0x213e0604
      frmt: 0x02 chkval: 0xf9a7 type: 0x06=trans data
    Hex dump of block: st=0, typ_found=1    

        .......
    data_block_dump,data header at 0x44d005c
    ===============
    tsiz: 0x1fa0
    hsiz: 0x1a
    pbl: 0x044d005c
    bdba: 0x0040ed92
         76543210
    flag=--------
    ntab=1
    nrow=4
    frre=3
    fsbo=0x1a
    fseo=0x1e42
    avsp=0x1f09
    tosp=0x1f09
    0xe:pti[0]    nrow=4    offs=0
    0x12:pri[0]    offs=0x1eb2
    0x14:pri[1]    offs=0x1ea6
    0x16:pri[2]    offs=0x1e42
    0x18:pri[3]    sfll=-1
    block_row_dump:
    tab 0, row 0, @0x1eb2
    tl: 13 fb: --H-FL-- lb: 0x1  cc: 2
    col  0: [ 2]  c1 02
    col  1: [ 6]  6f 72 61 63 6c 65
    tab 0, row 1, @0x1ea6
    tl: 12 fb: --H-FL-- lb: 0x1  cc: 2
    col  0: [ 2]  c1 02
    col  1: [ 5]  6d 79 73 71 6c
    tab 0, row 2, @0x1e42
    tl: 100 fb: --H-FL-- lb: 0x1  cc: 2
    col  0: [ 2]  c1 02
    col  1: [93]
     6d 79 73 71 6c 6f 72 61 63 6c 65 6d 79 73 71 6c 6f 72 61 63 6c 65 6d 79 73
     71 6c 6f 72 61 63 6c 65 6d 79 73 71 6c 6f 72 61 63 6c 65 6d 79 73 71 6c 6f
     72 61 63 6c 65 6d 79 73 71 6c 6f 72 61 63 6c 65 6d 79 73 71 6c 6f 72 61 63
     6c 65 6d 79 73 71 6c 6f 72 61 63 6c 65 6d 79 73 71 6c

相关字段简要说明:
|-------obj:51780 表示object_id
|
|-------class表示该buffer header所对应的数据块的类型,具体的值与含义的对应为:
|    1=data block;
|    2=sort block;
|    3=save undo block;
|    4=segment header;
|    5=save undo header;
|    6=free list;
|    7=extent map;
|    8=1st level bmb;
|    9=2nd level bmb;
|    10=3rd level bmb;
|    11=bitmap block;
|    12=bitmap index block;
|    13=unused;
|    14=undo header;
|    15=undo block。
|
|-------rdba: 0x0040ed92 (1/60818)表示该对象所对应的数据块在磁盘数据文件上的地址为 1号文件,60818块
|    #确定表所在文件及数据块
|    select
|        rowid,
|        dbms_rowid.rowid_relative_fno(rowid) REL_FNO,--File id
|        dbms_rowid.rowid_block_number(rowid) BLOCK_NO,--Block number
|        dbms_rowid.rowid_row_number(rowid)   ROW_NO,
|        id
|    from t01;
|
|    ROWID                 REL_FNO   BLOCK_NO     ROW_NO         ID
|    ------------------ ---------- ---------- ---------- ----------
|    AAAMpEAABAAAO2SAAA          1      60818          0          0
|    AAAMpEAABAAAO2SAAB          1      60818          1          1
|    AAAMpEAABAAAO2SAAC          1      60818          2          1

参考blog:http://blog.csdn.net/orion61/article/details/8515340

时间: 2024-11-13 08:48:48

dump buffer cache的相关文章

buffer cache 和shared pool 详解(之三,shared pool原理)

[深入解析--eygle] 学习笔记 1.2 shared pool原理 Shared Pool是Oracle SGA设置中最复杂也是最重要的一部分内容,Oracle通过Shared Pool来实现SQL共享.减少代码硬解析等,从而提高数据库的性能.在某些版本中,如果设置不当,Shared Pool可能会极大影响数据库的正常运行. 在Oracle 7之前,Shared Pool并不存在,每个Oracle连接都有一个独立的Server进程与之相关联,Server进程负责解析和优化所有SQL和PL/

Oracle学习之buffer cache

1.block.buffer的概念 简述段区块的概念,引出块的概念 buffer的概念2.buffer cache的意义 减少IO 物理IO:磁盘读 逻辑IO:内存读 构造cr块:以后讲 undo引出来:回滚未提交数据:构造cr块 只要未提交,就可以回滚 只要未提交,别的会话就看不见修改3.buffer cache的内存组织结构 CBC:cache buffer chain 根据block地址找block的时候,需要使用到CBC chain LRU:最近最少使用 LRU.MRU LRUW 4.D

Page Cache buffer Cache

https://www.thomas-krenn.com/en/wiki/Linux_Page_Cache_Basics References Jump up ↑ The Buffer Cache (Section 15.3) page 348, Linux-Kernel Manual: Guidelines for the Design and Implementation of Kernel 2.6, Robert Love, Addison-Wesley, 2005 Jump up ↑ L

Linux中的Buffer Cache和Page Cache

http://wenku.baidu.com/view/dd677d2fcfc789eb172dc868.html http://bbs.chinaunix.net/thread-3759086-1-1.html http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4189715&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline 了解下

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

Oracle 学习之--Buffer Cache深入解析 服务器进程和数据库缓冲区高速缓存: 当服务器需要块时,需要按系列步骤读取块: 1.首先,服务器使用散列函数检查是否可以从缓冲区高速缓存中获得所需要的块.如果找到缓冲区,则将它移动到LRU列表中远离LRU末尾的另一端.这是逻辑读取,因为没有发生实际的I/O.如果在缓冲区高速缓存中找不到缓冲区,则服务器进程(Server)必须从数据文件中读取.

内存列式存储 vs Buffer Cache

Oracle DB 12c的In-Memory选项(DBIM)将表中列的所有行的数据载入内存,为何不能像Buffer Cache那样只把频繁访问的数据块置入内存中呢? 内存列式存储和Buffer Cache的访问模式 原因是两者支持的访问模式不同,对于Buffer Cache,支持的是OLTP应用,访问模式为non-uniform access patterns,也就是说表中的某些行访问比其它行频繁,因此才能通过只缓存10%的数据,就可以涵盖95%的数据访问.可以假设缓存10%的数据就可以得到2

buffer cache —— buffer busy waits/read by other session

oracle提供非常精确.有效的row level lock机制,多个用户同时修改数据时,为了保护数据,以块为单位挂起锁的情况不会发生.但这不太正确.以块为单位的锁虽然不存在,但正因为oracle I/O以块为单位组成,所以块单位锁是必要的.假设row1.row2两个行位于同一个块内,两名用户(用户1.用户2)各自对row1.row2执行update,逻辑上两个被更新行之间不存在需要相互保护的数据.因为oracle提供row level lock机制,所以修改互相不用的行完全不成问题.但是若两个

[转载]Buffer cache的调整与优化

Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件.下面将具体描述Buffer Cache的作用.调整与优化. 一.SGA的所有组件 从动态视图v$sga_dynamic_components获取SGA的相关信息 SELECT component, current_size, min_size FROM v$sga_dynamic_components; COM

调优4(buffer cache 调整)

第四章. buffer cache 调整 1.buffer cache 功能 buffer cache: 用于存放从datafile 里读出的数据块的镜像,并共享这些数据块,采用LRU算法 buffer cache 数据块状态: pending:数据块正在使用,状态未决dirty: 被修改过的块,还未写入到datafilefree: 已经从cache里写入到datafile的块,可以被覆盖 LRU LIST :链接从datafile里读出的块的头部信息,一般用于free 状态的块Checkpoi