如何評估undo表空間大小

今天就跟大家聊聊有關(guān)如何評估undo表空間大小,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東寧企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè),東寧網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

如何估算Oracle數(shù)據(jù)庫所需的UNDO表空間的大小:
How To Size UNDO Tablespace For Automatic Undo Management (文檔 ID 262066.1)

要確定Oracle需要的UNDO 表空間的大小,需要以下三條信息:

UR 以秒為單位的UNDO_RETENTION
UPS 每秒生成的還原數(shù)據(jù)塊的數(shù)量
DBS db_block_size

UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)

UNDO_RETENTION是一個參數(shù),此參數(shù)控制為提供讀一致性而保留的還原數(shù)據(jù)量,以秒為單位定義,可以在初始化文件中設(shè)置,或使用 ALTER SYSTEM 命令來動態(tài)修改。

SQL>ALTER SYSTEM SET UNDO_RETENTION=900;

SQL> show parameter undo_retention

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 900
如果值為900,則可以使還原數(shù)據(jù)保留 15 分鐘,當然需要足夠的存儲空間才行。

那么如何計算每秒生成的還原數(shù)據(jù)塊的數(shù)量呢,可以通過v$undostat視圖的begin_time、end_time和undoblks三個字段的值查詢出來,計算的SQL語句如下:
SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes" FROM (SELECT value AS UR  FROM v$parameter WHERE name = 'undo_retention'),(SELECT (SUM(undoblks)/SUM(((end_time -begin_time)*86400))) AS UPS  FROM v$undostat),  (SELECT value AS DBS FROM v$parameter  WHERE name = 'db_block_size');
  Bytes
----------
445814.844


詳解:

一般應(yīng)該在一天中數(shù)據(jù)庫負載最繁重的時候進行計算。
對于UNDO表空間大小的定義需要考慮UNDO_RETNETION參數(shù)、產(chǎn)生的UNDO BLOCKS/秒、UNDO BLOCK的大小。undo_retention:對于UNDO表空間的數(shù)據(jù)文件屬性為autoextensible,則undo_retenion參數(shù)必須設(shè)置,UNDO信息將至少保留至undo_retention 參數(shù)設(shè)定的值內(nèi),但UNDO表空間將會自動擴展。對于固定UNDO表空間,將會通過表空間的剩余空間來最大限度保留UNDO信息。如果FIXED UNDO表空間沒有對保留時間作GUARANTEE(alter tablespace xxx retention guarantee;),則undo_retention參數(shù)將不會起作用。(警告:如果設(shè)置UNDO表空間為retention guarantee,則未過期的數(shù)據(jù)不會被復(fù)寫,如果表空間不夠則會導(dǎo)致DML操作失敗或者transation掛起)


Oracle 10g 有自動Automatic Undo Retention Tuning 這個特性。設(shè)置的 undo_retention 參數(shù)只是一個指導(dǎo)值,,Oracle 會自動調(diào)整 Undo (會跨過 undo_retention 設(shè)定的時間) 來保證不會出現(xiàn) Ora-1555 錯誤.。通過查詢V$UNDOSTAT(該視圖記錄4天以內(nèi)的UNDO表空間使用情況,超過4天可以查詢DBA_HIST_UNDOSTAT視圖) 的 tuned_undoretention (該字段在10G版本才有,9I是沒有的)字段可以得到Oracle 根據(jù)事務(wù)量(如果是文件不可擴展,則會考慮剩余空間)采樣后的自動計算出最佳的 retenton 時間.。這樣對于一個事務(wù)量分布不均勻的數(shù)據(jù)庫來說,,就會引發(fā)潛在的問題--在批處理的時候可能 Undo 會用光, 而且這個狀態(tài)將一直持續(xù), 不會釋放。


SQL查詢tuned_undoretention:
select to_char(begin_time,'DD-MON-RR HH24:MI') begin_time,to_char(end_time,'DD-MON-RR HH24:MI') end_time,tuned_undoretention from v$undostat order by end_time;


檢查一天平均每秒產(chǎn)生的UNDO BLOCK
select (sum(undoblks)/sum((end_time-begin_time)*86400) from v$undostat;
生成的結(jié)果是UNDO BLOCK,如果需要計算出實際大小,則需要乘以db_block_size(通過show parameter db_block_size查出來)

如何計算合適的UNDO表空間大?。?/strong>
select (UR*(UPS*DBS))+(DBS*24) as "bytes" from (select value as UR from v$parameter where name='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*86400))) as ups from v$undostat),(select value as DBS from v$parameter where name='db_block_size');

看完上述內(nèi)容,你們對如何評估undo表空間大小有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)站欄目:如何評估undo表空間大小
URL網(wǎng)址:http://www.muchs.cn/article10/jpcdgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、微信公眾號、云服務(wù)器App設(shè)計品牌網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)