Oracle資料庫高水位釋放——LOB欄位空間釋放

Z少校發表於2020-03-03

在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欄位存放的表空間。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30484956/viewspace-2678182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章