oracle之 redo過高診斷
一、診斷過度redo
要找到生成大量重做的會話,您可以使用以下任何一種方法。這兩種方法都檢查生成的撤銷量。
當一個事務生成撤銷,它將自動生成重做。
當需要檢查生成大量的程式時,使用第一個查詢。當這些程式啟用多個事務時重做。
後者查詢,可以用來發現哪些特定事務正在生成重做。
1)法一 (針對某程式累計redo生成量)
查詢 V$SESS_IO ,此檢視包含指示的列BLOCK_CHANGES。
該會話更改了多少塊。比較高的值表明,會話生成大量重做.
SELECT s.sid, s.serial#, s.username, s.program,
i.block_changes
FROM v$session s, v$sess_io i
WHERE s.sid = i.sid
ORDER BY 5 desc, 1, 2, 3, 4;
SID SERIAL# USERNAME PROGRAM BLOCK_CHANGES
---------- ---------- ------------------------------ ------------------------------------------------ -------------
331 393 SYS sqlplus@orastb.bonc.com.cn (TNS V1-V3) 210481
241 1 oracle@orastb.bonc.com.cn (SMON) 65308
2)法二 (針對正在執行事務redo生成量)
查詢V$TRANSACTION.此檢視包含有關事務資訊的撤銷塊和撤消記錄。(在 USED_UBLK and USED_UREC 中)
SELECT s.sid, s.serial#, s.username, s.program,
t.used_ublk, t.used_urec
FROM v$session s, v$transaction t
WHERE s.taddr = t.addr
ORDER BY 5 desc, 6 desc, 1, 2, 3, 4;
SID SERIAL# USERNAME PROGRAM USED_UBLK USED_UREC
---------- ---------- ------------------------------ --------------------------------------- ----- -----
1 227 ANDY sqlplus@orastb.bonc.com.cn (TNS V1-V3) 37 2044
二、如何診斷過度的重做生成。
高 redo 通常分為兩類:
1。在一天的特定時間內。
2。存檔日誌的突然增加。
在這兩種情況下,首先要檢查的是資料庫級別上的任何修改(修改任何引數、執行的任何維護操作、..)和應用程式級別(部署新應用程式,修改程式碼,增加使用者,..)。
要知道高重做的確切原因,我們需要關於重做活動的資訊和負載的詳細資訊。以下資訊需要收集在高redo做生成期間。
1]要知道日誌切換的趨勢,可以使用以下查詢。
SQL> alter session set NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
SQL>select trunc(first_time, 'HH') , count(*)
from v$loghist
group by trunc(first_time, 'HH')
order by trunc(first_time, 'HH');
TRUNC(FIRST_TIME,'HH COUNT(*)
-------------------- ----------
29-MAY-2008 13:00:00 126
29-MAY-2008 14:00:00 135 <- Indicate 135 log switches from 2-3 PM.
29-MAY-2008 15:00:00 112
-- 執行以下查詢,瞭解在任何特定時間生成高重做的會話
col program for a10
col username for a10
select to_char(sysdate,'hh24:mi'), username, program , a.sid, a.serial#, b.name, c.value
from v$session a, v$statname b, v$sesstat c
where b.STATISTIC# =c.STATISTIC#
and c.sid=a.sid and b.name like 'redo size%'
order by value;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2151802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE診斷案例Oracle
- Oracle故障診斷Oracle
- ORACLE診斷事件Oracle事件
- ORACLE 如何診斷高水位爭用(enq: HW – contention)OracleENQ
- oracle 效能診斷工具Oracle
- Oracle診斷事件列表Oracle事件
- ORACLE診斷事件(zt)Oracle事件
- 公司某資料子系統定期cpu過高的診斷
- 機器學習之模型診斷機器學習模型
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- Oracle診斷事件列表(轉)Oracle事件
- oracle診斷工具-RDA使用Oracle
- oracle 事件診斷詳細Oracle事件
- oracle sqlt(sqltxplain) 診斷工具OracleSQLAI
- Oracle診斷工具RDA使用Oracle
- Oracle效能診斷藝術Oracle
- Oracle效能最佳化之診斷latch競爭(轉)Oracle
- 9 Oracle Data Guard 故障診斷Oracle
- Oracle診斷案例-Sql_traceOracleSQL
- Oracle所有診斷事件列表eventsOracle事件
- Oracle中診斷阻塞的sessionOracleSession
- 【Oracle】資料庫hang 診斷Oracle資料庫
- Oracle GoldenGate(OGG)診斷OracleGo
- Oracle效能診斷一例Oracle
- Oracle診斷事件例項(一)Oracle事件
- 【轉】oracle診斷工具-RDA使用Oracle
- Oracle配置資料庫診斷Oracle資料庫
- oracle 10053診斷事件Oracle事件
- ORACLE診斷事件的總結Oracle事件
- oracle診斷工具-RDA使用(轉)Oracle
- Oracle redo解析之-1、oracle redo log結構計算Oracle Redo
- 硬解析帶來高CPU消耗的診斷
- Oracle效能診斷檢視總結Oracle
- 【RAC】Oracle Clusterware 診斷收集指令碼Oracle指令碼
- 部落格連結—Oracle故障診斷Oracle
- zt_oracle診斷事件event列表Oracle事件
- 愛上Java診斷利器之ArthasJava
- oracle RAC 診斷叢集狀態命令Oracle