0

0

如何分析AWR中的Redo大小_Redo size统计评估归档日志生成量

P粉602998670

P粉602998670

发布时间:2026-03-16 12:51:12

|

786人浏览过

|

来源于php中文网

原创

Redo size是AWR中Instance Activity Stats里累计写入redo log buffer的总字节数,反映实例启动至快照结束的逻辑redo量,非实际归档量;其值受block对齐、SCN标记、IMU/SecureFiles等影响,估算归档速率须用连续快照差值除以真实时间间隔。

Redo size指标在AWR中到底代表什么

redo size 是 oracle awr 报告里 instance activity stats 部分的一个累计统计值,单位是字节,反映的是从实例启动到快照结束期间写入 redo log buffer 的总字节数(经 log_buffer 写入后,最终落盘量会略小,因存在部分未刷盘或重用)。

它不等于归档日志生成量,但常被误当作归档量估算依据。真实归档量受多个压缩、复用、延迟写入机制影响,比如:ARCH 进程读取的是已写入磁盘的 redo 日志文件,而 Redo size 统计的是逻辑写入 buffer 的量,中间夹着 log writer 的批量写、block padding、checksum、SCN标记等开销。

  • 同一事务在不同版本 Oracle 中产生的 Redo size 可能差异明显(如 12c+ 启用 IMUSecureFiles 会改变 redo 格式)
  • DDL 操作(如 CREATE TABLE AS SELECT)会产生远高于 DML 的 Redo size,但未必对应等量归档——因为日志文件按块(512B/4KB)对齐,小事务也可能“撑满”一个 block
  • 如果数据库启用了 FORCE LOGGINGRedo size 会上升,但归档速度还受限于 ARCH 进程吞吐和归档目标 I/O 能力

如何用AWR差值反推平均归档速率

要估算归档日志生成速率,不能直接拿单个 AWR 快照里的 Redo size 值除以时间,必须用两个连续快照的差值,再结合实际时间间隔计算。

例如:快照 ID 100 的 Redo size 是 1234567890 字节,快照 ID 101 是 2345678901 字节,间隔 3600 秒,则平均速率为 (2345678901 - 1234567890) / 3600 ≈ 308.6 KB/s。这个值接近但通常略高于真实归档速率(因部分 redo 尚未触发归档,或被覆盖)。

  • 优先使用 DBA_HIST_SYSSTAT 查询,过滤 stat_name = 'redo size',比直接扒 AWR HTML 报告更可靠
  • 注意快照时间是否跨日志切换(log switch),若刚好卡在日志切换前后,差值可能失真——一次切换会强制写满当前日志并归档,导致该区间 Redo size 突增但归档文件数只+1
  • 避免用 DBA_HIST_SNAPSHOTEND_INTERVAL_TIME 直接减,应取 SNAP_ID 对应的真实采集完成时刻(DBA_HIST_SNAPSHOT 表中 END_INTERVAL_TIME 是近似值,有分钟级漂移)

为什么Redo size和v$archived_log.bytes差异大

v$archived_log.bytes 是每个归档文件的实际大小(字节),加总后是真实归档量;而 Redo size 是内存 buffer 级别的逻辑写入量。两者差异来自三类损耗/放大:

课游记AI
课游记AI

AI原生学习产品

下载
  • log_buffer 到磁盘的写入不是 1:1 映射:Oracle 会填充 block(如 512B 对齐)、添加 header/footer、插入 checkpoint info,导致物理日志文件比 Redo size 多出 3%–10%
  • 归档进程(ARCH)读取的是完整 online redo log file,哪怕只用了其中 10%,也会归档整个文件(默认 50MB/100MB),造成严重高估
  • 如果开启 LOG_ARCHIVE_DEST_nDELAYALTERNATE,归档可能滞后,v$archived_log 记录的是“已完成归档”的时间点,而 Redo size 是实时累加的

典型现象:某小时 Redo size 差值为 2.1 GB,但 v$archived_log 显示该小时只归档了 1.7 GB(含 3 个 50MB 文件 + 1 个 20MB 文件),差额就是日志文件未用满 + block 对齐开销。

归档压力评估时真正该盯的指标

单看 Redo size 容易误判归档瓶颈。更关键的是观察归档链路各环节的等待与延迟:

  • v$session_eventlog file synclog file parallel write 的平均等待时间,超过 5ms 说明 LGWR 写盘慢,会拖慢所有事务提交,间接抑制 redo 生成速率
  • v$archive_dest_statusSTATUSERROR 列,确认归档路径是否 VALIDTRANSMIT_MODE 是否为 SYNC(同步归档会卡住主库)
  • 对比 v$log_historyFIRST_TIMEv$archived_logCOMPLETION_TIME,差值持续 > 60s 表示归档积压,此时即使 Redo size 不高,也需干预

归档不是纯“量”的问题,而是“时效性+可靠性”组合判断。Redo size 只是上游水龙头的刻度,真正堵在哪,得顺着管道一段段摸过去。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

570

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

441

2024.03.13

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

513

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

384

2023.10.25

css中的padding属性作用
css中的padding属性作用

在CSS中,padding属性用于设置元素的内边距。想了解更多padding的相关内容,可以阅读本专题下面的文章。

176

2023.12.07

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

221

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

248

2023.09.18

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

2

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号