Oracle 資料檔案回收
--模擬資料插入
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 應該也可以的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30327022/viewspace-2688378/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料檔案和臨時檔案的管理Oracle
- oracle資料庫的配置檔案Oracle資料庫
- oracle 線上rename資料檔案Oracle
- 修改Oracle資料檔名及資料檔案存放路徑Oracle
- oracle徹底刪除資料檔案Oracle
- oracle uncatalog資料庫備份檔案Oracle資料庫
- WAL檔案回收
- oracle dg庫資料檔案空間不足Oracle
- Oracle10g刪除資料檔案Oracle
- 【Oracle】如何修改資料檔案和日誌檔案的路徑Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- oracle11g修改資料檔案路徑Oracle
- oracle 普通表空間資料檔案壞塊Oracle
- oracle 修改資料檔案位置(路徑)(移動)Oracle
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- oracle 修改資料檔案路徑(四種方式)Oracle
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- Oracle DG備庫手動管理新增資料檔案Oracle
- 電腦回收站檔案清空?教你一鍵恢復清空資料
- ORACLE RAC ASM資料檔案遷移OMF檔案報錯ORA-01276解決OracleASM
- 基於Docker部署Oracle、MySQL等資料庫的資料檔案持久化DockerOracleMySql資料庫持久化
- oracle dg庫資料檔案建立失敗ORA-01111Oracle
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- Oracle 控制檔案Oracle
- 【kingsql分享】使用BBED修改Oracle資料檔案頭推進SCNSQLOracle
- oracle升級後資料檔案路徑變為大寫Oracle
- Oracle 資料庫應急寶典(二)_引數檔案篇Oracle資料庫
- 檔案與資料
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- oracle 新增儲存自動擴充套件資料檔案流程(auto)Oracle套件
- Oracle 19c standby 建立資料檔案報錯ORA-01111Oracle
- Oracle 之利用BBED修改資料塊SCN----沒有備份資料檔案的資料恢復Oracle資料恢復
- BBED 修改oracle 資料檔案的 SCN 號來做資料庫不完全恢復。Oracle資料庫
- ORACLE 概要檔案管理Oracle
- Oracle 密碼檔案Oracle密碼