千家信息网

达梦数据库DM7数据文件误删除恢复

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,在DM7中,有两个与数据文件恢复有关的特性。数据文件失效检查在DM.ini中参数FIL_CHECK_INTERVAL的值指定dm7系统检查数据文件还存在的时间间隔,设为0表示不检查。也可通过系统过程S
千家信息网最后更新 2024年09月22日达梦数据库DM7数据文件误删除恢复

在DM7中,有两个与数据文件恢复有关的特性。

数据文件失效检查

在DM.ini中参数FIL_CHECK_INTERVAL的值指定dm7系统检查数据文件还存在的时间间隔,设为0表示不检查。

也可通过系统过程SP_FILE_SYS_CHECK()进行手工检查。

数据文件失效恢复

Linux系统中被删除的文件,在没有重启的情况下,文件句柄还没有关闭,可以在/proc/ /fd 中找到其对应的文件副本。

利用此办法,结合os命令,在DM7中可以通过调用系统过程SP_TABLESPACE_PREPARE_RECOVER

和SP_TABLESPACE_RECOVER来恢复被误删除的数据文件。

1、准备测试环境

SQL> create tablespace cc datafile'/dmdata/data/DM01/cc01.dbf' size 100,'/dmdata/data/DM01/cc02.dbf' size 100;

操作已执行

SQL> select tablespace_name, file_name, status from dba_data_files order by 1;

行号 TABLESPACE_NAME FILE_NAME STATUS

---------- --------------- ------------------------------ ---------

1 BOOKSHOP /dmdata/data/DM01/BOOKSHOP.DBF AVAILABLE

2 CC /dmdata/data/DM01/cc02.dbf AVAILABLE

3 CC /dmdata/data/DM01/cc01.dbf AVAILABLE

4 DMHR /dmdata/data/DM01/DMHR.DBF AVAILABLE

5 MAIN /dmdata/data/DM01/MAIN.DBF AVAILABLE

6 ROLL /dmdata/data/DM01/ROLL.DBF AVAILABLE

7 SYSTEM /dmdata/data/DM01/SYSTEM.DBF AVAILABLE

8 TEMP /dmdata/data/DM01/TEMP.DBF AVAILABLE

8 rows got

SQL> create tablespace cc datafile'/dmdata/data/DM01/cc01.dbf' size 100,'/dmdata/data/DM01/cc02.dbf' size 100;

操作已执行

已用时间: 24.231(毫秒). 执行号:6.

SQL> create user test identified by dameng123 default tablespace cc;

操作已执行

已用时间: 10.973(毫秒). 执行号:7.

SQL> grant dba,resource to test;

操作已执行

已用时间: 7.763(毫秒). 执行号:8.

SQL> conn test/dameng123

SQL> create table t1 as select * from dba_data_files;

操作已执行

已用时间: 19.126(毫秒). 执行号:9.

SQL> select count(*) from t1;

行号 COUNT(*)

---------- --------------------

1 8

2、模拟删除文件

[dmdba@localhost ~]$ rm -rf /dmdata/data/DM01/cc01.dbf

SQL> select count(*) from t1;

行号 COUNT(*)

---------- --------------------

1 8

已用时间: 0.553(毫秒). 执行号:12.

执行失效检查系统进程

SQL> call SP_FILE_SYS_CHECK();

DMSQL 过程已成功完成

已用时间: 1.458(毫秒). 执行号:13.

SQL> select count(*) from t1;

select count(*) from t1;

[-3430]:表空间[CC]中文件[/dmdata/data/DM01/cc01.dbf]已被删除.

已用时间: 0.230(毫秒). 执行号:0


3、恢复数据文件

执行准备恢复过程

SQL> call sp_tablespace_prepare_recover('CC');

DMSQL 过程已成功完成

已用时间: 0.351(毫秒). 执行号:15.

查看DM7进程ID

[dmdba@localhost ~]$ ps -ef|grep dmserver

dmdba 2304 1 0 08:25 ? 00:00:02 /dm7/bin/dmserver /dmdata/data/DM01/dm.ini -noconsole

dmdba 2885 2817 0 08:35 pts/0 00:00:00 grep dmserver

查看被删除文件,以下可知对应的文件号是14

[dmdba@localhost ~]$ ls /proc/2304/fd -l

总用量 0

lr-x------ 1 dmdba dinstall 64 11月 16 08:36 0 -> /dev/null

l-wx------ 1 dmdba dinstall 64 11月 16 08:36 1 -> /dm7/log/S98DmServiceTEST01.log

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 10 -> /dmdata/data/DM01/BOOKSHOP.DBF

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 11 -> /dmdata/data/DM01/DMHR.DBF

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 12 -> /dmdata/data/DM01/ROLL.DBF

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 13 -> /dmdata/data/DM01/MAIN.DBF

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 14 -> /dmdata/data/DM01/cc01.dbf (deleted)

lrwx------ 1 dmdba dinstall 64 11月 16 08:36 15 -> /dmdata/arch/ARCHIVE_LOCAL1_20191116082533913_0.log

........以下省略

复制文件到原来的位置

[dmdba@localhost ~]$ cp /proc/2304/fd/14 /dmdata/data/DM01/cc01.dbf

执行恢复过程

SQL> call sp_tablespace_recover('CC');

DMSQL 过程已成功完成

已用时间: 9.973(毫秒). 执行号:16.

再次执行失效检查系统进程,验证恢复,无报错

SQL> call SP_FILE_SYS_CHECK();

DMSQL 过程已成功完成

已用时间: 0.182(毫秒). 执行号:19.

SQL> select count(*) from t1;

行号 COUNT(*)

---------- --------------------

1 8

已用时间: 0.150(毫秒). 执行号:17.

SQL> select tablespace_name, file_name, status from dba_data_files order by 1;

行号 TABLESPACE_NAME FILE_NAME STATUS

---------- --------------- ------------------------------ ---------

1 BOOKSHOP /dmdata/data/DM01/BOOKSHOP.DBF AVAILABLE

2 CC /dmdata/data/DM01/cc02.dbf AVAILABLE

3 CC /dmdata/data/DM01/cc01.dbf AVAILABLE

4 DMHR /dmdata/data/DM01/DMHR.DBF AVAILABLE

5 MAIN /dmdata/data/DM01/MAIN.DBF AVAILABLE

6 ROLL /dmdata/data/DM01/ROLL.DBF AVAILABLE

7 SYSTEM /dmdata/data/DM01/SYSTEM.DBF AVAILABLE

8 TEMP /dmdata/data/DM01/TEMP.DBF AVAILABLE

8 rows got

已用时间: 47.629(毫秒). 执行号:18.

误删除数据文件恢复完成。

0