关于DM数据库联机时误删数据文件的恢复

目录

一、恢复要点

二、开始测试

第一步:环境准备

第二步:恢复

第三步:核实


一、恢复要点

1、当DM数据库在联机时由于误删数据文件需要恢复,此时数据库不能重启,必须联机!

2、DM在linux表空间文件失效检查说明

   在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定 DM 系统检查数据文件是否仍存在的时间间隔,将其设为 0 表示不进行检查;或是用SP_FILE_SYS_CHECK()来手动的进行检查,系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。

3、表空间失效文件恢复过程说明

先SP_TABLESPACE_PREPARE_RECOVER ,再SP_TABLESPACE_RECOVER。

二、开始测试

说明:误删数据文件,其实是表空间失效对文件进行恢复并联机的过程。

第一步:环境准备

select * from v$parameter where name like 'FIL_CHECK_INTERVAL%';--0
drop table y;
create tablespace ts6 datafile '/dm/data/db1/ts6.dbf' size 70; 
create table  y (i int) STORAGE (on ts6);
select tablespace_name from dba_tables where table_name='Y';
insert into y values(1),(2),(3);
commit;
select * from y;

未删除之前:

 模拟 /dm/data/db1/ts6.dbf 被删除!

删除之后:

 数据库对此表空间做事务,仍然可以,因为虽然文件被删除了,但句柄没有被关闭(库没有重启),所以可以。但在后边执行了call SP_FILE_SYS_CHECK();则不可以再做事务了,见下:

insert into y values(4);
commit;

 现在手工检查一下:

call SP_FILE_SYS_CHECK();
--查询一下数据文件与表空间状态:现在可以看到数据文件是不合法的!表空间脱机!
select tablespace_name,status  from dba_data_files where tablespace_name=upper('TS6');
select vts.name,vdf.status$,vdf.path from v$datafile vdf, V$TABLESPACE  vts where VDF.GROUP_ID(+)=vts.id;

 

第二步:恢复

现在来恢复,此时数据库不能关

[dmdba@dm11 ~]$ cp  /proc/55424/fd/49 /dm/data/db1/ts2.dbf
[dmdba@dm11 ~]$ ls -l /dm/data/db1/ts2.dbf
-rw-r--r-- 1 dmdba dinstall 378535936 May 11 16:07 /dm/data/db1/ts2.dbf
SQL> call  SP_TABLESPACE_PREPARE_RECOVER('TS6');
SQL> call SP_TABLESPACE_RECOVER('TS6');

第三步:核实

 不会报错了,也可以正常做事务了,或重启后,都正常 OK!!!

更多学习内容参考:达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心 https://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值