通过查看v$sysstat视图可以找到与redo相关的状态记录:
select name, value from v$sysstat where name like '%redo%';
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production(32个参数)
redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2415619
redo size 2894156244
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2298332080
redo buffer allocation retries 304
redo wastage 146017332
redo writes 379231
redo blocks written 6129247
redo write time 25647
redo blocks checksummed by FG (exclusive) 4593510
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 396
redo subscn max counts 26943
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 436
redo synch time (usec) 4634610
redo synch writes 1228
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3064772
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi (16个)

redo synch writes 226341116
redo synch time 20660928
redo blocks read for recovery 0
redo entries 6683152057
redo size 2.36827E+12
redo buffer allocation retries 159174
redo wastage 79127052484
redo writer latching time 1754
redo writes 274230209
redo blocks written 4941554269
redo write time 15881292
redo log space requests 234573
redo log space wait time 4492908
redo log switch interrupts 0
redo ordering marks 167582252
redo subscn max counts 228984354

观察数值是在不断变化的

redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2416776
redo size 2894279508
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2298332080
redo buffer allocation retries 304
redo wastage 146442604
redo writes 380301
redo blocks written 6130353
redo write time 25685
redo blocks checksummed by FG (exclusive) 4593521
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 396
redo subscn max counts 26952
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 436
redo synch time (usec) 4635808
redo synch writes 1234
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3065328
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

比如redo entries 该参数测试时发现系统无业务状态下不断递增,应该是oracle内部的进程产生的事务在不断的刷入redo空间中导致redo条目的不断增加,我这里取了几组数据进行计算:
2416441-2416371=70
2894247796-2894241040=6756
6756/70=96.514
2416580-2416441=139
2894260852-2894247796=13056
13056/139=93.928
2416776-2416371=405
2894279508-2894241040=38468
38468/405=94.9827
上面的计算值说明不了什么,只是想确认一下在无业务状态下redo条目每增加一条时产生的日志redo大小为多少,在11G下算出来的平均值为95。
redo entries:
2416776-2415619=1157
redo size:
2894279508-2894156244=123264
redo blocks written:
6130353-6129247=1106
redo wastage:
146442604-146017332=425272
redo blocks written (redo block 16bytes block header)
1106*512-1106*16=548576
redo writes
380301-379231=1070
redo size (increment)+redo wastage
123264+425272=548536
从以上的计算大致得出一个公式为:
redo size (increment)+redo wastage ≈ redo blocks written* (redo block size - redo block header size)
这里我尝试对数据库进行一些操作,观察redo状态的变化。先查看当前的数据库redo的状态值:
select name, value from v$sysstat where name like '%redo%';
select name,value
from v$statname a, v$mystat b
where a.statistic# = b.statistic#
and name like '%redo%';
系统级别状态值
redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2428219
redo size 2914140772
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2315553328
redo buffer allocation retries 304
redo wastage 148178848
redo writes 384731
redo blocks written 6173905
redo write time 25852
redo blocks checksummed by FG (exclusive) 4628221
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 396
redo subscn max counts 27169
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 436
redo synch time (usec) 4640960
redo synch writes 1252
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3078453
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

会话级别状态值

redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 3733
redo size 17371104
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 17081372
redo buffer allocation retries 0
redo wastage 0
redo writes 0
redo blocks written 0
redo write time 0
redo blocks checksummed by FG (exclusive) 0
redo blocks checksummed by LGWR 0
redo log space requests 0
redo log space wait time 0
redo ordering marks 0
redo subscn max counts 62
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 0
redo synch time (usec) 883
redo synch writes 6
redo synch long waits 0
redo synch poll writes 0
redo synch polls 0
redo KB read 0
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0
这里我尝试创建一个表,看看redo统计信息的变化。
select count(*) from all_objects; (result:72815)
create table tredo as select * from all_objects;  执行4.431s

系统级别状态值
redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2430120
redo size 2922845056
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2324093992
redo buffer allocation retries 304
redo wastage 148233420
redo writes 384899
redo blocks written 6191566
redo write time 25869
redo blocks checksummed by FG (exclusive) 4644404
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 396
redo subscn max counts 27176
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 438
redo synch time (usec) 4661320
redo synch writes 1253
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3078453
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

会话级别状态值

redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 5356
redo size 26010532
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 25622036
redo buffer allocation retries 0
redo wastage 0
redo writes 0
redo blocks written 0
redo write time 0
redo blocks checksummed by FG (exclusive) 0
redo blocks checksummed by LGWR 0
redo log space requests 0
redo log space wait time 0
redo ordering marks 0
redo subscn max counts 64
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 2
redo synch time (usec) 21243
redo synch writes 7
redo synch long waits 0
redo synch poll writes 0
redo synch polls 0
redo KB read 0
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

获取对应的数据进行简单计算
redo wastage:

148233420-148178848=54572
redo size:
sys:2922845056-2914140772=8704284
session:26010532-17371104=8639428
redo block written:
6191566-6173905=17661
54572+8704284 =  8758856
17661*512-17661*16=8759856
redo entries:
5356-3733=1623
与前面总结公式大致相符,同时发现DDL语句操作因为伴随则数据插入的操作,操作记录应该也被记录到了redo buffer中,但是否插入的数据与redo buffer增长的大小有一定的关系,我简单的查看了下:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS('SSS','TREDO');
END;
select segment_name, blocks * 8192 tbsize, segment_type
from dba_segments
where segment_name = 'TREDO';
result:9437184
这样对比应该得不到想要的结果,再进行一次对表数据DML的操作:
操作前系统级别的状态
redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2501334
redo size 2946962456
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2324406656
redo buffer allocation retries 304
redo wastage 149663340
redo writes 388570
redo blocks written 6243140
redo write time 26024
redo blocks checksummed by FG (exclusive) 4647057
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 396
redo subscn max counts 27319
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 440
redo synch time (usec) 4685487
redo synch writes 1283
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3100690
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

会话级别的状态

redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 68472
redo size 47199448
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 25622036
redo buffer allocation retries 0
redo wastage 0
redo writes 0
redo blocks written 0
redo write time 0
redo blocks checksummed by FG (exclusive) 0
redo blocks checksummed by LGWR 0
redo log space requests 0
redo log space wait time 0
redo ordering marks 0
redo subscn max counts 72
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 3
redo synch time (usec) 31387
redo synch writes 10
redo synch long waits 0
redo synch poll writes 0
redo synch polls 0
redo KB read 0
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

进行删除操作
DELETE FROM TREDO WHERE rownum<50000;
系统级别的状态值发生改变:
redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 2553644
redo size 2965874752
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 2324406656
redo buffer allocation retries 304
redo wastage 149695144
redo writes 388660
redo blocks written 6281384
redo write time 26060
redo blocks checksummed by FG (exclusive) 4647066
redo blocks checksummed by LGWR 0
redo log space requests 14
redo log space wait time 12
redo ordering marks 397
redo subscn max counts 27323
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 440
redo synch time (usec) 4685487
redo synch writes 1283
redo synch long waits 18
redo synch poll writes 0
redo synch polls 0
redo KB read 3100690
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0

会话级别的状态值发生改变:

redo blocks read for recovery 0
redo k-bytes read for recovery 0
redo k-bytes read for terminal recovery 0
redo entries 120623
redo size 66079516
redo entries for lost write detection 0
redo size for lost write detection 0
redo size for direct writes 25622036
redo buffer allocation retries 0
redo wastage 0
redo writes 0
redo blocks written 0
redo write time 0
redo blocks checksummed by FG (exclusive) 0
redo blocks checksummed by LGWR 0
redo log space requests 0
redo log space wait time 0
redo ordering marks 1
redo subscn max counts 76
redo write broadcast ack time 0
redo write broadcast ack count 0
redo write broadcast lgwr post count 0
redo synch time 3
redo synch time (usec) 31387
redo synch writes 10
redo synch long waits 0
redo synch poll writes 0
redo synch polls 0
redo KB read 0
redo KB read (memory) 0
redo KB read for transport 0
redo KB read (memory) for transport 0
redo size:
sys:
2965874752-2946962456=18912296
session:
66079516-47199448=18880068

redo wastage:
149695144-149663340=31804
redo block written:
6281384-6243140=38244
38244*(512-16)=18969024
对表进行迁移操作,并重新计算表大小,发生改变为:
result:2818048
9437184-2818048=6619136

应该说,通过这种简单的数字计算是无法判断出redo变化与数据变化的关系的。
这次主要的目的是为了测试redo wastage的变化的,这次测试一方面得出redo wastage,redo size,redo blocks written三者的关系,同时,也得出另一个公式:
redo wastage(increment)/(redo wastage(increment)+redo size(increment))
通过该公式的计算能判断出redo浪费率是多少
(31804/(31804+18912296))*100=0.168%
通过该计算能判断redo block的设置是否合理。

关于redo block的设置在初始化参数中有写,这里就不详细介绍

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26664667/viewspace-1228588/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26664667/viewspace-1228588/

关于redo wastage的测试相关推荐

  1. Redo Wastage

    一般的,lgwr写到current log buffer block并且包括current log buffer block,(writes up to and including the curre ...

  2. 对redo wastage这个概念的说明

    redo wastage 本站文章除注明转载外,均为本站原创: 转载自love wife & love life -Roger 的Oracle技术博客 本文链接地址: redo wastage ...

  3. Redo wastage产生的原因

    Redo wastage产生的原因[@more@] Redo wastage产生的原因 在v$sysstat中有一个统计是redo wastage,这个究竟是什么意思,为什么汇产生这个问题哪?reod ...

  4. 重做日志浪费(redo wastage)

    Oracle中联机日志文件(online redo log)在大多平台上以512 字节为一个标准块. (HPUX,Tru64 Unix上是1024bytes,SCO UNIX,Reliant UNIX ...

  5. 有关 Oracle redo log

    Redo的内容 Oracle通过Redo来实现快速提交,一方面是因为Redo Log File可以连续.顺序地快速写出,另一个方面也和Redo记录的精简内容有关. 两个概念: 改变向量(Change ...

  6. archive log文件大小与redo log文件大小关系探究

         首先我们来看下什么是archive log file,oracle 11g 的concept中是这样定义的:When you enable archiving of the online r ...

  7. oracle redo删除,意外删除redo的恢复

    今天做了点删除redo log的测试,查阅资料和实际动手整理了一下的一些东西. A非当前联机日志被删除损坏 正常关闭数据库 shutdown immediate 我们在os上删除logfile red ...

  8. 揭密Oracle之 七种武器

    揭密Oracle之 七种武器 第一章 搭建测试环境 vage 揭密Oracle之 七种武器  第一章 搭建测试环境 (揭密Oracle之七种武器第二章地址:DTrace语法:跟踪物理IO http:/ ...

  9. oracle常见语句(转载)

    --==================================== 一.sql语句方面 =================================================== ...

最新文章

  1. deepin10.15安装cuda10.1.168 cudnn7.6.1 tensorflow_gpu1.4.0
  2. puppet 连载二:服务端和客户端安装(ActiveMQ、MCollective)
  3. ie浏览器修复工具_电脑故障修复不求人!50个小工具可帮你一键修复
  4. 25岁“天才少年”曹原再发一篇Nature!1个月时间内的第二篇!
  5. pytorch1.7教程实验——迁移学习训练卷积神经网络进行图像分类
  6. 平凡的世界电子书pdf下载_零基础彩铅画入门教程步骤图及全套PDF电子书教程下载!...
  7. mysqldump备份原理6
  8. C#根据字节数截取字符串【转载】
  9. 探究streambuf
  10. 详解MessageBox(),MsgBox函数的正确使用
  11. java毕业设计房屋租赁管理系统Mybatis+系统+数据库+调试部署
  12. 电源压敏电阻的计算选择
  13. python求n的阶乘_python如何计算n的阶乘
  14. 2012腾讯实习招聘笔试附加题1求解方法
  15. 服务器主板最多能装几个cpu,双路主板能不能只用一块CPU?
  16. 新手如何对文件进行简单的上传
  17. TensorFlow Keras 官方教程 * * * * *
  18. LinuxC—标准IO与文件IO学习笔记
  19. 上海万国驾校 科目二知识点归纳
  20. 伺服驱动器和电机控制

热门文章

  1. 【linux进阶6】DNS部署(DNS解析服务)
  2. 自卑与超越:人类个体心理学最卓越的作品(经典完整译本)
  3. 阿里云OSS开启Sts临时访问控制
  4. table tr td
  5. 优秀的上位机软件推荐
  6. php_curl扩展的使用
  7. 干货分享---记录一次vue +element-ui+ FullCalendar日历表 实现排班/排课的功能
  8. MATLAB® 空间数学工具箱——旋转函数
  9. Linux进程互斥——生产者-消费者
  10. 楼盘vr虚拟样板间,为售楼中心带来财气