日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE解决表空间不释放空间

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE解决表空间不释放空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于數據庫中有一個日志表記錄7000萬條日志,造成數據庫占用磁盤283G之多,所以現在要求給磁盤瘦身,但是直接用DELETE語句刪除,不能釋放空間,經過查資料學習,得知這是"HWM"(高水位)造成.經過查找資料總結解決方案有兩種.

一 徹底刪除表(沒測試,因為不符合我的情況)

flashback table tablename1 to before drop rename to tablename2;--【to test3】將表重命名

drop table tablename2 purge; --徹底刪除表

二、清除表中的數據

? ? ? ? ① 使用truncate(沒測試)

????????truncate刪除不用加條件,直接刪除數據,不可找回數據,也不能有外鍵關聯,如果有外鍵關聯,先取消關聯,然后在刪除,truncate table? tablename1

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;

引自:

https://www.cnblogs.com/sl-shilong/p/3625153.htmlhttps://www.cnblogs.com/sl-shilong/p/3625153.htmlhttps://www.cnblogs.com/sl-shilong/p/3625153.html

?②DELETE數據(本人使用)

? ? ? ? 因為是日志,所以我想留最近一個月的數據,所以不能直接刪表,當然也可以把表中要保留的數據備份,然后操作①中的操作,但是我還是選擇了古老的方法.但是DELETE刪除后是可以找回數據,為什么可以找回數據,那就是因為數據又存到了另外一個地方,就類似電腦中的回收站,要把回收站清空才能釋放空間.

a:??move?(引自:oracle刪除數據釋放表空間流程_誠的博客-CSDN博客_oracle釋放表空間)

優點:可以移動表到其他表空間,在執行命令時不需要執行alter table table_name enable row movement

缺點:表move 會導致表中的索引失效,要rebuild;同時表會產生行級鎖......;在此如果表中有LOB字段 時要用一下命令來實現表空間移動:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment ?tablespace tablespace_name;也可以單獨move lob,index要rebuild

b:shrink space?(引自:oracle刪除數據釋放表空間流程_誠的博客-CSDN博客_oracle釋放表空間)

優點:降低高水位時索引不會失效

缺點:不能將表移動到其他表空間;高水位降低效果沒有move明顯;同時在執行命令前要先執行(alter table table_name enable row movement允許行移動)也會表會產生行級鎖.......,shrink比move更耗費cpu,產生很多current block這樣生成巨大的redo與undo 如果表中索引很少可以建議使用move降低高水位
?

shrink space常用操作命令(引自:Oracle 刪除數據后釋放數據文件所占磁盤空間_ulvge0的博客-CSDN博客)

下面的語句也是本人使用的語句,親測有效

alter table tablename enable row movement;--打開行移動

alter table tablename shrink space cascade;--壓縮表及相關數據段,并下調HWM

alter table tablename shrink sapce compact;--只壓縮,不下調HWM

alter table tablename shrink sapce ;--下調HWM

alter table tablename disable row movement;--關閉行移動

如有不對,請多多指教

?

總結

以上是生活随笔為你收集整理的ORACLE解决表空间不释放空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。