中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle 表收縮

發布時間:2020-07-15 17:55:38 來源:網絡 閱讀:1681 作者:一個笨小孩 欄目:關系型數據庫

當使用delete表數據后,空間無法釋放,可以使用表收縮釋放表空間;

注意:當delete表大量數據的時候要注意undo,可以使用:alter  table  emp  nologging; 讓其不生產日志


一、表的增長方式

    當表被創建后,隨著記錄的不斷插入,組成表的區間會被填滿,如果啟用了自動擴展,則當區間填滿后,會分配新的區間。假定高水

    位線隨著記錄的增加從最左端往右端來移動,當到底部區間的尾端時,則新的區間將會被分配。

    

二、表可收縮的原理

    隨著記錄的增加高水位線不斷的右移,記錄的刪除不會導致高水位線往回(左)移動

    刪除記錄后的空閑空間(高水位線左側)盡管可以使用,但其稀疏性導致空間空閑

    注:完整的表掃描所耗費的時間不會因為記錄的減少(刪除)而減少


三、使用 alter table tbname shrink space 來收縮表段

 1. 實現原理

     實質上構造一個新表(在內部表現為一系列的DML操作,即將副本插入新位置,刪除原來位置的記錄)

     靠近末尾處(右端)數據塊中的記錄往開始處(左端)的空閑空間處移動(DML操作),不會引起DML觸發器

     當所有可能的移動被完成,高水位線將會往左端移動(DDL操作)

     新的高水位線右邊的空閑空間被釋放(DDL操作)

     

 2. 實現前提條件

     必須啟用行記錄轉移(enable row movement)

     僅僅適用于堆表,且位于自動段空間管理的表空間(堆表包括:標準表,分區表,物化視圖容器,物化視圖日志表)

 

 3. 不能實現收縮的表

     群集表

     具有LONG類型列的表

     LOB段(盡管表本身可以被縮小),注,10gR2以后版本支持對LOB段的收縮

     具有基于提交的物化視圖的表(因為禁用了觸發器)

     具有rowid物化視圖的表(因為rowid發生了變化)

     IOT映射表IOT溢出段

     索引基于函數的表

     未啟用行記錄轉移的堆表

     

 4. 段收縮的優點

     提高緩存利用率,提高OLTP的性能

      減少磁盤I/O,提高訪問速度,節省磁盤空間

      段收縮是在線的,索引在段收縮期間維護,不要求額外的磁盤空間

      

 5. 兩個選項

     cascade: 縮小表及其索引,并移動高水位線,釋放空間

     compact: 僅僅是縮小表和索引,并不移動高水位線,不釋放空間

     alter table tbname shrink space 相當于帶cascade參數

     

實戰練習:

     

1、首先刪除表里的數據

SQL> alter table FEE_COLLECT_TMP nologging;   ----設置表不產生undo

SQL> delete from FEE_COLLECT_TMP where CUTOFFDAY='20170501';    

SQL> commit;     

     

2、收縮表

SQL> alter table FEE_COLLECT_TMP enable row movement;                 -->開啟row movement                           


SQL> alter table FEE_COLLECT_TMP shrink space;                        -->shrink成功                                 

                                                                                                              


3、語法總結:    

ALTER TABLE <table_name> ENABLE ROW MOVEMENT   -->前提條件                                         
                                                                                                 
ALTER TABLE <table_name> SHRINK SPACE [ <NULL> | COMPACT | CASCADE ];                              
                                                                                                   
ALTER TABLE <table_name> SHRINK SPACE COMPCAT;  -->縮小表和索引,不移動高水位線,不釋放空間        
                                                                                                   
ALTER TABLE <table_name> SHRINK SPACE;     -->收縮表,降低高水位線;                                
                                                                                                   
ALTER TABLE <table_name> SHRINK SPACE CASCADE; -->收縮表,降低高水位線,并且相關索引也要收縮一下   
                                                                                                   
ALTER TABLE <table_name> MODIFY LOB (lob_column) (SHRINK SPACE);  -->收縮LOB段                     
                                                                                                   
ALTER INDEX IDXNAME SHRINK SPACE;     -->索引段的收縮,同表段

  

#################################################################


1、收縮普通表,批量腳本   

select'alter table '||table_name||' enable row movement;'||chr(10)||'alter table '||table_name||' shrink space;'||chr(10)from user_tables;  

                                                                                   

select'alter index '||index_name||' shrink space;'||chr(10)from user_indexes; 

  

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌鲁木齐县| 沈阳市| 时尚| 周口市| 新巴尔虎左旗| 广饶县| 博乐市| 西贡区| 平昌县| 当阳市| 通辽市| 罗城| 麻栗坡县| 南漳县| 五常市| 台湾省| 南宫市| 拉萨市| 逊克县| 台北县| 闸北区| 玉溪市| 东乡| 延边| 瑞安市| 榆中县| 沅江市| 疏勒县| 棋牌| 酒泉市| 兴仁县| 斗六市| 通道| 无锡市| 五大连池市| 故城县| 望都县| 玛沁县| 凌云县| 城步| 康马县|