如何利用DM7特性去快速恢复数据文件

小编今天给大家来一篇达梦数据库的运维日记:在不小心误删DM7数据文件后,如何利用DM7特性去快速恢复数据文件。

01

概念说明

在达梦数据库中,有两个与数据文件恢复相关的重要特性。

1)表空间文件失效检查

在Liunx系统中,由于被进程打开的文件仍可以在OS系统中被删除,因此DM7存在数据文件被误删的风险。

表空间文件失效检查,就是能够以自动或手动的方式检测出被删除的数据文件,并立刻停止相关表空间的使用。

在参数文件dm.ini中指定 FIL_CHECK_INTERVAL 值,可以设置自动检查数据文件是否存在的时间间隔。也可以使用手动方式,通过执行系统过程SP_FILE_SYS_CHECK()去检查数据文件是否存在。

DM7系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内数据文件被删除。

2)表空间失效文件恢复。

linux系统中被删除的文件,只要其句柄没有被关闭,那可以在/proc//fd中找到其对应的文件副本。利用此办法,结合DM7系统过程,就可以做到快速恢复被误删除的数据文件,步骤如下:

1、首先我们先调用达梦数据库自带的系统过程 SP_TABLESPACE_PREPARE_RECOVER (tablespace_name),准备恢复。

2、通过操作系统ps命令找到当前dmserver的PID:ps –ef|grep dmserver

3、使用操作系统ls命令查看被删除文件对应的副本:ls /proc// fd –l

4、使用操作系统cp命令将文件复制到原位置。

5、最后一步,复制完成后,我们调用系统过程SP_TABLESPACE_RECOVER(ts_name)完成失效文件的恢复。

02

恢复示例

下面我们就在测试环境下进行一次恢复演练。

1)准备测试环境

2) OS模拟删除数据文件

这里删除表空间BIGDATA的数据文件BIGDATA02.DBF

DM7中再次执行刚才的查询语句,并没有报错,这是因为DM7缺省不启动表空间文件失效检查

手动执行系统过程SP_FILE_SYS_CHECK(),进行手工表空间失效检查,再次执行查询语句,报错提示文件已被删除。

3)恢复数据文件

首先我们调用达梦数据库自带的系统过程 SP_TABLESPACE_PREPARE_RECOVER (tablespace_name) 准备恢复。

然后,查找DM7进程ID和被删除的文件。

以上可以看到,达梦进程下的第49号文件被标记为DELETED状态。

再将文件复制到原来的位置。

然后我们调用达梦数据库自带的系统过程SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。

最后验证恢复结果。

03

参考文档

DM7系统管理员手册 — 第15章数据库布局和存储管理 — 15.1管理表空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值