文章目录
- 闪回表
- 案例1:(未清理回收站时的闪回表--成功)
- 案例2(清理回收站时的闪回表--失败)
- 案例3:彻底删除表(不经过回收站--失败)
- 案例4:闪回表之后重新命名新表
- 总结
- 1、删除关于表的所有数据(表数据,索引,主键等对象),闪回恢复的时候同时恢复。
- 2、未清理回收的情况下,成功闪回表,清理回收站的情况下,闪回表失败
- 3、闪回表的同时对原有的表进行重新命名后,所有的数据将恢复到新表中
闪回表利用的是回收站
①.事务回滚|回退:rollback,对于DML操作,只要数据不提交commit,数据回滚到原始状态
②.截断表:truncate,数据无法回滚找回
③.删除表:drop,表都不存在
闪回:flashback
闪回表
案例1:(未清理回收站时的闪回表–成功)
创建一个表,删除之后找回
CREATE TABLE employees (employee_id NUMBER PRIMARY KEY,first_name VARCHAR2(50),last_name VARCHAR2(50),salary NUMBER
);INSERT INTO employees VALUES (5, 'John', 'Doe', 5000);
INSERT INTO employees VALUES (6, 'Jane', 'Smith', 6000);
INSERT INTO employees VALUES (2, 'Jane', 'Smith', 6000);
commit;
删除表:
drop table employees
commit;
查看表:
select * from employees
查看回收站:
SELECT * FROM recyclebin;
回收站中drop删除的信息
闪回表:
flashback TABLE employees TO BEFORE DROP;
再次查看表:
select * from employees
案例2(清理回收站时的闪回表–失败)
未清理回收站的情况下可以正常闪回表,
···清理回收站是否可以闪回表?···
删除表后将回收站清空,再次闪回,查看是否闪回成功
1、drop table employees;删表
2、purge recyclebin;清理回收站
3、再次闪回表:
flashback TABLE employees TO BEFORE DROP;
当清理回收站的情况下,再次闪回表的时候,将无法成功闪回表。
案例3:彻底删除表(不经过回收站–失败)
在删除表的时候可以将其彻底删除,回收站中不保留其信息。
案例:用彻底删除表的方式,验证能否将表闪回。
彻底删除表:
drop table employees purge;
commit;
回收站查看:
SELECT * FROM recyclebin;
回收站未有任何信息。
闪回表:
flashback TABLE employees TO BEFORE DROP
闪回表失败
案例4:闪回表之后重新命名新表
删除原有的表,闪回的时候对表进行重新命名,查询的时候只能查询到重新命名的表,原表将无法正常查看;
flashback TABLE employees TO BEFORE DROP rename to employees_new ;
对闪回的表进行重新命名,
查询原表:查询失败
查询新表:查询成功
可见原表被恢复到了新表中
总结
drop table 表