日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 12c缩容磁盘组,oracle 表收缩

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 12c缩容磁盘组,oracle 表收缩 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當使用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??ENABLE?ROW?MOVEMENT???-->前提條件

ALTER?TABLE??SHRINK?SPACE?[??|?COMPACT?|?CASCADE?];

ALTER?TABLE??SHRINK?SPACE?COMPCAT;??-->縮小表和索引,不移動高水位線,不釋放空間

ALTER?TABLE??SHRINK?SPACE;?????-->收縮表,降低高水位線;

ALTER?TABLE??SHRINK?SPACE?CASCADE;?-->收縮表,降低高水位線,并且相關索引也要收縮一下

ALTER?TABLE??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;

總結

以上是生活随笔為你收集整理的oracle 12c缩容磁盘组,oracle 表收缩的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。