oracle分割槽表徹底刪除的辦法

2021-05-23 22:17:40 字數 1346 閱讀 8099

oracle分割槽表徹底刪除的辦法

當對乙個不再使用的分割槽表進行drop後,查詢user_tab_partitions檢視發現出現如下不規則的分割槽表表名:

sql> select distinct table_name from user_tab_partitions;

bin$l+pv5l1jcmxgqkjayqfa0a==$0

這樣很容易導致自己寫的"自動增加表的分割槽"的存過發生錯誤,因此為了避免再修改存過,只能把這些不規則的表名刪除才行.現提供如下方法徹底刪除這些不規則的表名.

其實當我們執行drop table tablename的時候,不是直接把錶刪除掉,而是放在了**站裡,可以通過查詢user_recyclebin檢視被刪除的表資訊.這樣,**站裡的表資訊就可以被恢復或徹底清除。

通過查詢**站user_recyclebin獲取被刪除的表資訊,如果想恢復被drop掉的表,可以使用如下語句進行恢復

flashback table to before drop;

上面的語句是將**站裡的表恢復為原表名稱

flashback table to before drop rename to ;

將**站裡的表恢復為指定的新錶名稱,表中資料不會丟失。

若要徹底刪除表,則使用語句:drop table purge;這樣drop後的表就不被放入**站

如果是清除**站中指定的表,可以使用語句purge table ;

如果是清除當前使用者**站所有的表,可以使用語句purge recyclebin;

如果是清除所有使用者的**站:purge dba_recyclebin;

到此,按上面的方法清除**站的資料後,再查詢user_tab_partitions檢視,發現不規則表名已經沒有了

sql> select distinct table_name from user_tab_partitions;

no rows selected

在此順便再提一下truncate操作後不釋放空間的解決辦法

truncate不支援回滾,並且不能truncate乙個帶有外來鍵的表,如果要刪除首先要取消外來鍵,然後再刪除。

truncate table 後,有可能表空間仍沒有釋放,可以使用如下語句:

alter table 表名稱 deallocate   unused keep 0;

注意如果不加keep 0的話,表空間是不會釋放的。

例如:alter table tablename deallocate   unused keep 0;

或者:truncate table tablename drop storage才能釋放表空間。

例如: truncate table  tablename drop storage;

oracle分割槽表徹底刪除的辦法

oracle分割槽表徹底刪除的辦法 當對乙個不再使用的分割槽表進行drop後,查詢user tab partitions檢視發現出現如下不規則的分割槽表表名 sql select distinct table name from user tab partitions bin l pv5l1jcmx...

Oracle分割槽表

1 範圍分割槽 range create table range part tab id number,deal date date,area code number,contents varchar2 4000 partition by range deal date partition p201...

Oracle 分割槽表

我們知道在資料庫中,當一張表的資料量增多時,資料的查詢就會變慢,從而影響應用程式的效能。這時我們應該考慮將表分割槽,表分割槽後在邏輯上仍然屬於一張表,只是在物理上儲存在多個檔案中。範圍分割槽將資料基於範圍對映到每乙個分割槽,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的,...