本人菜鸟一只,希望不要被大家笑话--

书中有这样一段论述
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都在,这些数据不是都没办法回复了吗??
标签: 暂无标签
zhangcj5

写了  篇文章,拥有财富 ,被  人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2013-9-2 08:57:21
drop是ddl,会对数据字典做某些更新,这个会生成redo,但是drop的数据不会生成redo,如果你想恢复,1楼的就可以了
回复

使用道具

P4 | 发表于 2013-8-26 14:55:49
drop掉了时间如果很长了,你的oracle 回收站可能已经清空掉了,drop掉的表的数据没有了,但你可以根据日志把你的这张表数据重新写一遍。
回复

使用道具

P5 | 发表于 2013-8-9 09:18:55
redo只是日志,当然不会把你drop掉的数据写进去,呵呵,它受不了
回复

使用道具

P5 | 发表于 2013-8-9 09:17:01
都在的话,当然是能恢复的
回复

使用道具

P4 | 发表于 2013-8-8 16:46:05
中间标注红色部分"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里的。这块要区别开来
回复

使用道具

guo
P4 | 发表于 2013-8-2 18:08:34
只能找到drop前的某一个时间点的备份,恢复到一台备用机上,然后exp出来 ,然后导入回去。
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈