oracle彻底删除dbf文件,ORACLE 删除数据文件模拟灾难恢复

今天做了一个实验,先创建表空间及数据文件,然后在操作系统下删除该表空间的数据文件(前提是该表空间已经备份了,方便恢复)。

STEP1: 创建表空间 ,数据文件, 用户并赋权:

SQL> create tablespace TBS1 datafile \'/u01/app/oradata/ORCL/df1.dbf\' size 5M autoextend on next 2M maxsize 100M;

SQL> create user test identified by test default tablespace TBS1;

SQL> GRANT DBA TO TEST WITH ADMIN OPTION;

STEP2: 创建表并插入数据

SQL> conn TEST/TEST;

SQL> create table t1(id int, name varchar2(20));

SQL> begin

2 for i in 1..200000 loop

3 insert into t1 values(i,\'AAA\'||i);

4 end loop;

5 end;

6 /

STEP3: 用RMAN备份数据(非归档模式不能用RMAN备份数据的)

RMAN> backup tablespace TBS1 format  '/home/oracle/db_backup/TBS1_20150121:1037.bak';

STEP4: 删除新建表空间下的数据文件

[oracle@REDHAT6 ORCL]$ mv df1.dbf df2.dbf.bak

SETP5: 关闭数据库,重新启动数据,问题来了

SQL> shutdown immediate;

SQL> startup

ORACLE instance started.

Total System Global Area 889389056 bytes

Fixed Size 2233480 bytes

Variable Size 494930808 bytes

Database Buffers 385875968 bytes

Redo Buffers 6348800 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file

ORA-01110: data file 6: \'/u01/app/oradata/ORCL/df1.dbf\'

下面来解决上面的问题:

step1: 开启数据库处于mount状态, 使文件 6 脱机(6指的是上面删除的数据文件df1.dbf),并开启数据库

SQL> select status from v$instance;

STATUS

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

MOUNTED

SQL> alter database datafile 6 offline;

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS

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

OPEN

STEP2: 查看数据文件及表空建状态

SQL> SELECT FILE_ID, FILE_NAME,STATUS, ONLINE_STATUS FROM DBA_DATA_FILES;

faf981f54557262a0d9d8b109ab0cbf4.png

SQL> SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES;

a36c52e7b6c4b641db2cc82d35d968bc.png

STEP3: 恢复备份数据

RMAN> list backup of tablespace TBS1;

07eb140f8a86eb381cffe27ba64e7bb3.png

RMAN> restore tablespace TBS1;

dca08a18020154c4d062822853065d03.png

由于是测试环境,没有修改数据(即没有脏块),所以没有  recover tablespace TBS1;

STEP4: 数据文件联机

SQL> alter database datafile 6 online;

OK 到此结束,数据文件恢复完成!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值