Linux下利用文件描述符恢复的成功失败实验(二)

2014-11-24 17:24:19 · 作者: · 浏览: 1
racle@bspdev datafile]$ rm rmdtest01.dbf


[oracle@bspdev datafile]$ ls -l

total 8121892

-rw-r----- 1 oracle oinstall 10493952 Feb 2 02:14 mvtbltest01.dbf

(篇幅原因,有省略……)

-rw-r--r-- 1 oracle oinstall 10493952 Feb 2 02:14 tts_simple01.dbf


注意:此时数据文件虽然从OS中删除,但是我们依然可以查询到数据!


SQL> select count(*) from rmtest.rm_tab;

COUNT(*)

----------

145462


对于这种现象,笔者认为两种可能性,一是buffer cache中的缓存数据信息,可以支持这种查询动作。另一种可能性,就是由于文件描述符的存在,让数据文件没有被真正删除,还以某种方式存在于系统中,支持dbwr查询。


证明两种猜想,对buffer cache进行清理。


SQL> alter system flush buffer_cache;

System altered


SQL> alter system flush shared_pool;

System altered


--依然可以查询结果

SQL> select count(*) from rmtest.rm_tab;

COUNT(*)

----------

145462


但是,如果数据库以某种方式,发现了文件被删除,比如check point动作,就会引起很多自动化动作出现。