如何使用events DUMP buffer cache中指定的数据块

介绍了DUMP  buffer cache中全部数据块及指定RDBA的数据块方法。

1.DUMP  buffer cache中全部数据块

ALTER SESSION SET EVENTS ‘immediate trace name buffers level n’;

1 buffer header

2 level 1 + block header

3 level 2 + block contents

4 level 1 + hash chain

5 level 2 + hash chain

6 level 3 + hash chain

8 level 4 + users/waiters

9 level 5 + users/waiters

10 level 6 + users/waiters

###############################

2.DUMP  buffer cache中指定RDBA的数据块方法

BYS@ bys3>select dbms_rowid.rowid_relative_fno(rowid) fileid,dbms_rowid.rowid_object(rowid) obj#,dbms_rowid.rowid_block_number(rowid) block#,deptno from dept;

   FILEID       OBJ#    BLOCK#     DEPTNO

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

       4     22327        251         10

        4      22327        251         20

        4      22327        251         40

        4      22327        251         99

BYS@ bys3>select dbms_utility.make_data_block_address(4,251) from dual;    --使用此函数算出rdba--就是rowid中的rfile#+block#

DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS(4,251)

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

                                  16777467

                                 

BYS@ bys3>alter session set events 'immediate trace name set_tsn_p1 level 5';    --这里的5是表空间号加1得到的。也就是TS#+1。select ts#,name from v$tablespace;

Session altered.

BYS@ bys3>alter session set events 'immediate trace name buffer level16777467';

Session altered.

BYS@ bys3>select value from v$diag_info where name like 'De%';

VALUE

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

/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_21011.trc

###########################

时间: 2024-10-21 21:52:37

如何使用events DUMP buffer cache中指定的数据块的相关文章

揭密Oracle之七种武器之四:揭密Buffer Cache中的链表

有日子没写东西了.又是看房又是讲课,好多朋友问我是不是不写了,怎么会呢,分享知识,也是自我总结的一个过程,对自己的提高也是有帮助的吧. 前段时间,一直有人问我Buffer Cache的链表,LRU.辅助LRU.检查点队列等等.检查点队列已经有很多文章讨论过了,我就不再重复的制造轮子 .  另外,还有主LRU冷热端的相关内容,这一块我也不再详细描述,因为也有相关的文章. 我主要说一下主LRU.辅助LRU和LRUW相关的内容. 本篇文章没有使用DTrace和GDB,难度较低,但实验内容较多.我先将结

如何转储数据文件和Buffer Cache中的数据块

这篇文章是为了补充<Oracle性能优化与诊断案例精选>一书中的案例而写的,但是想想,也许还可以扩展一下,对于刚接触 Oracle 数据库的朋友们,试着回答一下以下几个问题,看看自己能否找到正确的答案: 当我们 insert 一条记录,不提交,这个数据在内存还是磁盘? 当我们 insert 一条记录,提交,这个数据在内存还是磁盘? 当我们 insert 一条记录,不提交,检查点,这个数据在内存还是磁盘? 当我们 insert 一条记录,提交,检查点,这个数据在内存还是磁盘? 先看看我的测试:

buffer cache中的LRU链+

转自晶晶小妹的博客:http://space.itpub.net/13095417/viewspace-204007 一.LRU链介绍HASH是快速查找时,常用的算法.Oracle中几乎在所有需要快速查找的地方,都使用了HASH算法.LRU则是在"资源重用"时,常用的算法.       在Buffer cache中,LRU链被分为两半,分别是热端.冷端,在默认方式下,热.冷端各占50%的块,这点可以由隐藏参数_db_percent_hot_default控制.当块第一次被读进Buffe

超实用--删除MYSQL中指定的数据的全部表

作过的人都知道,重复测试数据库的苦恼. 用法:# Usage: ./script user password dbnane mysql.nixcraft.in ~~~~~~~~~~~~~ #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user password dbnane # Usage: ./script user password dbnane server-ip # Usage: ./script user password dbna

buffer cache实验9:从buffer caceh中读取数据块解析-从逻辑读到物理读

先来张大图: 所用SQL语句: BYS@ ocm1>select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,deptno from bys.test;     FILE#     BLOCK#     DEPTNO ---------- ---------- ----------         4        391         10 就以上图为例,文字描述

buffer cache 深度解析+

本文内容整理自网络:     本文首先详细介绍了oracle中buffer cache的概念以及所包含的内存结构.然后结合各个后台进程(包括DBWRn.CKPT.LGWR等)深入介绍了oracle对于buffer cache的管理机制,并详细解释了oracle为什么会采用现在的管理机制,是为了解决什么问题.比如为何会引入touch次数.为何会引入增量检查点等等.最后全面介绍了有关buffer cache监控以及调优的实用方法. 1. buffer cache的概念   用最简单的语言来描述ora

buffer cache实验3:lru和lruw链表

1.Buffer cache中的LRU链表概念: oracle在hash chain中未搜索到所需要的buffer时,ORACEL 服务进程会发出I/O调用,到磁盘的数据文件中读取相应数据块--除了直接路径读外,此时会将数据块的内容拷贝到buffer cache 内存中--同时会构造一个buffer header. 在将数据块拷贝到buffer cache中时,假如buffer cache是空的,直接拿一个空的内存数据块来用即可. 但是如果buffer cache中的内存数据块全都被用掉了,没有

buffer cache实验1:内存结构图解

1.为什么要使用buffer cache??? buffer cache就是一块含有许多数据块的内存区域,这些数据块主要都是数据文件里的数据块内容的拷贝. 从buffer cache中读取一个数据块一般需要100ns左右,从一般的存储硬盘中读取一个数据块需要10ms:所以大概算一下,从内存中读取数据块比从硬盘中快近十万倍. 故oracle在读取数据块时,先在buffer cache中查找,如存在,则读取--逻辑读:如果数据块不存在,则发生物理读,从物理文件中将数据读入buffer cache(不

oracle Buffer Cache的管理机制

1.LRU链表结构概述 在前面,我们已经知道了Oracle是如何在hash chain中搜索要找的数据块所对应的buffer header的过程,我们也知道如果在hash chain上没有找到所要的buffer header时,Oracle会发出I/O调用,到磁盘上的数据文件中获取数据块,并将该数据块的内容复制一份到buffer cache中的内存数据块里.这个时候,假如buffer cache是空的,比较好办,直接拿一个空的内存数据块来用即可.但是如果buffer cache中的内存数据块全都