Oracle闪回删除表分析_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2064 | 回复: 0   主题: Oracle闪回删除表分析        下一篇 
game
注册用户
等级:新兵
经验:36
发帖:61
精华:0
注册:2011-7-23
状态:离线
发送短消息息给game 加好友    发送短消息息给game 发消息
发表于: IP:您无权察看 2015-6-15 10:41:34 | [全部帖] [楼主帖] 楼主

首先你应该明白闪回删除操作的对象仅仅是表,它允许你将之前删除的表恢复到删除它之前的状态,同时还会恢复所有索引以及任何权限和触发器,唯一的主键和非空约束也会被恢复(注意不包括外键)。

Oracle 10g开始,drop table 命令

的实现方式为:它实际上根本没有删除表,而只是重命名表,并把重命名的表放进回收站(每个用户都有一个回收站)可以在user_recyclebin 数据字典中查看当前用户的回收站中的内容,如:被drop的表重命名后的表名 以及drop之前的名字等等信息, 我们已经知道rname 一个表并不会改变表的对象号,当用户发出drop table 命令后,在内部已经把它映射到rename命令,删除表后表的对象号并没有改变,并且所占的存储空间大小 位置都没有改变,只是这时候它所占用的空间是可以被占用的(个人认为应该是当没有其他空间可以使用的时候就会占用它),这时候就会出问题,导致闪回删除操 作不一定100%成功,再就是当你删除一个表后,你又重新建立一个相同名字的表,这时候你要重命名要闪回删除操作的表,如: flashback table table_name to before drop rename new_name ;.

注意:

1.truncat

e 的表是不能被闪回删除操作的,

2.drop table name purge ; 这样删除的表会删除多有引用且不能恢复,

3.drop user  liu cascade,这样删除的用户liu 的表是不能被闪回的,

4.如果删除了一个表后,又重新建立了一个一样名字的表,又把刚建立的表给删除了,那么在回收站将会有两个不一样回收站名字的表,默认执行闪回 删除操作将会恢复最新的版本,你可以指定回收站中表的名字来指定要恢复的表,如:flashback table "BIN$CXLTgwchMOTgUwpYqcBKAA==$0" to before drop ;

5.如果表上有索引和约束,这样的话,当你drop table 后 ,相应的约束和索引,也会在回收站重新名,而且当你闪回删除时,相关的索引和约束会保留在回收站的名字,但是可以重命名成以前的名字:  alter index "索引在回收站的名字"   rename

    to   name_inx;         alter table   table_name rename constraint   "约束在回收站的名字"   to   以前的名字;\

6.flashback drop  不能闪回system 表空间中的表

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论