您好,登錄后才能下訂單哦!
在Oracle數據庫中表隨著數據增長,所占磁盤容量也會增長,當表中數據不再需要時,對表進行delete操作,表中代表所占空間的標志-高水位,不會隨著數據刪除而下降,高水位沒有變化,即使刪除了數據庫,表所占空間大小仍然不變,因此,如果要釋放空間,就需要對表進行如下處理:
一、如果表所在的表空間是段空間自動管理(即ASSM),可對表進行shink操作,來釋放空閑數據塊,降低高水位,shink操作可不用暫停所有業務:
查看表空間是否是段空間自動管理(ASSM)可以通過視圖dba_tablespaces查看。
命令:
select tablespace_name,segment_space_manegement from dba_tablespaces;
如果segment_space_manegement的值不是AUTO,表示表空間不是ASSM,則不能進行shink操作,只能對表進行move的操作。
具體對表進行shrink操作方法,可參考:http://blog.itpub.net/30484956/viewspace-2678181/
二、釋放高水位也可以對表進行move操作,進行move操作時需要停止一切業務。但是對表進行move操作后,表上的索引和約束會全部失效,需要進行rebuild重建。
move操作的命令:
alter table table_name move;table_name----所要釋放空間的表的名字
三、 表的move和shink操作只針對表中的普通字段,對于所含的LOB數據類型的列需要進行單獨操作。
釋放LOB字段所占空間的命令:
alter table table_name move lob(lobsegment_name) stoge as tablespace_name;table_name----含有lob字段的表名 lobsegment_name----l表中是LOB數據類型的列名 tablespace_name----lob字段存放的原表空間
含有lob字段的表中每個lob字段都需要進行move操作,存儲的表空間也是原來創建表的時候所指定lob字段存放的表空間。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。