ORACLE恢复删除的表数据
2021/11/3 2:09:38
本文主要是介绍ORACLE恢复删除的表数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、oracle中有recyclebin表,用来保存用户删除的表的相关信息,相当于回收站。在recyclebin打开的情况下,用户drop掉的对象并没有被数据库删除,仍然会占用空间,除非用户手工进行purge或因为存储空间不够而被数据库清掉。
show parameter recyclebin; --运行该SQL可以知道recyclebin这个表是否是开启的
a、recycle bin有dba_recyclebin和user_recyclebin两种视图
dba_recyclebin放置所有用户drop掉的对象,不含system表空间,包含以下字段
OWNER --drop掉的对象所属的用户 OBJECT_NAME --对象名,命名规范是BIN$unique_id$version,BIN代表RecycleBin,unique_id是数据库中该对象的唯一标志,24个字符长度,version表示该对象的版本号 ORIGINAL_NAME --原始表名 OPERATION --操作,有drop TYPE --类型,有index、table、lob、lob index TS_NAME --用户类型,有TS_ODS、USERS CREATETIME --创建时间 DROPTIME --drop时间 DROPSCN --drop的scn号 PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
user_recyclebin放置当前用户drop掉的对象,字段比 dba_recyclebin少了一个OWNER
b、利用flashback还原回收站内容
语法:FLASHBACK TABLE [已删除TABLE名|”RECYCLEBIN中的名字”] TO BEFORE DROP;
flashback table "BIN$KI5DFtx9TnyUTUiZIuC8YA==$0" to before drop; --这里是OBJECT_NAME,也可以是ORIGINAL_NAME
--再把这个表删除了通过ORIGINAL_NAME恢复也是一样的
flashback table sell to before drop; --这里是ORIGINAL_NAME
c、如果有几个的ORIGINAL_NAME都是一样的,通过ORIGINAL_NAME恢复,只能恢复最后被drop掉的对象;若想明确某个对象就通过OBJECT_NAME恢复。
如果在数据库中存在和回收站相同对象名的表时,恢复回收站的对象时需要rename对选哪个名。如数据库中存在一个表名为atest,回收站中也存在一个atest
flashback table atest to before drop; --flashback table "BIN$6b6dC4BIR9CZLSfGZWvrVQ==$0" to before drop; --使用object_name或origin_name都会出现错误
flashback table atest to before drop rename to atest_bak; --atest是原始名,atest_bak是重新的命名
d、清空回收站,之后不可以通过回收站恢复清空的数据
purge table stest; --清空某个特定对象,stest是表名
purge user_recyclebin; --purge dba_recyclebin;需要改用户拥有系统权限,否则不允许清空
参考文章https://blog.csdn.net/u010098331/article/details/50782395
这篇关于ORACLE恢复删除的表数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Excel中实现拖动排序的简单教程
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解