暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
达梦干货分享之linux平台下数据文件被误删后,如何得知并进行恢复
598
4页
12次
2020-04-06
免费下载
干货分享之 linux 平台下数据文件被误删后,如何及时得知并进行恢复
我们知道在 windows 平台下,一旦文件在程序中打开,则不能被删除,所以不存在误删数据文件的情
况,如下图所示。
但是 LINUX 作系统中被进程打开的文件仍可以被删除,因此存 DM7 数据文件可能被误删的
风险。并且,在默认情况下,若数据文件被删除,数据库是不会返回任何报错信息的,这样无形中就增
数据丢失的风险。因此,本篇文章主要讲两个方面:
1.在表空间文件被误删后,如何使数据库及时反馈出来。
2.
在表空间文件被误删后,如何进行数据的恢复。
注:本文实验环境的 DM7 数据库版本为:
DM Database Server x64 V7.1.6.16-Build(2017.10.10-85437)ENT
一、在表空间文件被误删后,如何使数据库反馈出来。
1.首先建一个测试表
1
2
create table test (id int );
insert into test values(1);
2.删除数据文 MAIN.DBF,此时去查 test 表,发现一切正常,数据库没有任何报错。
3.进行相关设置,使数据库可以检测出文件被删除,有以下两种方式调用系统过
SP_FILE_SYS_CHECK()来手动检查,数据库重启后失效; 设置参数 FIL_CHECK_INTERVAL 大于 0
即可(单位 s),若使其永久生效,则需要将参数添加进 dm.ini 文件中。
1
sp_set_para_value(1,'FIL_CHECK_INTERVAL',3);
4.设置成功后,再次查询 test ,即报错 表空间[MAIN]中文件
[/opt/dmdbms/data/DAMENG/MAIN.DBF]已被删除
进行以上设置后,若数据文件被删除,我们可以及时得知,下面来讲如何进行数据恢复。
二、在表空间文件被误删后,如何进行数据的恢复。
数据恢复分两种方法:联机恢复和脱机恢复
2.1
联机恢复,此方法只适用于被删除的是用户数据文件(以
MAIN.DBF
为例):
1.首先调用以下系统过程进行恢复的准备工作:
1
call SP_TABLESPACE_PREPARE_RECOVER('MAIN');
2.在服务器终端执行 ps ef |grep dms,获取数据库服务的 pid 12130
3.接下来,就 ls 命令查看被删除文件对应的副本ls /proc/12130/fd l,如下图, MAIN.DBF 文件
后,有个 delete,表示已被删除掉。
4.将上述 MAIN.DBF 文件复制到原数据文件路径下即可:
1
cp /proc/12130/fd/11 /opt/dmdbms/data/DAMENG/MAIN.DBF
5.复制成功后,执行以下语句完成表空间失效文件的恢复。
1
call SP_TABLESPACE_RECOVER('MAIN');
6.再次查询 test 表,可正常执行,并得到正确数据。
为什么联机恢复只适用于恢复被删除的用户数据文件呢, 因为当被删除的是 ROLL.DBFTEMP.DBF
SYSTEM.DBF 件时,数据库一旦测到它们其中任何一个文件不在了,就会直接挂掉,所以根本没有
机会进行联机恢复的操作。此时,只能利用备份文件和归档文件进行还原,并因为数据库属于异常退出,
部分 redo 日志还没来得及写进归档中,导致归档不全,无法恢复到数据库异常退出前的状态。因此,在
行还原前,需进行归档修复(归档修复会扫描联机日志文件,将那些已经写入联机日志文件、但还没有写入
到归档日志文件的 REDO 日志,重新写入到归档日志文件,详见手册 DM7_Backup_And_Recovery.pdf)。
2.2 脱机恢复,即备份还原机制
在利用备份进行还原时,根据被删除文件类型,也分为以下两种情况:
2.2.1 若被删除的 ROLL.DBF TEMP.DBF,通过以下过程,即可完整恢复数据库。
1.归档修复:
1
repair archivelog database '/opt/dmdbms/data/DAMENG/dm.ini';
of 4
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜