【恢复】归档模式恢复非关键数据文件

非system或undo表空间的数据文件即为非关键数据文件,反之即为关键数据文件,本文标题为《 归档模式恢复非关键数据文件》,所以我们先从数据库是否开启归档开始测试。


1:查看数据库归档情况,明确显示,数据库处于归档模式

SYS@ORA11GR2>archive log list;

Database log mode             Archive Mode

Automatic archival            Enabled

Archive destination           /u01/app/oracle/product/11.2.0/db_1/dbs/arch

Oldest online log sequence    35

Next log sequence to archive  37

Current log sequence          37

SYS@ORA11GR2>

2  创建测试所用表空间(ts_042_16_5)及用户并赋予相应的权限

3  创建测试用表,表的默认表空间为ts_042_16_5,并插入少量测试数据

4  人为删除测试表空间ts_042_16_5的数据文件ts_042_16_5.dbf

5  此时我们再次查询t表,发现依然可以返回结果,因为,表t的数据已经缓存到内存中

6  尝试插入一条记录,奇怪的事儿发生了,竟然插入成功,并且提交也成功了

数据能插入,我们可以理解,因为insert操作,数据并没有真正的写入到磁盘中,是将数据先写入内存中。可是我们已经commit了,告诉dbwr进程,应该将数据库高速缓冲区中的脏数据写入到磁盘了,理论上此时应该报错了,为什么还是告诉我成功了呢?

原因是,虽然我们的commit成功了,但dbwr进程实际上还没有工作(可以肯定的是,redo中一定记录了本次操作),不过已经纳入到写入队列中,dbwr并不着急,在慢慢的处理已经提交且还没有写入磁盘的数据。

7  我们回到sys用户,手工执行一次检查点事件,再xzq下的t表,此时,立刻就返回了错误信息。

8  在归档模式下,可以重新创建一个数据文件(注,这个数据文件,可以指向原来的目录,也可以指向其他的目录,这样就方便万一是硬件的故障,我们可以指向其他的目录,本次测试,将这个数据文件指向上一级目录)

SYS@ORA11GR2>alter database create datafile '/u01/app/oracle/oradata/ORA11GR2/ts_042_16_5.dbf' as '/u01/app/oracle/oradata/ts_042_16_5.dbf';

 
 

Database altered.

SYS@ORA11GR2>
SYS@ORA11GR2>host ls /u01/app/oracle/oradata/ts*
/u01/app/oracle/oradata/ts_042_16_5.dbf
 
SYS@ORA11GR2>

9  通过日志恢复8号数据文件(当然,也可以在datafile后面写上数据文件的绝对路径)

SYS@ORA11GR2>recover datafile 8;

Media recovery complete.

SYS@ORA11GR2>

10  恢复完成后,再次查看t表,发现还报错误,不过,这个错误跟刚才的错误是有区别的,这个错误提示我们不能read,难道这个数据文件脱机了不成?

11  查看数据文件的状态,果然,8号数据文件变为offline

8 rows selected.
 
SYS@ORA11GR2>

12  8号数据文件联机

13  再次验证数据是否恢复,查看t表,恢复完成。

14  小结

1)开启归档是非常重要的,且恢复教容易
2)类似这种错误(ORA-00376: file 8 cannot be read at this time),数据库是否启动的恢复步骤略有不同,如果是在数据库关闭的情况下删除数据文件,那么我们在mount下进行恢复,就不会出现数据文件offline的情况,请自行测试。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/685769/viewspace-750780/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/685769/viewspace-750780/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值