從10g開始,oracle開始提供shrink的命令,假如我們的表空間中支援自動段空間管理 (assm),就可以使用這個特性縮小段,即降低hwm。
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 *** enable row movement語句會造成引用表***的物件(如儲存過程、包、檢視等)變為無效。執行完成後,最好執行一下utlrp.sql來編譯無效的物件。
語法:
alter table shrink space [ | compact | cascade ];
alter table shrink space compcat; www.2cto.com
收縮表,相當於把塊中資料打結實了,但會保持 high water mark;
alter table shrink space;
收縮表,降低 high water mark;
alter table 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;
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』 『;
另外,對於頻繁操作的表可以快取到記憶體中
oracle的db_buffer_pool由三部分組成:
buffer_pool_defualt
buffer_pool_keep
buffer_pool_recycle
如果要把表釘死在記憶體中,也就是把表釘在keep區。
相關的命令為:
alter table ….. storage(buffer_pool keep);
這句命令把表示表如果快取的話是快取在keep區。
可以通過語句:
select table_name from dba_tables where buffer_pool=』keep』;查詢到改表是放在keep區中的。
但是不意味著表已經被快取了。
下面的語句把錶快取:
alter table …. cache;
可以通過
select table_name from dba_ tables where rtrim(cache)=』y』
查詢到該錶已經被快取了。
加入到keep區的表不是說不能被移出記憶體,不過是比較不容易移出記憶體。
也可以手工來移出記憶體,命令如下:
alter table … nocache;
作者 13594135
Linux 命令 與命令相關的命令
hash 第一次請求時會遍歷磁碟找命令,此時命令的路徑會以 形式儲存,執行hash命令會找到命令的路徑,第二次命令直接去hash表中找 hash r可以清除這個 man 安裝man的時候除了man還要安裝man pages man只包含了最基本的,詳細的資訊由man pages提供 1 使用者命令 ...
Linux ipcs命令與ipcrm命令的用法詳解
以下是對linux中的ipcs命令與ipcrm命令的用法進行了介紹,需要的朋友可以過來參考下 是linux uinx上提供關於一些程序間通訊方式的資訊,包括共享記憶體,訊息佇列,訊號 ipcs用法 ipcs a 是預設的輸出資訊 列印出當前系統中所有的程序間通訊方式的資訊 ipcs m 列印出使用共...
常用的linux命令 rcp命令
命令格式 rcp 引數 原始檔 目標檔案 命令功能 rcp命令用在遠端複製檔案或者目錄,如同時指定倆個以上的檔案或目錄,且最後的目的地是乙個已經存在的目錄,則它會把前面指定的所有檔案或目錄複製到該目錄中 命令例項 1.將當前目錄下的test1 複製到名為 webserver1的遠端系統中 rcp t...