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