达梦DM8表空间数据文件误删除恢复

本文介绍了达梦数据库DM8中表空间数据文件被误删除后的三种恢复方法:通过操作系统恢复、通过dmrman恢复及通过DM控制台工具恢复。详细步骤包括创建表空间、备份与恢复等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

达梦数据库DM8表空间数据文件被人为误删除恢复方法

1. 创建示例表空间
create tablespace TBS_DATA_N datafile '/dm8/dmdbms/data/dm02/TBS_DATA_01.DBF' size 128 autoextend on next 4 maxsize 1024;

alter tablespace TBS_DATA_N add datafile  '/dm8/dmdbms/data/dm02/TBS_DATA_02.DBF' size 128;
alter tablespace TBS_DATA_N add datafile  '/dm8/dmdbms/data/dm02/TBS_DATA_03.DBF' size 128 autoextend on next 4 maxsize 1024;

SQL> select tablespace_name,file_name,autoextensible from dba_data_files;
行号     TABLESPACE_NAME FILE_NAME                              AUTOEXTENSIBLE
---------- --------------- -------------------------------------- --------------
1          SYSTEM          /dm8/dmdbms/data/dm02/SYSTEM.DBF       YES
2          TBS_DATA1       /dm8/dmdbms/data/dm02/TBS_DATA1_01.DBF YES
3          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_03.DBF  YES
4          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_02.DBF  YES
5          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_01.DBF  YES
6          MAIN            /dm8/dmdbms/data/dm02/MAIN.DBF         YES
7          TEMP            /dm8/dmdbms/data/dm02/TEMP.DBF         YES
8          ROLL            /dm8/dmdbms/data/dm02/ROLL.DBF         YES
8 rows got
已用时间: 1.456(毫秒). 执行号:1105.

2. 表空间的备份
SQL> backup tablespace TBS_DATA_N backupset 'tablespace_TBS_DATA_N_bak_01';

3. 表空间恢复

方法1:通过操作系统恢复
1)创建一张表
create table tb1 tablespace TBS_DATA_N  as select * from dba_users;
SQL> create table tb1 tablespace TBS_DATA_N  as select * from dba_users;
操作已执行
已用时间: 14.160(毫秒). 执行号:1121.
SQL> select username,account_status from tb1;
行号     USERNAME     ACCOUNT_STATUS
---------- ------------ --------------
1          SYSAUDITOR   OPEN
2          SYSSSO       OPEN
3          SYSDBA       OPEN
4          DMETL_SAMPLE OPEN
5          SYS          OPEN
已用时间: 0.436(毫秒). 执行号:1122.
SQL> 

2)删除表空间的数据文件

--对数据文件有效性进行验证:
SQL> sp_file_sys_check();
-- 再次查询tb1表报错数据文件被删除
SQL> select username,account_status from tb1;

3)通过 linux 句柄进行删除文件恢复。
SQL> SP_TABLESPACE_PREPARE_RECOVER('TBS_DATA_N');
DMSQL 过程已成功完成
已用时间: 0.486(毫秒). 执行号:1126.
SQL> exit

--- 通过ps命令找到进程号17292,在/proc中找到对应的被删除的数据文件

--- 操作系统层面cp 被删除的文件至 原目录
cp /proc/17292/fd/48 /dm8/dmdbms/data/dm02/datafile/TBS_DATA_02.DBF
cp /proc/17292/fd/49 /dm8/dmdbms/data/dm02/TBS_DATA_03.DBF

--- recover表空间并检查数据文件一致性
SQL> SP_TABLESPACE_RECOVER('TBS_DATA_N');
SQL> SP_FILE_SYS_CHECK();
--- 表tb1的信息可以查到了

---检查操作系统层面数据文件DBF已经恢复

 

方法2:通过dmrman进行恢复
1)关闭数据服务
[dmdba@dmdb ]$ /dm8/dmdbms/bin/DmServicedm02 stop
Stopping DmServicedm02:                                    [ OK ]
[dmdba@dmdb ]$ 

2)启动DMRMAN进行恢复
/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdbms/data/dm02/dm.ini' tablespace TBS_DATA_N FROM BACKUPSET  '/dm8/dmdbms/data/dm02/bak/tablespace_TBS_DATA_N_bak_01'"

/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/dm02/dm.ini' tablespace TBS_DATA_N WITH ARCHIVEDIR '/dm8/dmdbms/data/dm02/arch'"

 

3)启动数据库服务
[dmdba@dmdb02 ~]$ /dm8/dmdbms/bin/DmServicedm02 start
Starting DmServicedm02:                                    [ OK ]
[dmdba@dmdb02 ~]$ 

4)验证tb1数据
SQL> select username,account_status from tb1;
行号     USERNAME     ACCOUNT_STATUS
---------- ------------ --------------
1          SYSAUDITOR   OPEN
2          SYSSSO       OPEN
3          SYSDBA       OPEN
4          DMETL_SAMPLE OPEN
5          SYS          OPEN
已用时间: 2.840(毫秒). 执行号:500.
SQL> 

方法3:通过DM控制台工具进行恢复

1)关闭数据服务
[dmdba@dmdb ]$ /dm8/dmdbms/bin/DmServicedm02 stop
Stopping DmServicedm02:                                    [ OK ]
[dmdba@dmdb ]$ 

2)启动console控制台工具

3)启动数据库服务

 4)检查tb1表信息

 

 达梦数据库社区地址:https://eco.dameng.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值