oracle数据库误 *** 作把表删除了,怎么找回?

oracle数据库误 *** 作把表删除了,怎么找回?,第1张

一:表的恢复\x0d\x0a\x0d\x0a 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:\x0d\x0a\x0d\x0a1、从flash back里查询被删除的表\x0d\x0a\x0d\x0aselect * from recyclebin\x0d\x0a\x0d\x0a2.执行表的恢复\x0d\x0a\x0d\x0a flashback table tb to before drop,这里的tb代表你要恢复的表的名称。\x0d\x0a\x0d\x0a二:表数据恢复\x0d\x0a\x0d\x0a对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:\x0d\x0a\x0d\x0a1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。\x0d\x0a\x0d\x0a 如:select * from flashback_transaction_query where \x0d\x0atable_name='TEST'\x0d\x0a\x0d\x0a 2、执行表记录恢复\x0d\x0a\x0d\x0a 一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp \x0d\x0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss')tb指表名称,time指某个时间点\x0d\x0a\x0d\x0a 如select * from scott.test as of timestamp to_timestamp('2009-12-11 \x0d\x0a20:53:57','yyyy-mm-dd hh24:mi:ss')\x0d\x0a\x0d\x0a若有数据,恢复极为简单了,语句为flashback table tb to timestamp \x0d\x0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss')\x0d\x0a\x0d\x0a 如flashback table scott.test to timestamp to_timestamp('2009-12-11 \x0d\x0a20:47:30','yyyy-mm-dd hh24:mi:ss')\x0d\x0a\x0d\x0a注意:alter table testvarchar enable row movement\x0d\x0a\x0d\x0a这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle \x0d\x0a中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP \x0d\x0a完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个 *** 作

一、drop表

执行drop table xx 语句

drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。

通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句

flashback table <user_recyclebin.object_name or user_recyclebin.original_name>to before drop [rename to <new_table_name>]

将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。

若要彻底删除表,则使用语句:drop table <table_name>purge

清除回收站里的信息


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10031437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存