在我的系統中,永久數據與某些臨時數據(如日誌)是分開的。這是通過將日誌表(用戶定義的程序日誌,不要與系統日誌混淆)放在與主表不同的表空間中完成的。Oracle數據文件碎片整理
所以有兩個表空間MAIN
和LOG
。一個數據文件適用於每個表空間。兩個數據文件maxsize都設置爲4GB,它們的初始大小爲8MB,並且它們自動延伸到下一個8MB。
由於我使用oracle的express版本,我總共需要它們不超過4GB。
而且有時會發生,當我需要減少,以釋放部分空間用於必要的數據LOG數據文件的大小。
現在我這樣做是這樣的:
truncate table schema_name.log_table;
alter database datafile '/path/to/the/log/datafile/log1.dbf' resize 128M;
和它的作品,因爲truncate
擺脫的在數據文件中的所有信息。
但是,如果我遇到一種情況,當我需要爲MAIN表空間釋放一些大小時會怎麼樣。我截斷幾個表有(或我才知道被用於一些操作有一個在數據文件的可用空間,它已分配但未被通過數據occupated,),現在需要以整理主表空間的數據文件,以減少它的大小。沒有碎片整理我得到一個異常:
ORA-03297: file contains used data beyond requested RESIZE value
所以我能夠對數據文件莫名其妙地執行碎片整理操作?
參見https://oracle-base.com/articles/misc/reclaiming-unused-space和[碎片整理表空間@ asktom](https://asktom.oracle.com/pls/asktom/f%3Fp%3D100 :11:0 :::: p11_question_id:7149039425561)。 – Vadzim