---
1
2
SQL>
可以看到,这次数据并没有丢失,insert的2条数据由于exit退出SQLPLUS时触发了隐式提交,已经被写入数据文件中,而现在又通过操作系统文件句柄的方式恢复出来了,如果要避免隐式提交,可以在另一个session中对数据库文件进行删除
总结:
当我们进行
Linux操作系统命令rm的时候,切忌不可随意加-rf参数,就算一定要用,也要确定再三后才能执行,否则对于数据库而言,可以说是灾难性的。这里只是测试了一下删除/u01/app/oracle/oradata/下的全部文件,试想一下,如果你当初执行的是rm -rf /u01呢?可能情况就要更加复杂一点了,恢复需要的步骤也就更多了。
由于是在数据库open状态下直接进行了破坏性操作,对于redo buffer还来不及写入online redo logfile的那部分操作,肯定是会丢失的,(在我的第2次测试中,并没有丢失未提交数据,是因为触发了隐式提交),因为我们通过文件句柄号恢复出来的日志文件中,并不一定包含数据库的最新变更,即便如此,对于rm -rf误操作的恢复,还是有一定意义的,至少可以在你没有任何备份的情况下,多提供了一根救命稻草来拯救你的数据库,再次强调一下,rm -rf后,千万不要着急地关闭数据库重启!!!否则就等着哭吧!!!