您好,登錄后才能下訂單哦!
數據庫運行了一段時間,經過一些列的刪除、插入、更改操作有些表的高水位線就有可能和實際的表存儲數據的情況相差特別多,為了提高檢索該表的效率,建議對這些表進行收縮;
表的存儲結構;
從統計信息得出平均每行的長度和總共的行數,從而知道存儲的SIZE;
c) 查找數據庫中某個表空間下,可以實際存儲和需要的表空間差別最大的表,查找腳本如下:
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='PSAPSR3' AND BLOCKS*8/1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9>100
AND rownum<11 order by RECOVER_MB desc;
因為所有的信息都是根據dba_tables,表的信息是根據統計信息得到的,所以如果統計信息不準確,那么整個搜索的結果都可能是錯誤的;
統計信息的腳本:exec dbms_stats.gather_table_stats('user','table_name');
a) 啟動行遷移:alter table table_name enable row movement ;
b)進行表的收縮:alter table table_name shrink space ;
SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS
from user_tables
where table_name = upper('table_name');
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文作者:JOHN
ORACLE技術博客:ORACLE 獵人筆記 數據庫技術群:367875324 (請備注ORACLE管理 )
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。