快速闪回技术的引入:
硬件发展,硬盘容量增加价格下降,oracle想用“空间换时间”
闪回已经删除的表
conn / as sysdba
show parameter bin
alter system set recyclebin = on;——把回收站打开
================================
删除一个dept_test1表,看回收站中是否存在,再将其从回收站中删掉
SQL> conn scott/tiger
Connected.
================================
SQL> create table dept_test1 as select * from dept;
Table created.
查看该用户下所有的表和视图
SQL> select * from cat ;
TABLE_NAME TABLE_TYPE
------------------------------ -----------
DEPT TABLE
BONUS TABLE
SALGRADE TABLE
BIN$suud3fyidgvgQKjAZQBkmQ==$0 TABLE
DEPT_TEST1 TABLE
SQL> drop table DEPT_TEST1;
Table dropped.
================================
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DEPT_TEST1 BIN$suud3fyjdgvgQKjAZQBkmQ==$0 TABLE 2011-11-30:11:52:35
EMP BIN$suud4fyidgvgQKjAZQBkmQ==$0 TABLE 2011-11-30:11:49:02
其实oracle将DEPT_TEST1打了个标记BIN$suud3fyjdgvgQKjAZQBkmQ==$0而已,并记录在数据字典回收站recyclebin这张表中而已,
SQL> select * from cat;
TABLE_NAME TABLE_TYPE
------------------------------ -----------
DEPT TABLE
BONUS TABLE
SALGRADE TABLE
BIN$suud3fyjdgvgQKjAZQBkmQ==$0 TABLE
BIN$suud3fyidgvgQKjAZQBkmQ==$0 TABLE
================================
SQL> purge table DEPT_TEST1
2 ;
Table purged.
SQL> show recyclebin ——已经删掉
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$suud3fyidgvgQKjAZQBkmQ==$0 TABLE 2011-11-30:11:49:02
================================
SQL> purge recyclebin; —— 清空回收站
Recyclebin purged.
SQL> show recyclebin ——是空了
查看被删除的表的表空间通过user_recyclebin试图
例子:
SQL> drop table DEPT_TEST2;
Table dropped.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DEPT_TEST2 BIN$suvUrNSpdpXgQKjAZQBk8Q==$0 TABLE 2011-11-30:12:04:21
SQL> select object_name,ts_name,space from user_recyclebin;
OBJECT_NAME TS_NAME SPACE
------------------------------ ------------------------------ ----------
BIN$suvUrNSpdpXgQKjAZQBk8Q==$0 USERS 8
SQL> select * from DEPT_TEST2;——查看表,确实被删除了
select * from DEPT_TEST2
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> flashback table DEPT_TEST2 to before drop;——闪回一张表
SQL> flashback table BIN$suvUrNSpdpXgQKjAZQBk8Q==$0 to before drop;
两条语句的效果一样,因为DEPT_TEST2和BIN$suvUrNSpdpXgQKjAZQBk8Q==$0对应
SQL> show recyclebin;——查看回收站是空的
SQL>
SQL> select * from cat;——表已经回来了
TABLE_NAME TABLE_TYPE
------------------------------ -----------
DEPT TABLE
BONUS TABLE
SALGRADE TABLE
DEPT_TEST2 TABLE
drop table dept purge ——直接删除表,不放入回收站
SQL> drop table DEPT_TEST2 purge;
Table dropped.
SQL> show recyclebin——回收站中没东西
SQL> select * from cat;——检查,确实表删除了
TABLE_NAME TABLE_TYPE
------------------------------ -----------
DEPT TABLE
BONUS TABLE
SALGRADE TABLE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26465805/viewspace-712420/
,如需转载,请注明出处,否则将追究法律责任。