閑聊Oracle減少回滾段
學(xué)習(xí)Oracle時,你可能會遇到Oracle減少回滾段問題,這里將介紹Oracle減少回滾段問題的解決方法,在這里拿出來和大家分享一下。當多個進程要同時使用同一資源時,就會發(fā)生資源爭用,當出現(xiàn)資源爭用時,就會產(chǎn)生等待,因此,應(yīng)設(shè)法避免或減少資源爭用的出現(xiàn)。本文主要討論回滾段、多線索服務(wù)器進程和日志緩沖區(qū)的閂鎖爭用問題。
Oracle減少回滾段的爭用
要Oracle減少回滾段的爭用,首先需檢查是否出現(xiàn)爭用。對含有回滾段塊的緩沖區(qū)的爭用也會影響到對回滾段的爭用。這可以通過查詢動態(tài)性能表V$WAITSTAT來檢測是否存在對回滾段的爭用(需有SELECT ANY TABLE持權(quán)),例如:
- SQL>SELECT class,count
- 2>FROM V$WAITSTAT
- 3>WHERE class IN('system undo header','system undo block',
- 4>'undo header','undo block');
其中參數(shù)含義如下:
◆ system undo header:對含有SYSTEM回滾段標題塊的緩沖區(qū)的等待次數(shù)。
◆ system undo block:對含有SYSTEM回滾段非標題塊的緩沖區(qū)的等待次數(shù)。
◆ undo header:對含有非SYSTEM回滾段標題塊的緩沖區(qū)的等待次數(shù)。
◆ undo block:對含有非SYSTEM回滾段非標題塊的緩沖區(qū)的等待次數(shù)。
如果任何等待次數(shù)大于總請求數(shù)的1%,則應(yīng)創(chuàng)建更多的回滾段來減少競爭,可以周期性地檢查這些統(tǒng)計數(shù)字,并將它與總的請求數(shù)據(jù)的次數(shù)作比較。總的請求數(shù)據(jù)次數(shù)可用如下語句求出:
- SQL>SELECT SUM(value)
- 2>FROM V$SYSSTAT
- 3>WHERE name IN('db block gets','consistent gets');
Oracle減少回滾段爭用的辦法是為其建立適當數(shù)量的回滾段。
減少對多線索服務(wù)器進程的爭用
對多線索服務(wù)器進程的爭用主要表現(xiàn)在對調(diào)度進程和共享服務(wù)器進程的爭用。
減少調(diào)度進程的爭用
對該進程的爭用主要表現(xiàn)在調(diào)度進程占用率高及等待響應(yīng)時間的增長方面??赏ㄟ^查詢動態(tài)性能表V$DISPATCHER(需有SELECT ANY TABLE特權(quán))來檢查爭用情況,例如:
- SQL>SELECT network "protocol",
- 2>SUM(busy)/(SUM(busy)+SUM(idle)) "Total Rate"
- 3>FROM V$DISPATCHER GROUP BY network;
其中V$DISPATCHER表中的idle和busy列的含義如下:
◆ idle:表示1%秒單位時間內(nèi)調(diào)度進程的空閑時間。
◆ busy:表示1%秒單位時間內(nèi)調(diào)度進程的占用時間。
【編輯推薦】