--1、創(chuàng)建測(cè)試表
公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出黃浦免費(fèi)做網(wǎng)站回饋大家。
create table cux.cux_test_data as
select * from GL_JE_HEADERS;
--2、查看數(shù)據(jù)條數(shù)
select count(1) from cux.cux_test_data;
--3、查看區(qū)塊大小
SELECT segment_name
,extents
,blocks
,initial_extent
FROM dba_segments
WHERE segment_name = 'CUX_TEST_DATA';
--4、刪除表,采用truncate方式
truncate table cux.cux_test_data;
--查看數(shù)據(jù)塊大小
SELECT segment_name
,extents
,blocks
,initial_extent
FROM dba_segments
WHERE segment_name = 'CUX_TEST_DATA';
由此可見(jiàn)truncate會(huì)清除表所占數(shù)據(jù)塊的大??;
--5、刪除表,采用delete方式
首先對(duì)測(cè)試表進(jìn)行重新插入操作,查得數(shù)據(jù)塊大小如下:
執(zhí)行刪除操作:
delete from cux.cux_test_data;
再次查詢表所占數(shù)據(jù)塊大小如下:
可看出,所占數(shù)據(jù)塊并沒(méi)有變動(dòng);
--當(dāng)delete完數(shù)據(jù)之后,再往測(cè)試表中插入100萬(wàn)條數(shù)據(jù),再次查詢數(shù)據(jù)塊大小如下:
發(fā)現(xiàn)跟刪除前一樣,也就是說(shuō)當(dāng)delete相關(guān)的數(shù)據(jù)之后,再插入數(shù)據(jù)如果比刪之前的數(shù)據(jù)小,則表空間分布不會(huì)變;當(dāng)插入的數(shù)據(jù)比刪之前多時(shí),才會(huì)增加數(shù)據(jù)塊大?。?/p>
--6、采用SHRINK和MOVE方式去收縮表空間
ALTER TABLE cux.cux_test_data MOVE; --降低水位線,釋放表空間
注意:alter table move命令可以釋放空間,該操作期間會(huì)鎖表;
而且會(huì)導(dǎo)致索引失效,如果該表有索引,還需要進(jìn)行索引重建操作,重建索引腳本如下:
ALTER INDEX XXX REBUILD ONLINE; --重建索引
alter table cux.cux_test_data enable row movement; --啟用行遷移
alter table cux.cux_test_data shrink;--降低水位線
上述兩步種方式收縮完之后,表空間已釋放
結(jié)論:
1、TRUNCATE刪除表會(huì)直接釋放表空間;
2、DELETE刪除表不會(huì)釋放表空間,若要釋放,可采用SHRINK和MOVE方式進(jìn)行收縮。