oracle高水位線處理

wanglinghua0907發表於2023-12-29

簡單概念:

高水位線簡單理解可以理解成放過水的木桶中留下的水痕,告訴別人它曾經有這麼多水,類比到資料庫,

某a表曾經存放0資料,那高水位線就在0這裡,如果存放10000,那高水位線就在10000這,如果delete

(truncate不會保留高水位線)了後,那高水位線還是在10000這,代表曾經到達的最高位。全表掃描會

一直掃到高水位線,即使裡面全是空的,所以會延長全表掃描的時間。

判斷高水位線:

1.定性的方法,資料塊多、行數少,表的塊數量與表大小比對,必定存在高水位線

select owner,tablespace_name,TABLE_NAME,BLOCKS,NUM_ROWS*AVG_ROW_LEN/1024/1024 "m",NUM_ROWS,EMPTY_BLOCKS,
AVG_SPACE_FREELIST_BLOCKS,AVG_ROW_LEN,NUM_FREELIST_BLOCKS from dba_tables where
TABLE_NAME='LIS_INSPECTION_RESULT';


2.儲存過程判斷

網上有很多可以搜尋。


3.查詢資料庫中某個表空間下,可以實際儲存和需要的表空間差別最大的前10張表

從統計資訊的出平均每行的長度和總行數

AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9=判斷的儲存size(AVG_ROW_LEN*NUM_ROWS),

建議收集統計資訊後查比較準確,90%的使用率,所以算大小再/0.9。Dba_tables中的AVG_ROW_LEN

以位元組(b)為單位 BLOCKS*8/1024=塊數x每個塊8k/1024


語句(替換表)

SELECT NUM_ROWS,AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9 NEED, BLOCKS*8/1024 TRUE,(BLOCKS*8/1024-AVG_ROW_LEN*
NUM_ROWS/1024/1024/0.9) RECOVER_MB,TABLE_NAME FROM dba_tables WHERE TABLESPACE_NAME='BB' AND BLOCKS*8/
1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9>100 AND rownum<11 order by RECOVER_MB desc;

不準確的可能性:

1.統計資訊未收集,dba_tables檢視裡記錄的不是最新的資料。

2.可能lob欄位的原因,lob的資訊不記錄在dba_tables裡。


處理方法:

1.重建表(不建議使用,整個表會鎖住,且索引需要重建)

alter table table_name move;

Rebuild index

收集統計資訊


2.shrink(收縮表)(建議使用)

時間較短,過程中部影響使用,開始和結束的時候會有鎖,建議晚上業務低峰期操作


shink表空間必須為ASSM管理

select TABLESPACE_NAME,BLOCK_SIZE,SEGMENT_SPACE_MANAGEMENT,ALLOCATION_TYPE from dba_tablespaces;

Auto為是assm管理


需要先開啟行遷移

alter table TEST_TAB enable row movement;

再收縮

alter table table_name shrink space;

關閉

alter table test_stud1 disable row movement;


1.對錶的shrink space並不會導致其上的索引一併收縮空間。

2.SHRINK SPACE不支援對存在函式索引的表的操作。

3.SHRINK SPACE COMPACT只對目標物件做空間碎片整理,但並不調整高水位標誌,也不會回收空間。但SHRINK SPACE則還會調整高水位標誌,並回收空間。


假如 要同時壓縮表的索引:ALTER TABLE TEST_TAB SHRINK SPACE CASCADE


3.expdp/impdp

匯入匯出一遍


4.複製到另個表,換名字

複製要儲存 的資料到臨時表t,drop原表,然後rename臨時表t為原表


5.Alter table table_name deallocate unused

注:這證明,DEALLOCATE UNUSED為釋放HWM上面的未運用 空間,但是並不會釋放HWM下面的自由空間,也不會移動HWM的位置.


6.線上重定義


7.truncate(不現實)


8.等等方法

來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69980685/viewspace-3002074/,如需轉載,請註明出處,否則將追究法律責任。

相關文章