轉載-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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【SHRINK】Oracle收縮表的詳細命令參考Oracle
- Oracle move和shrink釋放高水位空間Oracle
- oracle中執行os命令(轉)Oracle
- powermt 命令簡介(轉載)
- [轉載] Oracle:start with...connect by子句的用法Oracle
- [轉載]GIt命令一覽表Git
- 關於轉儲Oracle索引資訊的相關命令Oracle索引
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- oracle Forms Builder常用函式 (轉載)OracleORMUI函式
- DataGridView使用 --轉載View
- CAD如何使用旋轉命令
- vector::shrink_to_fit()
- CSS flex-shrinkCSSFlex
- SpringMVC-RequestContextHolder的使用 -- 轉載SpringMVCContext
- WPF使用MVVM(三)-事件轉命令MVVM事件
- glog 使用教程 轉載
- iOS RAC 的使用總結 (轉載)iOS
- linux裡掛載(mount)和取消掛載(umount)命令的使用Linux
- 關於oracle的Spool命令Oracle
- [轉載] PyCharm、CLion 的設定和使用PyCharm
- 【轉載】MapStruct使用填坑Struct
- alter table move與shrink space
- 編寫ORACLE效能報告的九大注意事項(轉載)Oracle
- PowerDesigner連線Oracle逆向生成資料模型(轉載)Oracle模型
- 如何使用curl命令下載檔案
- 轉:使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- 把Oracle的命令輸出傳送到檔案的命令Oracle
- linux的test命令(轉)Linux
- 使用硬連結和coreutils的truncate工具shrink大檔案方法一例
- [轉載] 使用Redis的Java客戶端JedisRedisJava客戶端
- Oracle相關命令Oracle
- Oracle登入命令Oracle
- Oracle-exp命令Oracle
- ORACLE中日期和時間函式彙總(轉載)Oracle函式
- Oracle ASM使用asmcmd中的cp命令來執行遠端複製OracleASM
- 3、使用Windows命令來實現埠轉發Windows
- Oracle 轉MySqlOracleMySql
- ORACLE TEXT(轉)Oracle
- ORACLE EVENTS(轉)Oracle