达梦数据库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文件删除后处理步骤
-
确保无写库操作,可以把数据库服务器网线拔掉,踢出所有链接。
可以使用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 -
查看数据库服务进程pid,数据库服务进程pid为15727

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

-
cp /proc/15727/fd/11 /dbdata/dmdata/DAMENG/DAMENG01.log
cp /proc/15727/fd/12 /dbdata/dmdata/DAMENG/DAMENG02.log
11和12是链接号,第三步可以查看到。(使用dmdba用户)

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

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

三、删除后写入数据处理步骤
-
删除REDO文件后有可能不是第一时间发现,还会继续运行
-
正在运行时,进行REDO文件删除,同时保持运行,到REDO日志文件进行切换。

删除REDO文件

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

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

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


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

四、删除不活动的REDO日志重启数据库是否正常
-
删除不活动的REDO日志文件
查看REDO日志状态

删除不活动的REDO日志文件

-
进行数据库重启验证
已无法正常启动数据库。


五、建议
REDO日志(重做日志)是数据库正在使用的日志文件,因此被称为联机日志文件,主要用于数据库的备份与恢复,对于数据库是至关重要的。达梦数据库中至少是有两个日志文件,默认为DAMENG01.log和DAMENG02.log,这两个文件循环使用。
但是有时候用户看到文件空间不足时,查看会认为.log文件为两个没有用的日志文件。建议用户对于数据文件存储路径下的文件,不要进行任何操作,数据库运行日志出厂都会配置在与数据库文件路径不一致的目录下。同时也要做好定时备份数据库的工作。
六、总结
数据库运行的REDO日志文件被删除时,尽量不做任何操作,第一时间联系数据库厂家进行补救,若应用一直在进行数据库操作时如入库,查询等,数据库会正常刷新检查点,REDO日志文件虽然已删除但是还会进行循环使用。
误删REDO文件还能进行补救的要点是删除REDO日志文件后,数据库未进行重启操作(可以查看第四章,进行过重启操作无法补救),虽然数据库REDO日志文件已经删除,但是数据库进程还在保持运行,进行补救工作前,先将数据库所有的连接断开,保证数据库中无活跃事务,从而能够快速恢复。
注意:数据库REDO日志文件虽然是.log文件,但是并不是一种可以删除的一种日志文件,而是数据库运行的重要文件,对于数据库是至关重要的。它们用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复,不能进行删除操作。对于数据库系统来说,任何删除操作为高风险操作,所有删除操作执行前,都应该尽量联系数据库厂家人员后再操作。
文章介绍了在误删达梦数据库的REDO日志后,如何在数据库进程未停止的情况下进行恢复,包括断开所有连接,复制内存中的日志到磁盘,然后重启数据库以确保正常运行。同时强调了REDO日志的重要性以及避免误操作的建议。
976

被折叠的 条评论
为什么被折叠?



