当前位置: 首页 > news >正文

Oracle Redo 日志操作手册

Oracle Redo 日志操作手册


一、基本概念

Oracle 联机重做日志(Online Redo Log)记录数据库所有变更操作,是实例恢复的核心组件。

  • 日志组(Log Group):每个数据库至少 2 个组,循环写入
  • 日志成员(Log Member):同一组内的多个成员互为镜像,建议每组 2 个成员分布在不同磁盘
  • 日志线程(Thread):RAC 环境中每个实例拥有独立的线程,单实例为 Thread 1
  • 日志切换(Log Switch):当前组写满后切换到下一组,触发 LGWR 进程

二、查看 Redo 日志信息

-- 查看日志组状态SELECTGROUP#, THREAD#, SEQUENCE#, BYTES/1024/1024 AS SIZE_MB,BLOCKSIZE,MEMBERS,ARCHIVED,STATUSFROMV$LOGORDERBYTHREAD#, GROUP#;-- 查看日志成员(文件路径)SELECTGROUP#, MEMBER, STATUS, TYPEFROMV$LOGFILEORDERBYGROUP#, MEMBER;-- 查看日志组与成员汇总SELECTl.GROUP#, l.THREAD#, l.SEQUENCE#,l.BYTES/1024/1024ASSIZE_MB,l.STATUSASGROUP_STATUS,lf.MEMBERASFILE_PATH,lf.STATUSASMEMBER_STATUSFROMV$LOG lJOINV$LOGFILE lfONl.GROUP# = lf.GROUP#ORDERBYl.THREAD#, l.GROUP#;-- 查看当前正在使用的日志组SELECTGROUP#, SEQUENCE#, STATUS FROM V$LOG WHERE STATUS = 'CURRENT';-- 查看日志切换历史(最近24小时)SELECTTHREAD#, SEQUENCE#, FIRST_TIME, NEXT_TIME,ROUND((NEXT_TIME-FIRST_TIME)*24*60,2)ASDURATION_MINFROMV$ARCHIVED_LOGWHEREFIRST_TIME>SYSDATE-1ORDERBYTHREAD#, SEQUENCE# DESC;-- 统计每小时日志切换次数(评估日志大小是否合理)SELECTTO_CHAR(FIRST_TIME,'YYYY-MM-DD HH24')ASHOUR,COUNT(*)ASSWITCH_COUNTFROMV$LOG_HISTORYWHEREFIRST_TIME>SYSDATE-1GROUPBYTO_CHAR(FIRST_TIME,'YYYY-MM-DD HH24')ORDERBY1DESC;

三、添加日志组

-- 添加一个日志组(单成员)ALTERDATABASEADDLOGFILEGROUP4('/data/oracle/redo/redo04.log')SIZE200M;-- 添加一个日志组(双成员,推荐)ALTERDATABASEADDLOGFILEGROUP4('/data/oracle/redo/redo04a.log','/data/oracle/redo/redo04b.log')SIZE200M;-- 不指定组号(自动分配)ALTERDATABASEADDLOGFILE('/data/oracle/redo/redo05a.log','/data/oracle/redo/redo05b.log')SIZE200M;-- RAC 环境:为指定线程添加日志组ALTERDATABASEADDLOGFILE THREAD2GROUP10('/data/oracle/redo/redo_t2_10a.log','/data/oracle/redo/redo_t2_10b.log')SIZE200M;

四、添加日志成员

-- 为已有日志组添加成员(镜像)ALTERDATABASEADDLOGFILE MEMBER'/data/oracle/redo/redo01b.log'TOGROUP1;-- 同时为多个组添加成员ALTERDATABASEADDLOGFILE MEMBER'/data/oracle/redo/redo01b.log'TOGROUP1,'/data/oracle/redo/redo02b.log'TOGROUP2,'/data/oracle/redo/redo03b.log'TOGROUP3;

五、删除日志组

注意:不能删除 CURRENT 或 ACTIVE 状态的日志组,至少保留 2 个组。

-- 查看状态,确认可以删除SELECTGROUP#, STATUS FROM V$LOG;-- STATUS: CURRENT(当前)/ ACTIVE(活跃,未归档完)/ INACTIVE(可删除)/ UNUSED(从未使用)-- 若目标组为 ACTIVE,先强制切换并等待归档完成ALTERSYSTEM SWITCH LOGFILE;ALTERSYSTEMCHECKPOINT;-- 删除日志组ALTERDATABASEDROPLOGFILEGROUP4;-- 注意:以上命令只从控制文件中移除记录,物理文件需手动删除-- OMF(Oracle Managed Files)管理的文件会自动删除
# 手动删除物理文件(非 OMF)rm-f/data/oracle/redo/redo04a.logrm-f/data/oracle/redo/redo04b.log

六、删除日志成员

-- 删除指定组的某个成员ALTERDATABASEDROPLOGFILE MEMBER'/data/oracle/redo/redo01b.log';-- 注意:-- 1. 不能删除组内最后一个成员(需先删组)-- 2. CURRENT 组的成员不能删除-- 3. 非 OMF 文件需手动删除物理文件
# 手动删除物理文件rm-f/data/oracle/redo/redo01b.log

七、修改日志文件大小

Oracle 不支持直接修改日志文件大小,需通过"新增 + 删除"方式替换。

-- 步骤1:查看当前日志组SELECTGROUP#, BYTES/1024/1024 AS SIZE_MB, STATUS FROM V$LOG;-- 步骤2:新增目标大小的日志组ALTERDATABASEADDLOGFILEGROUP10('/data/oracle/redo/redo10a.log','/data/oracle/redo/redo10b.log')SIZE500M;-- 步骤3:切换日志,让旧组变为 INACTIVEALTERSYSTEM SWITCH LOGFILE;ALTERSYSTEMCHECKPOINT;-- 步骤4:确认旧组状态为 INACTIVE 后删除SELECTGROUP#, STATUS FROM V$LOG;ALTERDATABASEDROPLOGFILEGROUP1;-- 步骤5:删除物理文件-- rm -f /data/oracle/redo/redo01*.log-- 步骤6:用新路径重建该组(可选,保持组号连续)ALTERDATABASEADDLOGFILEGROUP1('/data/oracle/redo/redo01a.log','/data/oracle/redo/redo01b.log')SIZE500M;-- 重复以上步骤处理其余日志组

八、日志线程(Thread)管理

线程主要用于 RAC 环境,每个实例对应一个线程。

-- 查看线程信息SELECTTHREAD#, STATUS, ENABLED, GROUPS, OPEN_TIMEFROMV$THREAD;-- 查看各线程的日志组SELECTGROUP#, THREAD#, SEQUENCE#, STATUSFROMV$LOGORDERBYTHREAD#, GROUP#;-- 启用线程(RAC 新增实例时)ALTERDATABASEENABLEPUBLICTHREAD2;-- 禁用线程(RAC 减少实例时)ALTERDATABASEDISABLETHREAD2;-- 为线程2添加日志组ALTERDATABASEADDLOGFILE THREAD2GROUP11('/data/oracle/redo/redo_t2_11a.log','/data/oracle/redo/redo_t2_11b.log')SIZE200M;-- 查看线程与实例对应关系(RAC)SELECTINST_ID,THREAD#, STATUS FROM GV$THREAD ORDER BY INST_ID;

九、日志切换与检查点

-- 手动切换日志ALTERSYSTEM SWITCH LOGFILE;-- RAC 环境切换指定线程的日志ALTERSYSTEM SWITCHALLLOGFILE;-- 强制检查点(加速 ACTIVE 状态变为 INACTIVE)ALTERSYSTEMCHECKPOINT;-- 全局检查点(RAC)ALTERSYSTEMCHECKPOINTGLOBAL;

十、日志损坏恢复

10.1 非 CURRENT 组损坏(INACTIVE 状态)

-- 清除损坏的日志组(不影响数据)ALTERDATABASECLEAR LOGFILEGROUP2;-- 若日志组未归档,强制清除(会导致该日志无法用于恢复)ALTERDATABASECLEAR UNARCHIVED LOGFILEGROUP2;

10.2 CURRENT 组损坏(最严重)

# 需要不完全恢复,步骤:# 1. 尝试正常关库sqlplus / as sysdba
SHUTDOWNABORT;STARTUP MOUNT;-- 尝试强制打开(可能丢失部分数据)ALTERDATABASEOPENRESETLOGS;-- 若失败,需要从备份恢复RECOVERDATABASEUNTIL CANCEL;ALTERDATABASEOPENRESETLOGS;

10.3 日志成员损坏(组内其他成员正常)

-- 删除损坏成员,重新添加ALTERDATABASEDROPLOGFILE MEMBER'/data/oracle/redo/redo01b.log';ALTERDATABASEADDLOGFILE MEMBER'/data/oracle/redo/redo01b.log'TOGROUP1;-- Oracle 会自动从同组其他成员同步内容

十一、最佳实践

项目建议
日志组数量至少 3 组,繁忙系统 4-6 组
每组成员数2 个,分布在不同磁盘/控制器
日志文件大小目标每 15-30 分钟切换一次,通常 200M-1G
日志切换频率过于频繁(<5分钟)需扩大日志;过慢(>60分钟)可适当缩小
存放位置与数据文件、归档日志分开,使用独立高速磁盘
RAC 环境每个线程至少 3 组,组间大小保持一致
监控定期检查V$LOG中是否有长期 ACTIVE 状态的组

十二、常见问题

问题原因解决方法
无法删除日志组组状态为 CURRENT 或 ACTIVE切换日志 + 执行检查点后再删
日志组一直 ACTIVE归档进程卡住或归档目录满检查归档进程,清理归档空间
ORA-00350: 需要归档日志组未归档就要被覆盖检查归档进程,增加日志组数量
ORA-00312: 日志文件不可访问文件损坏或路径错误使用CLEAR LOGFILE重建
日志切换过于频繁日志文件太小增大日志文件 SIZE
添加成员报错 ORA-00301文件已存在删除旧文件或换路径
http://www.jsqmd.com/news/488096/

相关文章:

  • FaceRecon-3D效果分享:100+真实用户自拍生成的高质量UV纹理作品集
  • i茅台智能预约解决方案:自动化预约技术全解析
  • 旧Mac重生:零门槛掌握OpenCore Legacy Patcher制作USB启动盘教程
  • YOLO X Layout场景应用:自动整理会议纪要,提升办公效率
  • 智能体(Agent)是什么?2026年AI助理的入门指南
  • Qwen3-VL-8B系统集成案例:与Dify平台结合打造零代码多模态AI应用
  • 【会议征稿通知】2026年3月计算机领域EI会议最后征稿:前沿领域高含金量会议,双一流高校主办,7天速录,IEEE出版,全学科EI会议,助力人才引进/科研绩效/学术提升/保研加分/项目结题/职称评审!
  • rclone保姆级教程:从安装到实战,轻松搞定云存储同步(含常见错误解决方案)
  • Redis基础数据结构
  • 国信 iQuant 自动国债逆回购实战:Python 自动化闲钱理财
  • 十五五具身智能规划纲要解读:政策领航打造中国具身未来
  • 语音识别模型Qwen3-ASR-1.7B:一键部署实现实时字幕生成
  • edusrc某学院联奕系统漏洞通过常规测试手段拿下9rank
  • 统信UOS系统故障排查:从黑屏报错到硬盘修复的完整指南
  • 5-10两数之和
  • IO-Link物理层深度解析:从三线连接到信号迟滞的硬件基石
  • 14,文件的基础操作
  • 一文彻底搞懂 cloud-init:从初始化流程到 cloud.cfg 深度解析
  • 护眼灯最好的牌子是哪个?2026年护眼台灯选购全指南|深度点评书客、柏曼、霍尼韦尔、飞利浦等热门型号,揭开“越用越累眼”的真相,买前一定要看!
  • 计算机毕业设计springboot基于Vue的不动产登记系统 基于SpringBoot与Vue.js的房地产产权在线管理平台 采用前后端分离架构的房屋资产数字化登记系统
  • flutter打包ipad 并上传Appstore
  • Nacos配置监听避坑指南:configService.addListener的5个常见问题及解决方案
  • 3大创新解决90%下载难题:Adobe Downloader让macOS用户轻松获取Adobe软件
  • 嵌入式通信协议(学习)
  • YimMenu:GTA V增强工具完全指南
  • OpenWRT+SFTP保姆级教程:5分钟搞定远程文件安全传输(含cpolar配置)
  • 攻克动态页面转PDF难题:wkhtmltopdf的JavaScript交互实战策略
  • 比迪丽AI绘画Java面试实战:AIGC相关考点与解决方案
  • 免费毕业答辩PPT模板|全专业适配,新手可快速生成
  • 用 Nano Banana 生成高设计感区位图(附网站与提示词)