降低oracle高水位線方法總結

2021-08-21 08:10:30 字數 1079 閱讀 6411

1. 執行表重建指令 alter table table_name move(驗證不可行,不降低水位線,但可釋放表空間)

當你建立了乙個物件如表以後,不管你有沒有插入資料,它都會占用一些塊,oracle也會給它分配必要的空間.同樣,用alter table move釋放自由空間後,還是保留了一些空間給這個表. 

alter table ... move 後面不跟引數也行,不跟參數列還是在原來的表空間,move後記住重建索引. 

查詢失效索引語句:select index_name,table_name,tablespace_name,status from dba_indexes where owner='hnunicom' and status<>'valid';

重建索引語句:alter index index_name rebuild tablespace tablespace_name;

如果以後還要繼續向這個表增加資料,沒有必要move,只是釋放出來的空間,只能這個錶用,其他的表或者segment無法使用該空間。

2. 執行alter table table_name shrink space;(已經驗證成功,推薦使用,可釋放資料庫和磁碟空間空間,大表可同時降低表自身和表空間的高水位線,小表則只可以降低表自身的高水位線,原因不詳)

注意,此命令為oracle 10g新增功能,執行該指令之前必須允許行移動 alter table table_name enable row movement;

3. 複製要保留的資料到臨時表t,drop原表,然後rename臨時表t為原表(未驗證)

4. 用exp匯出後,刪除原表/表空間,之後用imp重新匯入(驗證成功)

5. alter table table_name deallocate unused(驗證不可行,不降低水位線)

注:這證明,deallocate unused為釋放hwm上面的未使用空間,但是並不會釋放hwm下面的自由空間,也不會移動hwm的位置.

6. 盡量使用truncate(驗證不可行,不降低水位線,可釋放資料庫空間,但truncate後表預設空間大小為刪除前的空間大小,如想釋放計算機磁碟空間,需要用方法2壓縮)

ps:注意上文的磁碟空間與資料庫空間是不同的概念

ORACLE的高水位線

這幾天一直在看乙個問題,乙個統計程式突然統計的資料量不正常了,從頭查到尾,覺得程式和配置都沒有問題,但就是統計出的結果不對,但發現有乙個程式的入庫檔案還存留很多,推斷可能是資料還沒入庫完全,但是什麼導致的呢,以為是那部分檔案太大,入庫太慢,但後來發現還是資料庫的問題,乙個temp表查詢空表都花費很長...

oracle 高水位線詳解

一 什麼是水線 high water mark 所有的oracle段 segments,在此,為了理解方便,建議把segment作為表的乙個同義詞 都有乙個在段內容納資料的上限,我們把這個上限稱為 high water mark 或hwm。這個hwm是乙個標記,用來說明已經有多少沒有使用的資料塊分配...

oracle 高水位線問題

查詢高水位線 50295 0 28185 0 select blocks,empty blocks from dba tables where table name todayotherconsumerecords and owner iccardyiwu alter table todayothe...