达梦数据库REDO日志误删解决方法

文章介绍了在误删达梦数据库的REDO日志后,如何在数据库进程未停止的情况下进行恢复,包括断开所有连接,复制内存中的日志到磁盘,然后重启数据库以确保正常运行。同时强调了REDO日志的重要性以及避免误操作的建议。

达梦数据库REDO日志误删解决方法

日常处理用户问题时,经常会遇到用户因为清理日志时,误认为DAMENG01.log和DAMENG02.log这两个文件是无关紧要的log日志文件,从而将数据库的REDO日志给删除。下面就提供一个解决方法,但是此方法必须保证数据库未进行停止操作,数据库进程一直存在。

一、搭建测试环境

实验环境如下:

操作系统版本:Red Hat Enterprise Linux Server release 6.5

数据库版本:V7 03117834100-20220302-158178-10047

准备工作:初始化实例后,启动数据库服务。数据库软件安装路径/home/dmdba/dm/dmdbms,数据文件路径/dbdata/dmdata/DAMENG

数据库运行正常,删除REDO日志。

在这里插入图片描述

二、REDO文件删除后处理步骤

  1. 确保无写库操作,可以把数据库服务器网线拔掉,踢出所有链接。

    可以使用sql语句踢出所有数据库连接

     begin
     for rec in
     (
             select sess_id from v$sessions where sess_id !=sessid
     )
     loop
             sp_close_session(rec.sess_id);
     end loop;
     sp_close_session(sessid); 
     end
    
  2. 查看数据库服务进程pid,数据库服务进程pid为15727

在这里插入图片描述

  1. ls -l /proc/15727/fd,可以看到REDO日志DAMENG01.log和DAMENG02.log后有(deleted)标签

在这里插入图片描述

  1. cp /proc/15727/fd/11 /dbdata/dmdata/DAMENG/DAMENG01.log

    cp /proc/15727/fd/12 /dbdata/dmdata/DAMENG/DAMENG02.log

    11和12是链接号,第三步可以查看到。(使用dmdba用户)

在这里插入图片描述

  1. 重启数据库服务(重启前可做个全库备份)

在这里插入图片描述

  1. 连接数据库,进行验证,执行sql能正常执行,无报错。

    在这里插入图片描述

三、删除后写入数据处理步骤

  1. 删除REDO文件后有可能不是第一时间发现,还会继续运行

  2. 正在运行时,进行REDO文件删除,同时保持运行,到REDO日志文件进行切换。

    在这里插入图片描述

    删除REDO文件

    在这里插入图片描述

    继续进行入库测试,到REDO文件切换

    在这里插入图片描述

  3. REDO文件切换后查看数据库还是保持正常能进行入库、查询等。

    在这里插入图片描述

    REDO文件反复切换数据库也正常运行

在这里插入图片描述

在这里插入图片描述

  1. 还原REDO文件(该步骤可参考第二章第一步到第五步),数据库重启,进行验证操作。

    在这里插入图片描述

四、删除不活动的REDO日志重启数据库是否正常

  1. 删除不活动的REDO日志文件

    查看REDO日志状态

    在这里插入图片描述

    删除不活动的REDO日志文件

    在这里插入图片描述

  2. 进行数据库重启验证
    已无法正常启动数据库。
    在这里插入图片描述

    在这里插入图片描述

五、建议

REDO日志(重做日志)是数据库正在使用的日志文件,因此被称为联机日志文件,主要用于数据库的备份与恢复,对于数据库是至关重要的。达梦数据库中至少是有两个日志文件,默认为DAMENG01.log和DAMENG02.log,这两个文件循环使用。

但是有时候用户看到文件空间不足时,查看会认为.log文件为两个没有用的日志文件。建议用户对于数据文件存储路径下的文件,不要进行任何操作,数据库运行日志出厂都会配置在与数据库文件路径不一致的目录下。同时也要做好定时备份数据库的工作。

六、总结

数据库运行的REDO日志文件被删除时,尽量不做任何操作,第一时间联系数据库厂家进行补救,若应用一直在进行数据库操作时如入库,查询等,数据库会正常刷新检查点,REDO日志文件虽然已删除但是还会进行循环使用。

误删REDO文件还能进行补救的要点是删除REDO日志文件后,数据库未进行重启操作(可以查看第四章,进行过重启操作无法补救),虽然数据库REDO日志文件已经删除,但是数据库进程还在保持运行,进行补救工作前,先将数据库所有的连接断开,保证数据库中无活跃事务,从而能够快速恢复。

注意:数据库REDO日志文件虽然是.log文件,但是并不是一种可以删除的一种日志文件,而是数据库运行的重要文件,对于数据库是至关重要的。它们用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复,不能进行删除操作。对于数据库系统来说,任何删除操作为高风险操作,所有删除操作执行前,都应该尽量联系数据库厂家人员后再操作。

<think>好的,我现在需要处理用户关于达梦数据库redo日志的配置、管理和故障排除的问题。首先,我得回忆一下达梦数据库的相关知识,尤其是redo日志的部分。根据用户提供的引用内容,我需要结合这些信息来组织回答。 首先,用户提到了几个引用,其中引用[3]提到了归档日志的配置,比如设置归档路径、文件大小等。这可能和redo日志的管理有关联,因为归档日志通常和redo日志有联系,特别是在数据库恢复和备份时。需要确认达梦数据库redo日志和归档日志的关系,可能归档日志redo日志的备份或者延伸。 接下来,引用[2]中提到了空间不足的问题,用户检查了磁盘空间并删除了旧的归档日志,但问题依旧存在。这说明在故障排除时,不仅要检查空间,还要考虑其他因素,比如日志文件损坏或配置错误。可能需要指导用户如何检查redo日志的状态,或者如何重新配置日志文件。 引用[4]涉及DMDSC主控节点的连接配置,这可能与集群环境下的redo日志管理有关,比如在分布式系统中redo日志如何同步或处理。不过用户的问题集中在单机的redo日志,所以可能暂时不涉及集群配置,但需要留意是否有相关影响。 然后,根据用户的问题,分为配置、管理和故障排除三个部分。配置方面,需要说明如何设置redo日志的大小、组数、路径等参数。管理部分可能包括日志切换、归档设置、监控日志状态等。故障排除则需要列出常见问题,如空间不足、日志损坏、性能问题,以及对应的解决方法。 需要确保回答中的技术术语准确,比如达梦数据库中的redo日志是否称为“联机重做日志”或者有其他术语。同时,引用提供的示例中提到了归档日志的配置命令,如`alter database add archivelog`,这可能和redo日志的归档设置有关,因此需要解释如何配置归档以及其对redo日志的影响。 另外,用户可能混淆了redo日志和归档日志,需要明确两者的区别:redo日志是实时记录数据库变化的文件,而归档日志是在redo日志切换后被备份的版本。在达梦数据库中,是否启用归档模式会影响redo日志的处理方式,比如是否自动归档,归档路径的设置等。 在故障排除部分,引用[2]中的案例显示即使释放了空间,问题仍未解决,可能涉及到日志文件的状态或数据库进程的问题。可能需要指导用户如何检查日志状态,使用达梦提供的工具或SQL命令来验证redo日志的完整性,或者如何重新启动数据库服务以恢复。 最后,生成的相关问题需要围绕redo日志的扩展话题,如性能优化、与备份恢复的关系、参数调整等,确保问题有针对性,帮助用户深入理解。</think>### 达梦数据库 Redo日志的配置、管理与故障排除 #### 一、Redo日志的配置 1. **基本概念** Redo日志(重做日志)用于记录数据库的所有物理变更操作,确保事务的持久性和崩溃恢复能力。在达梦数据库中,Redo日志通过联机日志文件(`*.log`)存储,通常以日志组形式管理。 2. **配置参数** - **日志文件大小与数量** 通过参数`RLOG_FILE_SIZE`和`RLOG_FILE_NUM`控制单个日志文件大小(默认为256MB)和日志组数量(默认为8组)。 ```sql -- 示例:修改日志文件大小为512MB,日志组数为16 SP_SET_PARA_VALUE(1, 'RLOG_FILE_SIZE', 512); SP_SET_PARA_VALUE(1, 'RLOG_FILE_NUM', 16); ``` - **归档模式** Redo日志在归档模式下会生成归档日志(引用[3])。启用归档需执行以下命令: ```sql ALTER DATABASE MOUNT; ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=128'; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; ``` #### 二、Redo日志的管理 1. **日志切换与归档** - 手动切换日志: ```sql ALTER SYSTEM SWITCH LOGFILE; ``` - 监控日志状态: 通过视图`V$RLOG`查看当前日志序列号、归档状态等信息。 2. **空间管理** - 确保日志文件存储路径(如`/dmlog`)有足够空间,避免日志写满导致数据库挂起(引用[2])。 - 归档日志需定期清理,可通过脚本或工具(如`dmrachk`)管理。 #### 三、故障排除 1. **常见问题与解决** - **日志空间不足** - **现象**:数据库挂起,报错“日志文件已满”。 - **解决**: 1. 检查磁盘空间:`df -h`(引用[2])。 2. 手动切换日志或扩展日志组: ```sql ALTER DATABASE ADD LOGFILE '/dmlog/new_log.log' SIZE 512; ``` - **日志损坏** - **现象**:数据库启动失败,提示日志文件校验错误。 - **解决**: 1. 使用`dmrman`工具进行日志恢复: ```bash dmrman CTLSTMT="RESTORE DATABASE '/dmdata/DAMENG/dm.ctl' FROM LOGS" ``` - **归档失败** - **现象**:归档日志未生成,事务阻塞。 - **解决**: 1. 检查归档路径权限和空间。 2. 确认归档参数配置(引用[3])。 2. **性能优化** - 增大日志文件大小以减少频繁切换。 - 分离日志文件与数据文件的存储路径,避免I/O竞争。 #### 引用说明 - 关于归档配置与空间管理,可参考达梦官方建议(引用[3])。 - 日志空间不足的排查方法(引用[2])适用于Redo日志的类似场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值