oracle高水位線處理
簡單概念:
高水位線簡單理解可以理解成放過水的木桶中留下的水痕,告訴別人它曾經有這麼多水,類比到資料庫,
某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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 高水位分析處理Oracle
- ORACLE 高水位線(HWM)Oracle
- Oracle 高水位查詢和處理方法彙總Oracle
- 一、oracle 高水位線詳解Oracle
- ORACLE資料庫降低高水位線方法Oracle資料庫
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- ORACLE 如何診斷高水位爭用(enq: HW – contention)OracleENQ
- Oracle CPU使用率過高問題處理Oracle
- 聊聊flink水位線
- Oracle SQL處理OracleSQL
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- 高通處理器CPU效能路線圖
- Oracle資料庫高水位釋放——LOB欄位空間釋放Oracle資料庫
- Oracle壞塊處理Oracle
- oracle異常處理Oracle
- 關於高水位的知識
- flink 中的水位線(Watermark)
- oracle ORA-08104處理Oracle
- Oracle更新Opatch故障處理Oracle
- Oracle非法日期 處理方案Oracle
- Oracle TX鎖的處理Oracle
- Oracle move和shrink釋放高水位空間Oracle
- Oracle密碼過期處理Oracle密碼
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- Oracle 監聽異常處理Oracle
- 【SQL】Oracle SQL處理的流程SQLOracle
- Ooracle 高水位線(high water mask)在不同段管理模式下的推進Oracle模式
- oracle SP2-問題處理Oracle
- Oracle 10g RAC故障處理Oracle 10g
- oracle ora-00054錯誤處理Oracle
- oracle遊標批次處理資料Oracle
- Oracle 11.2.0.4 Dataguard兩則故障處理Oracle
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- 【Oracle】死鎖的產生與處理Oracle
- Oracle日常問題處理ORA-04031Oracle
- ORACLE ORA-01110: ORA-27072: 處理Oracle
- Oracle開發基礎-異常處理Oracle