闪回之 回收站、Flashback Drop (table、index、trigger等)

简介:

一: Flashback Drop 操作流程


模式一:drop table 后未新建同名表

SQL> create table flashdrop as select * from user_objects;
Table created.

SQL> create bitmap index ind_flashdrop on flashdrop(object_type);
Index created.

SQL> drop table flashdrop;
Table dropped.
--查看 recyclebin 内的对象
SQL> select original_name,object_name,type,droptime from recyclebin;
ORIGINAL_NAME OBJECT_NAME TYPE DROPTIME
-------------------------------- ------------------------------ ------------------------- -------------------
IND_FLASHDROP BIN$ESs42vP2YC3gUw0ZZAqeww==$0 INDEX 2015-03-13:08:08:19
FLASHDROP BIN$ESs42vP3YC3gUw0ZZAqeww==$0 TABLE 2015-03-13:08:08:19

SQL> flashback table flashdrop to before drop;
Flashback complete.

SQL> select original_name,object_name,type,droptime from recyclebin;
no rows selected
--查看索引名字
SQL> col column_name for a40
SQL> SELECT index_name, column_name, descend FROM user_ind_columns WHERE table_name = 'FLASHDROP';
INDEX_NAME COLUMN_NAME DESC
------------------------------ ---------------------------------------- ----
BIN$ESs42vP2YC3gUw0ZZAqeww==$0 OBJECT_TYPE ASC
--索引改为原来的名字 (说明 闪回表 后,即使未给索引重命名,执行计划依然可以走索引)
SQL> alter index "BIN$ESs42vP2YC3gUw0ZZAqeww==$0" rename to IND_FLASHDROP;
Index altered.
--查看是否成功改名
SQL> SELECT index_name, column_name, descend FROM user_ind_columns WHERE table_name = 'FLASHDROP';
INDEX_NAME COLUMN_NAME DESC
------------------------------ ---------------------------------------- ----
IND_FLASHDROP OBJECT_TYPE ASC

SQL> select count(*) from flashdrop;
COUNT(*)
----------
11
补充:
--查看表约束名
select CONSTRAINT_NAME,TABLE_NAME, COLUMN_NAME from user_cons_columns where TABLE_NAME='FLASHDROP';

模式二:drop table 后新建同名表

SQL> drop table flashdrop;
Table dropped.

SQL> create table flashdrop as select * from user_objects;
Table created.

SQL> select original_name,object_name,type,droptime from recyclebin;
ORIGINAL_NAME OBJECT_NAME TYPE DROPTIME
-------------------------------- ------------------------------ ------------------------- -------------------
IND_FLASHDROP BIN$ESs42vP4YC3gUw0ZZAqeww==$0 INDEX 2015-03-13:08:25:37
FLASHDROP BIN$ESs42vP5YC3gUw0ZZAqeww==$0 TABLE 2015-03-13:08:25:37

SQL> flashback table flashdrop to before drop;
flashback table flashdrop to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object

SQL> flashback table flashdrop to before drop rename to flashtable;
Flashback complete.

SQL> select original_name,object_name,type,droptime from recyclebin;
no rows selected

SQL> select count(*) from flashtable;
COUNT(*)
----------
11

模式三:drop table 后新建同名表,再 drop 新同名表

SQL> select count(*) from flashdrop;
COUNT(*)
----------
13

SQL> drop table flashdrop;
Table dropped.

SQL> create table flashdrop as select * from user_objects;
Table created.

SQL> insert into flashdrop(object_name) values('andy');
1 row created.

SQL> select count(*) from flashdrop;
COUNT(*)
----------
14
SQL> drop table flashdrop;
Table dropped.

SQL> select original_name,object_name,type,droptime from recyclebin;
ORIGINAL_NAME OBJECT_NAME TYPE DROPTIME
-------------------------------- ------------------------------ ------------------------- -------------------
FLASHDROP BIN$ESs42vP9YC3gUw0ZZAqeww==$0 TABLE 2015-03-13:08:42:21
FLASHDROP BIN$ESs42vP+YC3gUw0ZZAqeww==$0 TABLE 2015-03-13:08:56:16

SQL> select count(*) from "BIN$ESs42vP9YC3gUw0ZZAqeww==$0";
COUNT(*)
----------
13

SQL> select count(*) from "BIN$ESs42vP+YC3gUw0ZZAqeww==$0";
COUNT(*)
----------
14

SQL> flashback table "BIN$ESs42vP+YC3gUw0ZZAqeww==$0" to before drop;
Flashback complete.

SQL> select count(*) from flashdrop;
COUNT(*)
----------
14

文章可以转载,必须以链接形式标明出处。


本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/6279989.html    ,如需转载请自行联系原作者
相关文章
|
2月前
|
算法 关系型数据库 MySQL
drop、truncate 和 delete 的区别
drop、truncate 和 delete 的区别
|
7月前
|
关系型数据库 MySQL 数据库
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
66 2
ALTER TABLE
本文主要介绍如何对表相关的Sequence类型进行修改。
|
SQL 存储 数据库
Drop、Truncate和Delete究竟怎么删除
在数据库种有三个对表中数据进行删除的语法,分别是Drop、Truncate和Delete。关于它们的区别和相同的地方也是在面试的过程中经常遇到的。平时也是用了就用了,哪个用的习惯就用哪个。不过既然都是删除为什么还要有三个不同的语句呢?说明它们之间肯定有着不一样的地方。邓爷爷说过实践是检验真理的唯一标准。这里就通过实际的例子总结一下它们之间的一些异同点,也加深一下自己的印象。
189 0
Drop、Truncate和Delete究竟怎么删除
|
Web App开发 关系型数据库
Truncate/Delete/Drop table的特点和区别
之前一直对Truncate/Delete/Drop认识的不是很清晰,所以特意的翻了一下MySQL5.7 Reference Manual,准备系统的了解一下,这里是一些翻译,外加一点自己的认知。
1114 0
|
关系型数据库 MySQL
truncate table 和 drop table 的一点坑
网上一搜这个关键字,得到的结果大多都是delete、truncate、drop之间的区别 但是今天我们要讲的内容,是我们在生产环境中遇到的真实案例 互联网公司一般对大表,都会采用分区表或者物理分表吧,这里主要描述的是分表的删除过程中的问题 案例一 环境MySQL5.
3968 0