您好,登錄后才能下訂單哦!
--模擬數據插入
DECLARE
I NUMBER(10);
BEGIN
FOR I IN 1 .. 50000 LOOP
INSERT INTO TEST_TAB VALUES (I, 'TESTSTRING');
END LOOP;
COMMIT;
END;
/
PL/SQL procedure successfully completed.
TEST88@nopdb>select count(*) from TEST_TAB;
COUNT(*)
----------
50000
SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;
FILE_ID MAX(BLOCK_ID)
---------- -------------
7 155776
SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;
FILE_ID HWMSIZE
---------- ----------
7 1217
--MOVE 操作
TEST88@nopdb>alter table TEST_TAB move online;
Table altered.
TEST88@nopdb>select count(*) from TEST_TAB;
COUNT(*)
----------
50000
SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;
FILE_ID HWMSIZE
---------- ----------
7 1290
SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;
FILE_ID MAX(BLOCK_ID)
---------- -------------
7 165120
--說明使用了新塊;
--查看表空間使用
TABLESPACE_NAME AUTOEXTENSIBLE CURRENT_SPACE_G CURRENT_USED_G MAX_SIZE_G TOTAL_USED_PCT
---------------------------------------- --------------- --------------- -------------- ---------- --------------
TEST88 NO 2 .01 2 .00
SYS@nopdb>alter database datafile 7 resize 1g;
alter database datafile 7 resize 1g
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
--此時證明確實不能回收空塊,因為分給表塊并沒有回收
--對表進行truncate
TEST88@nopdb>truncate table TEST_TAB;
TEST88@nopdb>select count(*) from TEST_TAB;
COUNT(*)
----------
0
SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;
FILE_ID MAX(BLOCK_ID)
---------- -------------
7 163984
SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;
FILE_ID HWMSIZE
---------- ----------
7 1281
Table truncated.
表空間使用率:
TABLESPACE_NAME AUTOEXTENSIBLE CURRENT_SPACE_G CURRENT_USED_G MAX_SIZE_G TOTAL_USED_PCT
---------------------------------------- --------------- --------------- -------------- ---------- --------------
TEST88 NO 2 0 2 .00
--移動到其它表空間
TEST88@nopdb>alter table TEST_TAB move tablespace users online;
Table altered.
--在移動回來
TEST88@nopdb>alter table TEST_TAB move tablespace TEST88 online;
Table altered.
SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;
FILE_ID MAX(BLOCK_ID)
---------- -------------
7 136
SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;
FILE_ID HWMSIZE
---------- ----------
7 1
SYS@nopdb>alter database datafile 7 resize 2m;
Database altered.
測試結果:只有移動其它表空間才可以釋放已經申請的塊。DROP 應該也可以的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。