本文主要是介绍drop/truncate purge,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、DROP
- 二、TRUNCATE
- 总结
前言
drop、truncate、回收站傻傻搞不清楚的
一、DROP
drop删除表
执行drop table xx 语句
drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。
通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];
将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。
若要彻底删除表,则使用语句:drop table <table_name> purge;
--删除表(可根据flashback找回)
drop table xxx;
--找回表
flashback table xxx to before drop;
--彻底删除表
drop table xxx purge;
清除回收站里的信息
清除指定表:purge table <table_name>;
清除当前用户的回收站:purge recyclebin;
清除所有用户的回收站:purge dba_recyclebin;
二、TRUNCATE
truncate清理表
执行truncate table xx语句
truncate操作,跟没有where条件的delete操作十分相似,只是把表里的信息全部删除,但是表依然存在。
例如:truncate table XX
★Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
truncate table 后,有可能表空间仍没有释放,可以使用如下语句:
alter table 表名称 deallocate UNUSED KEEP 0;
注意如果不加KEEP 0的话,表空间是不会释放的。
--清空表
truncate table xx;
--清空表后释放表空间
alter table xx deallocate unused keep 0;
--清空表同时释放表空间
truncate table xx drop storage;
总结
drop 和 truncate 都用的很多了,但是怎么找回,怎么释放表空间可能就有点生疏了
又是美好的一天,今天你摸鱼了吗~
这篇关于drop/truncate purge的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!