最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
浅析Oracle数据库闪回删除表原理
时间:2022-06-29 09:54:54 编辑:袖梨 来源:一聚教程网
首先你应该明白闪回删除操作的对象仅仅是表,它允许你将之前删除的表恢复到删除它之前的状态,同时还会恢复所有索引以及任何权限和触发器,唯一的主键和非空约束也会被恢复(注意不包括外键)。
Oracle 10g开始,drop table 命令的实现方式为:它实际上根本没有删除表,而只是重命名表,并把重命名的表放进回收站(每个用户都有一个回收站)可以在user_recyclebin数据字典中查看当前用户的回收站中的内容,如:被drop的表重命名后的表名 以及drop之前的名字等等信息, 我们已经知道rname 一个表并不会改变表的对象号,当用户发出drop table 命令后,在内部已经把它映射到rename命令,删除表后表的对象号并没有改变,并且所占的存储空间大小 位置都没有改变,只是这时候它所占用的空间是可以被占用的(个人认为应该是当没有其他空间可以使用的时候就会占用它),这时候就会出问题,导致闪回删除操作不一定100%成功,再就是当你删除一个表后,你又重新建立一个相同名字的表,这时候你要重命名要闪回删除操作的表,如: flashback table table_name to before drop rename new_name ;.
注意:
1.truncate 的表是不能被闪回删除操作的,
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 表空间中的表
相关文章
- 《使命召唤:黑色行动6》战役双倍下注任务攻略 11-05
- 《使命召唤:黑色行动6》战役敏锐的眼睛任务攻略 11-05
- 《使命召唤:黑色行动6》战役请勿吸烟任务攻略 11-05
- 《怪物猎人:荒野》游戏气候介绍 11-05
- 《怪物猎人:荒野》丰饶期气候介绍 11-05
- 《龙腾世纪:影障守护者》游侠不同职业区别介绍 11-05