达梦数据库表空间误删恢复实操
- 1.表空间失效文件检查
- 2.表空间失效文件恢复准备
- 3.表空间失效文件恢复
- 4.表空间失效文件恢复实操
1.表空间失效文件检查
表空间恢复失效文件的检查。
语法格式
SP_FILE_SYS_CHECK ();
语句功能
在 LINUX 操作系统下,检查是否有数据文件被删除。
使用说明
该过程只在 LINUX 下有效。
举例说明:
SP_FILE_SYS_CHECK ();
2.表空间失效文件恢复准备
表空间恢复失效文件的准备。
语法格式
SP_TABLESPACE_PREPARE_RECOVER(<表空间名>);
语句功能
在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,该过程完成失效文件恢复的准备工作。
使用说明
该过程只在 LINUX 下有效。
举例说明
SP_TABLESPACE_PREPARE_RECOVER('MAIN');
3.表空间失效文件恢复
表空间失效文件的恢复。
语法格式
SP_TABLESPACE_RECOVER(<表空间名>);
语句功能
在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,在调用了恢复准备的 SP_TABLESPACE_PREPARE_RECOVER 及在 OS 系统内完成了数据文件的复制后,调用该过程完成文件的恢复工作。
使用说明
- 该过程只在 LINUX 下有效;
- 在 SP_TABLESPACE_PREPARE_RECOVER 及在 OS 系统内完成了数据文件的复制后调用。
举例说明
SP_TABLESPACE_RECOVER('MAIN');
4.表空间失效文件恢复实操
1)创建表空间
create tablespace "TS1" datafile '/home/dmdbms/data/DAMENG/TS1.dbf' size 128 autoextend on maxsize 16777215, '/home/dmdbms/data/DAMENG/TS1_1.DBF' size 128 autoextend on maxsize 16777215 CACHE = NORMAL;
2)模拟表空间被删除
先备份好表空间
cp TS1.dbf /home/TS1.dbf
再删除表空间
3)查看表空间状态
call sp_file_sys_check();
select FILE_NAME,TABLESPACE_NAME,STATUS FROM dba_data_files;
状态为INVALID
4)通过操作系统的 ps 命令找到当前dmserver 的 PID:
ps –ef|grep dmserver;
使用操作系统 ls 命令查看被删除文件对应的副本: ls /proc/ < PID >/fd –l
会发现被删除的文件后有(deleted)字样;
ls /proc/6504/fd -l
5)调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(‘TS1’)准备
进行恢复;
6)使用操作系统的 cp 命令将文件复制到原位置:
cp /home/TS1.dbf /home/dmdbms/data/DAMENG/TS1.dbf
7) 复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失
效文件的恢复。
注意,要保证数据文件正确修复,需要保证在 SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。