轉載-oracle Shrink命令的使用
從10g開始,oracle開始提供Shrink的命令,假如我們的表空間中支援自動段空間管理 (ASSM),就可以使用這個特性縮小段,即降低HWM。
Shrink的兩大功能
1、降低高水位線會使得full table scan的效率得以提升
2、回縮資料庫空閒的空間
segment shrink分為兩個階段:
1、資料重組(compact):通過一系列insert、delete操作,將資料儘量排列在段的前面。在這個過程中需要在表上加RX鎖,即只在需要移動的行上加鎖。由於涉及到rowid的改變,需要enable row movement.同時要disable基於rowid的trigger.這一過程對業務影響比較小。
2、HWM調整:第二階段是調整HWM位置,釋放空閒資料塊。此過程需要在表上加X鎖,會造成表上的所有DML語句阻塞。在業務特別繁忙的系統上可能造成比較大的影響。
shrink space語句兩個階段都執行。
shrink space compact只執行第一個階段。
如果系統業務比較繁忙,可以先執行shrink space compact重組資料,然後在業務不忙的時候再執行shrink space降低HWM釋放空閒資料塊。
shrink必須開啟行遷移功能。
alter table table_name enable row movement ;
注意:alter table XXX enable row movement語句會造成引用表XXX的物件(如儲存過程、包、檢視等)變為無效。執行完成後,最好執行一下utlrp.sql來編譯無效的物件。
語法:
alter
table
<table_name> shrink space [
alter table <table_name> shrink space compcat;
收縮表,相當於把塊中資料打結實了,但會保持 high water mark;
alter table <tablespace_name> shrink space;
收縮表,降低 high water mark;
alter table <tablespace_name> shrink space cascade;
收縮表,降低 high water mark,並且相關索引也要收縮一下下。
alter index idxname shrink space;
回縮索引
1:普通表
Sql指令碼,改指令碼會生成相應的語句
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;
注:這裡可以直接通過oem工具,在段的指導建議案裡面得出哪些物件是需要操作的,並且OEM會直接給出SQL.
2:分割槽表的處理
進行shrink space時 發生ORA-10631錯誤.shrink space有一些限制.
在表上建有函式索引(包括全文索引)會失敗。
Sql指令碼,改指令碼會生成相應的語句
select ‘alter table ‘||table_name||’ enable row movement;’||chr(10)||’alter table ‘||table_name||’ shrink space;’||chr(10) from user_tables where ;
select ‘alter index ‘||index_name||’ shrink space;’||chr(10) from user_indexes where uniqueness=’NONUNIQUE’ ; www.2cto.com
select ‘alter table ‘||segment_name||’ modify subpartition ‘||partition_name||’ shrink space;’||chr(10) from user_segments where segment_type=’TABLE SUBPARTITION’ ‘;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10678398/viewspace-720967/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉】Oracle:MOVE與SHRINK命令相比較Oracle
- Oracle中shrink space命令詳解Oracle
- Oracle中shrink space命令詳解[轉]--還示測試Oracle
- 轉載-Oracle 常用的dump命令Oracle
- 【SHRINK】Oracle收縮表的詳細命令參考Oracle
- oracle shrinkOracle
- oracle shrink tableOracle
- Oracle DBA常用命令 [ 轉載]Oracle
- 轉載 oracle 跟蹤檔案 和轉儲命令Oracle
- Oracle 10g Shrink Table - Shrink Space 收縮空間Oracle 10g
- 【轉載】Oracle RAC 常用維護工具和命令Oracle
- How to Shrink Undo Segment In Oracle DatabaseOracleDatabase
- 【轉載】oracle全文索引的建立和使用Oracle索引
- 【轉載】linux tail命令的使用方法詳解LinuxAI
- 11. [轉載]linux中awk命令使用Linux
- [Oracle] Shrink space & Table move比較Oracle
- 轉載:使用Log Miner分析Oracle日誌Oracle
- alter table move跟shrink space的區別(轉)
- Oracle 10g Shrink Table 詳解Oracle 10g
- oracle 分割槽表進行shrink操作Oracle
- oracle10g shrink space 降低HWMOracle
- Oracle使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- 【Oracle】使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- 轉:Oracle常用dump命令Oracle
- 【轉】oracle基本命令Oracle
- Oracle 常用dump命令 - 轉Oracle
- Oracle常用dump命令(轉)Oracle
- powermt 命令簡介(轉載)
- ANT命令總結(轉載)
- [轉載]Aix vmstat命令解析AI
- 轉載oracle awrOracle
- login.sql所在的位置 顯示當前連線的oracle SID及使用者命令 轉載SQLOracle
- Oracle move和shrink釋放高水位空間Oracle
- 【轉】oracle裡的常用命令Oracle
- Oracle DataGuard 常用維護命令參考手冊 [轉載記錄]Oracle
- Unix下打包命令的使用(轉)
- Shrink 不支援IOT MAPPING TABLES的測試(轉)APP
- 【轉載】使用檢視V$RESERVED_WORDS得到Oracle的保留字Oracle