查归档日志文件每小时生成量

本文提供Oracle数据库中归档日志查询的方法,包括按小时和按天统计归档日志生成量的SQL脚本,并适用于单实例及RAC环境。

O racle数据库中,通过v$archived_log数据字典视图查询该数据库的归档日志文件的生成情况。 如果你以为在rac下需要查的gv$archvied_log视图,这其实是一个错误的想法。 无论在单实例数据库,还是多实例的RAC数据库,都是查这个视图来获取信息。

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1749746 )

 

查当天每小时的归档日志生成量

 

select logtime,
       count(*),
       round(sum(blocks * block_size) / 1024 / 1024) mbsize
  from (select trunc(first_time, 'hh') as logtime, a.BLOCKS, a.BLOCK_SIZE
          from v$archived_log a
         where a.DEST_ID = 1
           and a.FIRST_TIME > trunc(sysdate))
 group by logtime
 order by logtime desc;
 

 

 

查最近一周每天的归档日志生成量

 

select logtime,
       count(*),
       round(sum(blocks * block_size) / 1024 / 1024) mbsize
  from (select trunc(first_time, 'dd') as logtime, a.BLOCKS, a.BLOCK_SIZE
          from v$archived_log a
         where a.DEST_ID = 1
           and a.FIRST_TIME > trunc(sysdate - 7))
 group by logtime
 order by logtime desc;

 

 

如果你需要知道RAC下各个节点的归档日志情况,我将上面脚本略作修改,增加thread#列。

 

查当天每小时的各个实例的归档日志生成量

 

select THREAD#,
       logtime,
       count(*),
       round(sum(blocks * block_size) / 1024 / 1024) mbsize
  from (select a.THREAD#,
               trunc(first_time, 'hh') as logtime,
               a.BLOCKS,
               a.BLOCK_SIZE
          from v$archived_log a
         where a.DEST_ID = 1
           and a.FIRST_TIME > trunc(sysdate))
 group by THREAD#, logtime
 order by THREAD#, logtime desc;
 

查最近一周每天的各个实例的归档日志生成量

select THREAD#,
       logtime,
       count(*),
       round(sum(blocks * block_size) / 1024 / 1024) mbsize
  from (select THREAD#,
               trunc(first_time, 'dd') as logtime,
               a.BLOCKS,
               a.BLOCK_SIZE
          from v$archived_log a
         where a.DEST_ID = 1
           and a.FIRST_TIME > trunc(sysdate - 7))
 group by THREAD#, logtime
 order by THREAD#, logtime desc;
 




敬请留存,以备不时之需 @mikixiyou

 

 

<think>好的,我现在需要回答用户关于达梦数据库归档日志生成频率的问题。首先,我需要回顾之前用户的问题和我的回答,确保这次回答的一致性和准确性。用户之前询问了归档日志的位置,现在想知道生成频率,所以需要集中在触发归档的条件和频率上。 首先,我应该明确达梦数据库的归档日志生成并不是由固定的时间频率决定的,而是由日志切换事件触发的。需要解释清楚触发日志切换的情况,比如日志文件写满、手动切换、检点操作等。同时,要提到日志文件大小参数(RLOG_FILE_SIZE),因为这会直接影响归档的频率,文件越大,切换的频率可能越低。 然后,我需要考虑用户可能的潜在需求。他们可能想知道如何控制归档的频率,或者为什么归档日志生成得过于频繁或不够频繁。因此,我应该包含影响频率的因素,比如事务量、日志文件大小配置,以及如何调整这些参数来优化归档频率。 另外,用户可能需要了解如何监控当前的日志切换情况,所以需要提供一些SQL查询示例,比如看当前日志文件大小日志切换历史等。这些实际的命令可以帮助用户自己检和调整配置。 还要注意提醒用户归档日志的重要性,不能随意关闭或过度限制,以免影响数据库的恢复能力。同时,自动清理策略和空间监控也是关键点,防止磁盘空间不足导致的问题。 最后,要确保语言简洁明了,结构清晰,分点说明,让用户能够逐步理解影响归档频率的各种因素和如何管理它们。避免使用过于专业的术语,必要时举例说明,比如不同的业务场景下日志切换的情况。 总结步骤: 1. 确定归档日志切换触发,而非固定时间。 2. 列出触发日志切换的条件:日志写满、手动切换、检点。 3. 解释RLOG_FILE_SIZE参数的作用和如何影响频率。 4. 提供监控和管理归档频率的方法,包括SQL查询和参数调整。 5. 强调注意事项,如事务量影响、空间监控和清理策略。 6. 使用示例帮助用户理解实际操作。 需要检达梦数据库的官方文档,确认相关参数和命令的准确性,确保回答正确无误。同时,保持回答结构清晰,分点说明,便于用户理解和应用。</think>达梦数据库的归档日志生成频率**并非由固定时间决定**,而是由**日志切换(Redo Log Switch)**触发。日志切换的条件与数据库事务量、日志文件大小配置等因素直接相关。以下是影响归档日志生成频率的核心机制及管理策略: --- ### **1. 触发归档日志生成的条件** 归档日志在以下场景中生成: #### **(1) 联机日志文件写满** - 达梦数据库默认使用**联机重做日志(Online Redo Log)**记录事务操作。 - 每个日志组由若干固定大小日志文件组成(默认单个文件256MB)。 - **当日志文件被写满时**,系统自动切换到下一个日志组,并触发归档操作(将已满的日志文件内容写入归档日志)。 #### **(2) 手动强制切换日志** 通过SQL命令立即触发日志切换: ```sql ALTER SYSTEM ARCHIVE LOG CURRENT; -- 强制切换当前日志组并归档 ``` #### **(3) 检点(Checkpoint)操作** - 检点会刷新脏页到磁盘,并可能伴随日志切换(依赖参数`RLOG_APPEND_CHECK`配置)。 - 若检点发生时当前日志组使用率较高,可能触发提前切换。 --- ### **2. 关键配置参数** 通过以下参数控制日志切换频率: #### **(1) `RLOG_FILE_SIZE`** - **定义**:单个联机日志文件大小(单位:MB)。 - **默认值**:256 MB。 - **影响**: 文件越大,日志切换频率越低,归档生成间隔越长;反之则更频繁。 #### **(2) `RLOG_PARALLEL_NUM`** - **定义**:联机日志组的数量(默认为3组)。 - **影响**: 日志组越多,系统循环使用日志文件的缓冲空间越大,可延缓切换频率。 #### **(3) `ARCH_FILE_SIZE`** - **定义**:单个归档日志文件大小(默认256MB)。 - **影响**: 单个归档文件达到此大小时,会自动分割为新文件,但不影响联机日志切换频率。 --- ### **3. 如何监控日志切换频率** 通过系统视图分析日志切换历史: ```sql -- 看联机日志文件大小及当前使用情况 SELECT GROUP_ID, FILE_SIZE_MB, USED_PERCENT FROM V$RLOG; -- 查询最近10次日志切换时间及触发原因 SELECT TIME, SEQUENCE#, SWITCH_MODE FROM V$LOG_HISTORY ORDER BY TIME DESC LIMIT 10; ``` - **`SWITCH_MODE`字段解释**: - `AUTO`:日志写满自动切换 - `MANUAL`:手动触发切换 - `CHECKPOINT`:检点触发切换 --- ### **4. 调整归档频率的策略** #### **(1) 降低归档频率(减少日志切换)** - **增大联机日志文件**: ```sql ALTER DATABASE RESIZE LOGFILE 'logfile_path' TO 1024; -- 修改日志文件大小1GB ``` - **增加日志组数量**: ```sql ALTER DATABASE ADD LOGFILE 'logfile_path' SIZE 512; -- 新增512MB的日志组 ``` #### **(2) 提高归档频率(适用于高频备份场景)** - 缩小联机日志文件(需谨慎,频繁切换可能影响性能)。 - 定期手动执行`ALTER SYSTEM ARCHIVE LOG CURRENT`。 --- ### **5. 注意事项** 1. **事务量影响**: 高并发或大事务场景下,联机日志可能快速写满,导致频繁切换和归档。 2. **空间监控**: 频繁生成归档日志需确保存储路径有足够空间,避免因空间不足导致数据库挂起。 3. **清理策略**: 通过`ARCH_SPACE_LIMIT`限制归档大小,或使用`SF_ARCHIVELOG_DELETE`清理过期归档。 --- ### **示例场景** - **低负载数据库**: 默认256MB日志文件,每天生成1~2次归档。 - **高并发OLTP系统**: 日志文件可能每小时切换多次,需调整日志文件1GB以上并监控归档目录空间。 --- ### **总结** 达梦数据库归档日志的生成频率**取决于联机日志切换的触发条件**,核心影响因素包括: - 联机日志文件大小(`RLOG_FILE_SIZE`) - 事务写入速度 - 手动干预或检点机制 通过调整日志文件大小、监控切换历史,可有效平衡归档频率与系统性能。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值