環境: win2008server + oracle11g
前面有幾張大歷史表,我直接drop后重建表,過一段時間我發現表空間竟然還是滿了,在執行purge recyclebin后發現表空間依然沒有釋放,查詢user_segment表發現存在BIN$開頭的段:
SEGMENT_NAME SUM(BYTES/1024/1024)
BIN$0pzTHETfTiCg6ob9noO+ZA==$0 87667.5
BIN$MWC/GsbqTHSAqPoSdAnM8A==$0 24475
BIN$P/7txajPQ4eIVojwhPiFDw==$0 81418.75
不知道由于什么原因?怎樣才能回收這些表空間?
uj5u.com熱心網友回復:
drop table mytable purge ; 就不進回收站了
purge recyclebin ; 可以清慷訓收站
uj5u.com熱心網友回復:
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;
uj5u.com熱心網友回復:
purge recyclebin 怎么會沒有清除呢。select * from user_recyclebin 查詢當前用戶回收站里面的內容,看看還有沒有,都是什么
uj5u.com熱心網友回復:
怎么確認沒有被釋放? 是否看錯了uj5u.com熱心網友回復:
沒有看錯,確實是存在表空間沒有回收:select segment_name,sum(bytes/1024/1024) from user_segments;得到
SEGMENT_NAME SUM(BYTES/1024/1024)
ATS_EVENT_IDX 5630
BIN$0pzTHETfTiCg6ob9noO+ZA==$0 87667.5
BIN$MWC/GsbqTHSAqPoSdAnM8A==$0 24475
但是執行 select object_name,original_name,ts_name,droptime from user_recyclebin;由沒有回傳記錄。
執行查詢空間占用情況的陳述句,空間占用都快100%,說明BIN$空間是沒有釋放的。
請教各位大神!這是為何 ?
uj5u.com熱心網友回復:
-- 看看還有什么東西在回收站中
select * from user_recyclebin
uj5u.com熱心網友回復:
select * from user_recyclebin 是空的,沒有東西了。uj5u.com熱心網友回復:
補充:drop table是以前做的,當時沒有執行purge recyclebin清慷訓收站,當時drop表后直接重建了原來的幾張表,現在去查看查看user_segment表,就發現了BIN$開頭的段,而且現在執行purge recyclebin了這些BIN$的段也還是存在。
uj5u.com熱心網友回復:
估計是觸發了 oracle 的某個bug 了,如果資料量不大的話,就把這個用戶刪掉,重建吧;PS:清理垃圾這種活,不好干
uj5u.com熱心網友回復:
Q說吧212646490uj5u.com熱心網友回復:
這是在線運行系統,不能洗掉user重建。現在我是只能不斷擴表空間,我是想把BIN的空間回收。uj5u.com熱心網友回復:
-- 試試這個命令,看能不能清理掉
purge table "BIN$MWC/GsbqTHSAqPoSdAnM8A==$0"
uj5u.com熱心網友回復:
SQL>purge table "BIN$MWC/GsbqTHSAqPoSdAnM8A==$0" ; 顯示表不存在。但是
SQL> select * from user_catalog where table_name like 'BIN%'; 能查到表。
uj5u.com熱心網友回復:
可能是BUG,重啟庫看看是否還存在uj5u.com熱心網友回復:
現在問題解決了嗎? 如果沒有的話,可以考慮,把該表空間中的表和索引這類物件的內容移動到別的表空間;再洗掉這個表空間,之后再重建 ;
drop tablespace xx including contents -- 加這個選項
uj5u.com熱心網友回復:
這是7*24小時的生產環境,里面新的資料也已經有好幾十G,資料怎么遷移 ?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/115039.html
標籤:基礎和管理
下一篇:PL sql 陳述句優化
