linux下DM7表空间数据文件误删恢复

如果表空间文件误删,那么对此表空间所有的操作都会失败,并报错该表空间内有数据文件被删除;

linux系统中被删除的文件,只要其句柄没有被关闭,可以在/proc/<pid>/fd中找到对应的文件副本,其中pid为打开该文件的的进程id.

对于DM7表空间数据文件误删恢复步骤如下:

       1.调用系统过程SP_TABLESPACE_PREPARE_RECOVER(tablesapce_name)准备进行恢复;

       2.找到打开该文件的进程pid  ps -ef|grep dmserver

       3.查看被删除文件的副本   ls -l /proc/<pid>/fd ,被删除的文件后有deleted字样;

       4.拷贝文件到原来位置    cp  bak_file  /dmdba/data/DAMENG

       5.调用系统过程 SP_TABLESPACE_RECOVER(TS_NAME);完成表空间失效的恢复;

 注意:要保证数据文件正确恢复,再拷贝文件之前一定要SP_TABLESPACE_PREPARE_RECOVER(tablesapce_name)准备进行恢复;

 

在windows下测试发现,只需要把删掉的文件放到原处,就可正常使用该表空间,操作如下:

create tablespace test datafile 'D:\dmdbm\data\DAMENG2\test1.dbf' size 128,
'D:\dmdbm\data\DAMENG2\test2.dbf' size 128;

create user test identified by "test123456789" default tablespace test;
create table test.student(id int,name varchar(100)) storage( on test); 
insert into test.student values (1,'111'),(2,'222'),(3,'333'),(4,'444');
commit;
由于是windows,删除文件需要停数据库服务,停掉服务,把test2.dbf移到D:\dmdbm\data目录,重启服务发现数据库变成了mount状态
将数据库切换到open状态,执行下面插入或查询状态;
insert into test.student values (1,'111'),(2,'222'),(3,'333'),(4,'444');
select * from test.student;
报表空间[test]处于脱机状态错误,试图去将该表空间打开,报错误消息: 文件[D:\dmdbm\data\DAMENG2\test2.dbf]不存在;
直接将test2.dbf放到原路径D:\dmdbm\data\DAMENG2\test2.dbf,打开表空间成功,可对该表操作了;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值