oracle分割槽表徹底刪除的辦法
當對乙個不再使用的分割槽表進行drop後,查詢user_tab_partitions檢視發現出現如下不規則的分割槽表表名:
sql> select distinct table_name from user_tab_partitions;
bin$l+pv5l1jcmxgqkjayqfa0a==$0
這樣很容易導致自己寫的"自動增加表的分割槽"的存過發生錯誤,因此為了避免再修改存過,只能把這些不規則的表名刪除才行.現提供如下方法徹底刪除這些不規則的表名.
其實當我們執行drop tabletablename的時候,不是直接把錶刪除掉,而是放在了**站裡,可以通過查詢user_recyclebin檢視被刪除的表資訊.這樣,**站裡的表資訊就可以被恢復或徹底清除。
通過查詢**站user_recyclebin獲取被刪除的表資訊,如果想恢復被drop掉的表,可以使用如下語句進行恢復
flashback table to before drop;
上面的語句是將**站裡的表恢復為原表名稱
flashback table to before drop renameto ;
將**站裡的表恢復為指定的新錶名稱,表中資料不會丟失。
若要徹底刪除表,則使用語句:drop tablepurge;這樣drop後的表就不被放入**站
如果是清除**站中指定的表,可以使用語句purge table;
如果是清除當前使用者**站所有的表,可以使用語句purge recyclebin;
如果是清除所有使用者的**站:purge dba_recyclebin;
到此,按上面的方法清除**站的資料後,再查詢user_tab_partitions檢視,發現不規則表名已經沒有了
sql> select distinct table_name fromuser_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 分割槽表
我們知道在資料庫中,當一張表的資料量增多時,資料的查詢就會變慢,從而影響應用程式的效能。這時我們應該考慮將表分割槽,表分割槽後在邏輯上仍然屬於一張表,只是在物理上儲存在多個檔案中。範圍分割槽將資料基於範圍對映到每乙個分割槽,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的,...