Tom那本oracle architecture中关于redo log论述的一个疑问,期待解答
本人菜鸟一只,希望不要被大家笑话--书中有这样一段论述
Virtually every operation you perform in Oracle generates some amount of redo to be written to the online redo log files. When you insert a row into a table, the end result of that insert is written to the redo logs. When you delete a row, the fact that you deleted that row is written. When you drop a table, the effects of that drop are written to the redo log. The data from the table you dropped is not written; however, the recursive SQL that Oracle performs to drop the table does generate redo. For example, Oracle will delete a row from the SYS.OBJ$ table (and other internal dictionary objects), and this will generate redo, and if various modes of supplemental logging are enabled, the actual DROP TABLE statement will be written into the redo log stream.
中间标注红色部分"When you drop a table, the effects of that drop are written to the redo log. The data from the table you dropped is not written"我很疑惑.
这是的意思是drop table以后,那些table里面保存的数据没有被写入redo,这样的话,如果我想恢复这个table,里面的数据不是没法恢复吗?因为没有写入到redo log啊
比如我一年前drop了一个很大的table,一年以后想恢复这个表,因为drop的数据不再redo和archive里,所以即使我一年以来所有的redo和archive都在,这些数据不是都没办法回复了吗??
只能找到drop前的某一个时间点的备份,恢复到一台备用机上,然后exp出来 ,然后导入回去。 中间标注红色部分"When you drop a table, the effects of that drop are written to the redo log. The data from the table you dropped is not written"我很疑惑.
drop是ddl操作,只是更新了数据字典,table是逻辑意义,数据时存放在segment里的。这块要区别开来 都在的话,当然是能恢复的 redo只是日志,当然不会把你drop掉的数据写进去,呵呵,它受不了 drop掉了时间如果很长了,你的oracle 回收站可能已经清空掉了,drop掉的表的数据没有了,但你可以根据日志把你的这张表数据重新写一遍。 drop是ddl,会对数据字典做某些更新,这个会生成redo,但是drop的数据不会生成redo,如果你想恢复,1楼的就可以了
页:
[1]