十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹“分析Oracle表數(shù)據(jù)庫(kù)高水位及shrink操作”,在日常操作中,相信很多人在分析Oracle表數(shù)據(jù)庫(kù)高水位及shrink操作問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”分析Oracle表數(shù)據(jù)庫(kù)高水位及shrink操作”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)是專業(yè)的驛城網(wǎng)站建設(shè)公司,驛城接單;提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行驛城網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
segment shrink分為兩個(gè)階段:
1、數(shù)據(jù)重組(compact):通過(guò)一系列insert、delete操作,將數(shù)據(jù)盡量排列在段的前面。
在這個(gè)過(guò)程中需要在表上加RX鎖,即只在需要移動(dòng)的行上加鎖。由于涉及到rowid的改變,需要enable row movement.
同時(shí)要disable基于rowid的trigger.這一過(guò)程對(duì)業(yè)務(wù)影響比較小。
2、HWM調(diào)整:第二階段是調(diào)整HWM位置,釋放空閑數(shù)據(jù)塊。此過(guò)程需要在表上加X(jué)鎖,會(huì)造成表上的所有DML語(yǔ)句阻塞。
在業(yè)務(wù)特別繁忙的
系統(tǒng)上可能造成比較大的影響。 shrink space語(yǔ)句兩個(gè)階段都執(zhí)行。 shrink space compact只執(zhí)行第一個(gè)階段。
如果系統(tǒng)業(yè)務(wù)比較繁忙,可以先執(zhí)行shrink space compact重組數(shù)據(jù),然后在業(yè)務(wù)不忙的時(shí)候再執(zhí)行shrink space降低HWM釋放空閑數(shù)據(jù)塊。
shrink必須開(kāi)啟行遷移功能。
alter table table_name enable row movement ;
注意:alter table XXX enable row movement語(yǔ)句會(huì)造成引用表XXX的對(duì)象(如存儲(chǔ)過(guò)程、包、視圖等)變?yōu)闊o(wú)效。執(zhí)行完成后,最好執(zhí)行一下utlrp.sql來(lái)編譯無(wú)效的對(duì)象。
語(yǔ)法:
alter table
alter table
收縮表,相當(dāng)于把塊中數(shù)據(jù)打結(jié)實(shí)了,但會(huì)保持 high water mark;
alter table
收縮表,降低 high water mark;
alter table
收縮表,降低 high water mark,并且相關(guān)索引也要收縮一下下。
alter index idxname shrink space; 回縮索引
1:普通表 Sql腳本,改腳本會(huì)生成相應(yīng)的語(yǔ)句
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:分區(qū)表的處理 進(jìn)行shrink space時(shí) 發(fā)生ORA-10631錯(cuò)誤.shrink space有一些限制. 在表上建有函數(shù)索引(包括全文索引)會(huì)失敗。
Sql腳本,改腳本會(huì)生成相應(yīng)的語(yǔ)句
select ‘a(chǎn)lter table ‘||table_name||’ enable row movement;’||chr(10)||’alter table ‘||table_name||’ shrink space;’||chr(10) from user_tables where ;
select ‘a(chǎn)lter index ‘||index_name||’ shrink space;’||chr(10) from user_indexes where uniqueness=’NONUNIQUE’ ;
select ‘a(chǎn)lter table ‘||segment_name||’ modify subpartition ‘||partition_name||’ shrink space;’||chr(10) from user_segments where segment_type=’TABLE SUBPARTITION’ ‘;
另外,對(duì)于頻繁操作的表可以緩存到內(nèi)存中 oracle的db_buffer_pool由三部分組成:
buffer_pool_defualt
buffer_pool_keep
buffer_pool_recycle
如果要把表釘死在內(nèi)存中,也就是把表釘在keep區(qū)。
相關(guān)的命令為:
alter table ….. storage(buffer_pool keep);
這句命令把表示表如果緩存的話是緩存在keep區(qū)。
可以通過(guò)語(yǔ)句:
select table_name from dba_tables where buffer_pool=’KEEP’;
查詢到改表是放在keep區(qū)中的。 但是不意味著表已經(jīng)被緩存了。
下面的語(yǔ)句把表緩存:
alter table …. cache;
可以通過(guò)
select table_name from dba_ tables where rtrim(cache)=’Y’
查詢到該表已經(jīng)被緩存了。
加入到keep區(qū)的表不是說(shuō)不能被移出內(nèi)存,不過(guò)是比較不容易移出內(nèi)存。
也可以手工來(lái)移出內(nèi)存,命令如下:
alter table … nocache;
到此,關(guān)于“分析Oracle表數(shù)據(jù)庫(kù)高水位及shrink操作”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!