Oracle Drop表并未直接删除 drop table xx purge
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;
? ? ? ? ? ? ? ? ? ?清除回收站里的信息
? ? ? ? ? ? ? ? ? ?清除指定表:purge table <table_name>;
? ? ? ? ? ? ? ? ? ?清除當前用戶的回收站:purge recyclebin;
? ? ? ? ? ? ? ? ? ?清除所有用戶的回收站:purge dba_recyclebin;
? ? 不放入回收站,直接刪除則是:drop table xx purge;
清除表中的數據
truncate操作 同沒有where條件的delete操作十分相似,只是把表里的信息全部刪除,但是表依然存在。
例如:truncate table ?XX
Truncate不支持回滾,并且不能truncate一個帶有外鍵的表,如果要刪除首先要取消外鍵,然后再刪除。
truncate table 后,有可能表空間仍沒有釋放,可以使用如下語句:
alter table 表名稱 deallocate ? UNUSED KEEP 0;
注意如果不加KEEP 0的話,表空間是不會釋放的。
例如:
alter table F_MINUTE_TD_NET_FHO_B7 deallocate ? UNUSED KEEP 0;
或者:
TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能釋放表空間。
例如: truncate table ?test1 DROP STORAGE;
查詢用戶下的表
? ? 如果你的用戶權限不是DBA: ?
? 那你用 ?
? select ? * ? from ? user_tables; ?
? 可以查詢到當前用戶所擁有的表。 ?
? 如果是DBA用戶: ?
? select ? * ? from ? dba_tables;
轉載于:https://www.cnblogs.com/diyunpeng/p/7751336.html
總結
以上是生活随笔為你收集整理的Oracle Drop表并未直接删除 drop table xx purge的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于oracle的sql优化
- 下一篇: 2017-10-29—英语发音的一些技巧