Oracle 找出需要回收高水位的表
首先是分析表,以得到最準確的統計,
select round((1-a.used/b.num_total)*100,0) percent from
(SELECT COUNT (DISTINCT SUBSTR(rowid,1,15)) Used FROM 表名) a,
(select blocks num_total from dba_tables where table_name='表名 and wner='使用者名稱') b;
通過dba_tables裡的blocks欄位和有資料的欄位做對比,在用1減,求出沒有資料的塊的百分比(一般超過20%就需要回收了)從而判定是否需要回收高水位線,下面是一個回收高水位線的例子:
Shrink是通過事務的方式將資料行從一個資料塊轉移到另一個資料塊。收縮過程中,表仍然可以進行DML操作
當然,事務要能夠進行DML操作,還是需要等待收縮引起的事務鎖釋放。
收縮雖然是事務,但是資料並沒有發生變化,因此不會引起觸發器的觸發。
使用shrink的前提條件
1、表所在的表空間必須使用ASSM(自動段空間管理)
2、在收縮表上必須啟用row movement選項
啟用表的行轉移功能
SQL> alter table test_shrik enable row movement ;
Table altered.
壓縮高水位線
SQL> alter table test_shrik shrink space ;
Table altered.
檢視統計資訊
SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS
2 from user_tables t
3 where table_name = upper('test_shrik');
TABLE_NAME BLOCKS EMPTY_BLOCKS NUM_ROWS
------------------------------ ---------- ------------ ----------
TEST_SHRIK 306 0 101835
收集統計資訊
SQL> exec dbms_stats.gather_table_stats('sys','test_shrik');
PL/SQL procedure successfully completed.
再次檢視
SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS
2 from user_tables t
3 where table_name = upper('test_shrik');
TABLE_NAME BLOCKS EMPTY_BLOCKS NUM_ROWS
------------------------------ ---------- ------------ ----------
TEST_SHRIK 151 0 99344
高水位線已經下降了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8554499/viewspace-659914/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 高水位線(HWM)Oracle
- oracle 高水位分析處理Oracle
- oracle高水位線處理Oracle
- 一、oracle 高水位線詳解Oracle
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- ORACLE資料庫降低高水位線方法Oracle資料庫
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- ORACLE 如何診斷高水位爭用(enq: HW – contention)OracleENQ
- Oracle 高水位查詢和處理方法彙總Oracle
- 關於高水位的知識
- Oracle資料庫高水位釋放——LOB欄位空間釋放Oracle資料庫
- Oracle回收站表閃回機制研究Oracle
- Sqlserver的表沒有高水位但是有碎片的概念,sqlserver表的碎片的檢視和整理方法SQLServer
- Oracle move和shrink釋放高水位空間Oracle
- oracle 回收站功能Oracle
- Oracle 資料檔案回收Oracle
- 如何在 Linux 中找出 CPU 佔用高的程序Linux
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- oracle的表Oracle
- oracle改了表名後,不需要去更改授權Oracle
- 【RECYCLEBIN】Oracle回收站詳解Oracle
- 高價回收,Laravel原始碼Laravel原始碼
- oracle 透過pid 找到sid 再找出執行sqlOracleSQL
- flink 中的水位線(Watermark)
- Ooracle 高水位線(high water mask)在不同段管理模式下的推進Oracle模式
- V8 —— 你需要知道的垃圾回收機制
- 如何根據MLOG$表的CHANGE_VECTOR$$找出被更新的列
- win10平板模式找不到回收站怎麼辦_win10系統平板模式如何找出回收站Win10模式
- oracle 的表壓縮Oracle
- flink版本: 1.14.6 flink水位生成以及基於水位觸發視窗的計算
- 聊聊flink水位線
- Oracle修改字符集前如何找出可能出現問題的資料?Oracle
- 【ASK_ORACLE】關於Oracle索引分裂你需要知道的Oracle索引
- oracle表空間的整理Oracle
- oracle 臨時表的使用Oracle
- oracle設定process需要注意的事情Oracle
- MySQL如何通過分析binlog日誌找出操作頻繁的表MySql
- Oracle建表Oracle
- Oracle 外部表Oracle