国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle性能優(yōu)化之Rollback Segment優(yōu)化

瀏覽:4日期:2023-11-11 19:49:30

1、概念

Transaction以輪循的方式使用rollback segment里的extent,當(dāng)前所在的extent滿時(shí)就移動(dòng)到下一個(gè)extent。可能有多個(gè)transaction同時(shí)向同一個(gè)extent寫數(shù)據(jù),但一個(gè)rollback segment block中只能保存一個(gè)transaction的數(shù)據(jù)。

Oracle 在每個(gè)Rollback segment header中保存了一個(gè)transaction table,包括了每個(gè)rollback segment中包含的事務(wù)信息,rollback segment header的活動(dòng)控制了向rollbak segment寫入被修改的數(shù)據(jù)。rollback segment header是經(jīng)常被修改的數(shù)據(jù)庫塊,因此它應(yīng)該被長時(shí)間留在buffer cache中,為了避免在transaction table產(chǎn)生競(jìng)爭(zhēng)導(dǎo)致性能下降,應(yīng)有多個(gè)rollback segment或應(yīng)盡量使用oracle server 自動(dòng)管理的rollback segment。

2、診斷rollback segment header的競(jìng)爭(zhēng)

如果rollback segment 由手工管理,下列措施診斷rollback segment header的競(jìng)爭(zhēng)

SELECT class,count FROM v$waitstat WHERE class LIKE '%undo%' ;

SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN ('db block gets','consistent gets');

任何類型的等待次數(shù)(count)與總請(qǐng)求數(shù)(sum)的比率,不能超過1%。或select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;

waits的匯總數(shù)與gets的匯總數(shù)的比率應(yīng)低于1%,如果超過1%,應(yīng)創(chuàng)建更多的rollback segment。

下列字段數(shù)值如果大于0,則表明在rollback segment header上存在競(jìng)爭(zhēng):

A、v$rollstat 中的waits

B、v$waitstat中的undo header行

C、v$system_event中的undo segment tx slot事件

3、消耗更少的rollback segment

1)如果是刪除表里所有的數(shù)據(jù),盡可能使用trauncate而不是delete。

2)在應(yīng)用中允許用戶有規(guī)律的提交,盡可能不用長事務(wù)。

3)• Import– Set COMMIT = Y– Size the set of rows with BUFFER• Export: Set CONSISTENT=N• SQL*Loader: Set the COMMIT intervals with ROWS

4、小回滾段可能出現(xiàn)的問題

A、事務(wù)由于缺少回滾空間失敗

B、由于下列原因?qū)е碌?ldquo;Snapshot too old問題:

Block里的事務(wù)列表被刷新,block里的SCN比列表Interested Transaction List(ITL)里起始事務(wù)的SCN更新;

Rollback segment header里的Transaction slot被重用;

回滾數(shù)據(jù)已經(jīng)被重寫;

5、9i的自動(dòng)回滾管理

Undo_managment指定了回滾空間的管理方式:Auto:自動(dòng)管理;Manual:手工管理回滾段。

Undo_retention指定了回滾數(shù)據(jù)的保留期限;

Undo_tablespace指定了被使用的回滾表空間;

Oracle自動(dòng)管理的表空間可以在常見數(shù)據(jù)庫的時(shí)候創(chuàng)建,也可以單獨(dú)建立。回滾表空間可以相互轉(zhuǎn)換(switch),但在某一時(shí)刻只能有一個(gè)回滾表空間處于活動(dòng)狀態(tài)。回滾表空間處于非活動(dòng)狀態(tài)時(shí)可以刪除,如果有對(duì)處于被刪除回滾表空間里的已提交事務(wù)的查詢時(shí),oracle會(huì)返回一個(gè)錯(cuò)誤。

估計(jì)undo tablespace大小的公式:

Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;

可以使用下列的sql設(shè)定undo_retention和undo tablespace:

select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name ='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name='db_block_size');

其中:

Rd:undo_retention設(shè)置的時(shí)間;

Ups:undo blocks per second;

Overhead:rollback segment header;

標(biāo)簽: Oracle 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 盐城市| 刚察县| 阳山县| 邵阳县| 林州市| 阜新| 滁州市| 手机| 武安市| 马关县| 巴青县| 比如县| 德昌县| 禹城市| 荣成市| 沈丘县| 长阳| 牙克石市| 江源县| 周宁县| 南城县| 汉源县| 瑞金市| 漳浦县| 内乡县| 沾益县| 县级市| 搜索| 溧阳市| 宜阳县| 武陟县| 花垣县| 甘孜县| 丰都县| 渑池县| 凌云县| 东乌| 蓝田县| 锡林浩特市| 博客| 旌德县|