关于dirty buffer

其实大家对v$bh这个视图可能一直重视不够.

我们来看一下这个视图主要字段说明:

STATUS

VARCHAR2(1)

Status of the buffer: FREE - not currently in use XCUR - exclusive SCUR - shared current CR - consistent read READ - being read from disk MREC - in media recovery mode IREC - in instance recovery mode

  • FREE - not currently in use
  • XCUR - exclusive
  • SCUR - shared current
  • CR - consistent read
  • READ - being read from disk
  • MREC - in media recovery mode
  • IREC - in instance recovery mode

?

DIRTY

VARCHAR2(1)

Y - block modified

TEMP

VARCHAR2(1)

Y - temporary block

PING

VARCHAR2(1)

Y - block pinged

STALE

VARCHAR2(1)

Y - block is stale

DIRECT

VARCHAR2(1)

Y - direct block

?

我们注意到v$dirty代表的就是block modified

?

如果我们进一步向下追溯:

SQL> select VIEW_DEFINITION from v$fixed_view_definition where VIEW_NAME = 'GV$BH';

VIEW_DEFINITION -------------------------------------------------------------------------------- select bh.inst_id, file#, dbablk, class, decode(state,0,'free',1,'xcur',2,'scur' ,3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi'), x_to_null, forced_reads, forced_writes, bh.le_addr, name,le_class, decode(bitand(flag,1), 0, 'N', 'Y'), d ecode(bitand(flag,16), 0, 'N', 'Y'), decode(bitand(flag,1536), 0, 'N', 'Y'), dec ode(bitand(flag,16384), 0, 'N', 'Y'), decode(bitand(flag,65536), 0, 'N', 'Y'), ' N', obj, ts# from x$bh bh, x$le le where bh.le_addr = le.le_addr (+)

我们可以看到v$bh的底层表示x$bh

其中v$bh中的dirty/temp/ping/stale/direct五个字段来源于x$bh中的flag字段

格式化一下输出:

SELECT bh.inst_id, file#, dbablk, CLASS, ?????? DECODE (state, ?????????????? 0, 'free', ?????????????? 1, 'xcur', ?????????????? 2, 'scur', ?????????????? 3, 'cr', ?????????????? 4, 'read', ?????????????? 5, 'mrec', ?????????????? 6, 'irec', ?????????????? 7, 'write', ?????????????? 8, 'pi' ????????????? ), ?????? x_to_null, forced_reads, forced_writes, bh.le_addr, NAME, le_class, ?????? DECODE (BITAND (flag, 1), 0, 'N', 'Y'), ?????? DECODE (BITAND (flag, 16), 0, 'N', 'Y'), ?????? DECODE (BITAND (flag, 1536), 0, 'N', 'Y'), ?????? DECODE (BITAND (flag, 16384), 0, 'N', 'Y'), ?????? DECODE (BITAND (flag, 65536), 0, 'N', 'Y'), 'N', obj, ts# ? FROM x$bh bh, x$le le ?WHERE bh.le_addr = le.le_addr(+)

由此我们得以窥视x$bh.flag的深层含义.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

完美的执行计划导致的性能问题(r4笔记第17天)

今天现场的开发同事反馈有一个job处理数据的速度很慢,从半夜2点开始运行,结果到了早上8点还没有运行完,最后无奈kill掉了进程。等我刚到公司,他们想让我查查倒...

45870
来自专栏杨建荣的学习笔记

巧用外部表避免大量的insert (r4笔记第71天)

昨天开发咨询我一个问题,希望我对下面的语句进行调优。 语句类似下面的形式 SELECT subscriber_no FROM SUBSCRIBER S W...

37480
来自专栏杨建荣的学习笔记

ORACLE数据文件名导致的奇怪问题 (51天)

今天创建了一些表空间,准备做data guard来看看效果。 为了方便起见,我用gridcontrol来做,主库也开了Omf,省去了好多步骤。 一路点下来,就等...

33640
来自专栏乐沙弥的世界

Oracle 聚簇因子(Clustering factor)

    聚簇因子是 Oracle 统计信息中在CBO优化器模式下用于计算cost的参数之一,决定了当前的SQL语句是否走索引,还是全表扫描以及是否作为嵌套连接外...

17410
来自专栏杨建荣的学习笔记

归档问题导致的数据库无法启动 (80天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

343100
来自专栏乐沙弥的世界

Linux/Unix shell 自动发送AWR report

     观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过...

9330
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第五篇(r2笔记41天)

今天在生产环境中发现一条sql语句尽管走了主键索引,但是查询还是很慢。 sql语句类似下面的形式: SELECT /*+ index (bl1_cyc_paye...

35280
来自专栏杨建荣的学习笔记

数据库11g升级中一次奇怪的问题 (30天)

客户的测试环境已经从10g升级到11g了。但是没过几天,数据hang住了,登都登不了了,而且通过sys,system,普通用户连接的错误都不一样 首先通过 一下...

33840
来自专栏杨建荣的学习笔记

海量数据迁移之外部表加载(100天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

34480
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第七篇(r2笔记99天)

在数据迁移完成之后,开始了例行的后期数据库维护,早上一来就发现了一个sql执行时间很长了。达到了37279秒。最后在改进调优之后执行速度在1分钟以内。 这个速度...

35980

扫码关注云+社区

领取腾讯云代金券