Linux下数据库文件被误删后怎么找回

29次阅读
没有评论

共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要讲解了“Linux 下数据库文件被误删后怎么找回”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Linux 下数据库文件被误删后怎么找回”吧!

Linux 平台下数据库文件被误删后如何及时得知并找回

我们知道在 windows 平台下,一旦文件在程序中打开,则不能被删除,所以不存在误删数据文件的情况,如下图所示:

但是在 LINUX 操作系统中,被进程打开的文件仍可以被删除,因此存在 DM7 数据文件可能被误删的风险。并且,在默认情况下,若数据文件被删除,数据库是不会返回任何报错信息的,这样无形中就增大了数据丢失的风险。因此,本篇文章主要讲两个方面:

1. 在表空间文件被误删后,如何使数据库及时反馈出来。

2. 在表空间文件被误删后,如何进行数据的恢复。

1、在表空间文件被误删后,如何使数据库反馈出来

1.1 首先建一个测试表。

create table test (id int);

insert into test values(1);

1.2 删除数据文件 MAIN.DBF,此时去查询 test 表,发现一切正常,数据库没有任何报错。

1.3 进行相关设置,使数据库可以检测出文件被删除,有以下两种方式:调用系统过程 SP_FILE_SYS_CHECK()来手动检查,数据库重启后失效;设置参数 FIL_CHECK_INTERVAL 大于 0 即可(单位是 s),若使其永久生效,则需要将参数添加进 dm.ini 文件中。

sp_set_para_value(1, FIL_CHECK_INTERVAL ,3);

1.4 设置成功后,再次查询 test 表,即报错:表空间 [MAIN] 中文件 [/opt/dmdbms/data/DAMENG/MAIN.DBF] 已被删除

进行以上设置后,若数据文件被删除,我们可以及时得知,下面来讲如何进行数据恢复。

2、在表空间文件被误删后,如何进行数据的恢复

联机恢复:

2.1 联机恢复,此方法只适用于被删除的是用户数据文件(以 MAIN.DBF 为例):

首先调用以下系统过程进行恢复的准备工作:

call SP_TABLESPACE_PREPARE_RECOVER(MAIN

2.2 在服务器终端执行 ps ­ef |grepdms,获取数据库服务的 pid 为 12130

2.3 接下来,就用 ls 命令查看被删除文件对应的副本:ls /proc/12130/fd­l,如下图,在 MAIN.DBF 文件 后,有个 delete,表示已被删除掉。

 

2.4 将上述 MAIN.DBF 文件复制到原数据文件路径下即可:

cp /proc/12130/fd/11 /opt/dmdbms/data/DAMENG/MAIN.DBF

2.5 复制成功后,执行以下语句完成表空间失效文件的恢复。

call SP_TABLESPACE_RECOVER(MAIN

2.6 再次查询 test 表,可正常执行,并得到正确数据。

为什么联机恢复只适用于恢复被删除的用户数据文件呢,因为当被删除的是 ROLL.DBF、TEMP.DBF 或 SYSTEM.DBF 文件时,数据库一旦检测到它们其中任何一个文件不在了,就会直接挂掉,所以根本没有机会进行联机恢复的操作。此时,只能利用备份文件和归档文件进行还原,并因为数据库属于异常退出,有部分 redo 日志还没来得及写进归档中,导致归档不全,无法恢复到数据库异常退出前的状态。因此,在进行还原前,需进行归档修复(归档修复会扫描联机日志文件,将那些已经写入联机日志文件、但还没有写入到归档日志文件的 REDO 日志,重新写入到归档日志文件,详见手册 DM7_Backup_And_Recovery.pdf)。

脱机恢复:

在利用备份进行还原时,根据被删除文件类型,也分为以下两种情况:

若被删除的是 ROLL.DBF 或 TEMP.DBF,通过以下过程,即可完整恢复数据库。

1.  归档修复:repair archivelog database /opt/dmdbms/data/DAMENG/dm.ini

 

2.  利用备份加归档,进行还原:

./dmrestore ini_path=/opt/dmdbms/data/TEST/dm.ini file=/opt/dmdbms/data/TEST/bak/test.bak archive_dir=/opt/dmdbms/data/TEST/arch/

 

2.1 若被删除的是 SYSTEM.DBF 文件,则无法完整恢复数据库。

SYSTEM.DBF 被删除后,无法修复归档,所以会导致部分数据丢失。

2.2  SYSTEM.DBF 被删除后,无法在原库上直接进行还原,必须新初始化一个库才可以。

感谢各位的阅读,以上就是“Linux 下数据库文件被误删后怎么找回”的内容了,经过本文的学习后,相信大家对 Linux 下数据库文件被误删后怎么找回这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2014字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)