Oracle動態效能檢視學習筆記(4)_v$rollstat
Oracle動態效能檢視學習筆記(4)_v$rollstat
參考文件<>Chapter 24
三思君的筆記
##################################################################
1 Overview
##################################################################
This view keeps a summary of statistics for each rollback segment since startup;
本檢視自啟動即保持並記錄各回滾段統計項。在學習本檢視之前,我們先來了解一下回滾段(rollback segment)的相關概念:
1.1 回滾段概述
回滾段用於存放資料修改之前的值(包括資料修改之前的位置和值)。回滾段的頭部包含正在使用的該回滾段事務的資訊。一個事務只能使用一個回滾段來存放它的回滾資訊,而一個回滾段可以存放多個事務的回滾資訊。
1.2 回滾段的作用
1。事務回滾:當事務修改表中資料的時候,該資料修改前的值(即前影像)會存放在回滾段中,當使用者回滾事務(ROLLBACK)時,ORACLE將會利用回滾段中的資料前影像來將修改的資料恢復到原來的值。
2。事務恢復:當事務正在處理的時候,例程失敗,回滾段的資訊儲存在重做日誌檔案中,ORACLE將在下次開啟資料庫時利用回滾來恢復未提交的資料。
3。讀一致性:當一個會話正在修改資料時,其他的會話將看不到該會話未提交的修改。而且,當一個語句正在執行時,該語句將看不到從該語句開始執行後的未提交的修改(語句級讀一致性)。當ORACLE執行SELECT語句時,ORACLE依照當前的系統改變號(SYSTEM CHANGE NUMBER-SCN)來保證任何前於當前SCN的未提交的改變不被該語句處理。可以想象:當一個長時間的查詢正在執行時,若其他會話改變了該查詢要查詢的某個資料塊,ORACLE將利用回滾段的資料前影像來構造一個讀一致性檢視。
1.3 事務級的讀一致性
ORACLE一般提供SQL語句級(SQL STATEMENT LEVEL)的讀一致性,可以用以下語句來實現事務級的讀一致性。
SET TRANSACTION READ ONLY;
或:
SET TANNSACTION SERIALIZABLE;
以上兩個語句都將在事務開始後提供讀一致性。需要注意的是,使用第二個語句對資料庫的併發性和效能將帶來影響。
1.4 回滾段的種類
1。系統回滾段:當資料庫建立後,將自動建立一個系統回滾段,該回滾段只用於存放系統表空間中物件的前影像。
2。非系統回滾段:擁有多個表空間的資料庫至少應該有一個非系統回滾段,用於存放非系統表空間中物件的資料前影像。非系統回滾段又分為私有回滾段和公有回滾段,私有回滾段應在引數檔案的ROLLBACK SEGMENTS引數中列出,以便例程啟動時自動使其線上(ONLINE)。公有回滾段一般在OPS(ORACLE並行伺服器)中出現,將在例程啟動時自動線上。
3。DEFERED回滾段:該回滾段在表空間離線(OFFLINE)時由系統自動建立,當表空間再次線上(ONLINE)時由系統自動刪除,用於存放表空間離線時產生的回滾資訊。
1.5 回滾段的使用
分配回滾段:當事務開始時,ORACLE將為該事務分配回滾段,並將擁有最少事務的回滾段分配給該事務。
事務可以用以下語句申請指定的回滾段:
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment
事務將以順序,迴圈的方式使用回滾段的區(EXTENTS),噹噹前區用滿後移到下一個區。幾個事務可以寫在回滾段的同一個區,但每個回滾段區中的塊只能包含一個事務的資訊。
例如(兩個事務使用同一個回滾段,該回滾段有四個區):
1、事務在進行中,它們正在使用回滾段的第三個區;
2、當兩個事務產生更多的回滾資訊,它們將繼續使用第三個區;
3、當第三個區滿後,事務將寫到第四個區,當事務開始寫到一個新的區時,稱為翻轉(WRAP);
4、當第四個區用滿時,如果第一個區是空閒或非活動(使用該區的所有事務完成而沒有活動的事務)的,事務將接著使用第一個區。
1.6 回滾段的擴張(EXTEND)
噹噹前回滾段區的所有塊用完而事務還需要更多的回滾空間時,回滾段的指標將移到下一個區。當最後一個區用完,指標將移到第一個區的前面。回滾段指標移到下一個區的前提是下一個區沒有活動的事務,同時指標不能跨區。當下一個區正在使用時,事務將為回滾段分配一個新的區,這種分配稱為回滾段的擴充套件。回滾段將一直擴充套件到該回滾段區的個數到達回滾段的引數MAXEXTENTS的值時為止。
1.7 回滾段的回收和OPTIMAL引數
OPTIMAL引數指明回滾段空閒時收縮到的位置,指明回滾段的OPTIMAL引數可以減少回滾段空間的浪費。
##################################################################
2 Useful Columns for v$undostat
##################################################################
1) USN: Rollback segment number
2) RSSIZE: Current size fo the rollback segment
3) XACTS: Number of active transactions
Columns Useful for Doing a Delta Over a Period of Time
1) WRITES: Number of bytes written to the rollback segment
(寫到回滾段的位元組數)
2) SHRINKS: Number of times the rollback segment grew past OPTIMAL and shrank back.
(回滾段收縮的次數)
3) WRAPS: Number of times the rollback segment wrapped around.
(回滾段出現翻轉的次數)
4) GETS: Number of header gets
(獲取回滾段頭次數)
5) WAITS: Number of header waits
(回滾段頭等待次數)
6) HWMSIZE: High water mark of rollback segment size
(回滾段的高水位)
JOIN COLUMNS FOR V$ROLLSTAT
SQL> desc V$ROLLNAME
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
USN NUMBER Y
NAME VARCHAR2(30)
select b.name,a.* from v$rollstat a , v$rollname b
where a.usn = b.usn;
By dividing the elapsed time by wraps, you can determine the average time taken for a rollback segment to wrap.
This is useful in sizing rollback segments for long running queries to avoid 'Snapshot Too Old' erros.
##################################################################
3 示例
##################################################################
1.查詢回滾段的資訊。所用資料字典:DBA_ROLLBACK_SEGS,可以查詢的資訊:回滾段的標識(SEGMENT_ID)、名稱(SEGMENT_NAME)、所在表空間(TABLESPACE_NAME)、型別(OWNER)、狀態(STATUS)。
select * from DBA_ROLLBACK_SEGS
2.檢視回滾段的統計資訊:
SELECT n.name, s.extents, s.rssize, s.optsize, s.hwmsize, s.xacts, s.status
FROM v$rollname n, v$rollstat s
WHERE n.usn = s.usn;
3.檢視回滾段的使用情況,哪個使用者正在使用回滾段的資源:
select s.username, u.name
from v$transaction t, v$rollstat r, v$rollname u, v$session s
where s.taddr = t.addr
and t.xidusn = r.usn
and r.usn = u.usn
order by s.username;
開始一個事務:
SQL> delete from big_table where rownum < 11;
10 rows deleted
檢視這個事務所使用的Undo Segment回滾段:
SQL> select s.username, u.name
2 from v$transaction t, v$rollstat r, v$rollname u, v$session s
3 where s.taddr = t.addr
4 and t.xidusn = r.usn
5 and r.usn = u.usn
6 order by s.username;
USERNAME NAME
------------------------------ ------------------------------
GZDC _SYSSMU15$
檢視這個回滾段的Extent情況。
SQL> select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,BYTES,BYTES,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU15$';
SEGMENT_NAME TABLESPACE_NAME EXTENT_ID BYTES BYTES BLOCKS
-------------------------------------------------------------------------------- ------------------------------ ---------- ---------- ---------- ----------
_SYSSMU15$ UNDOTBS2 0 57344 57344 7
_SYSSMU15$ UNDOTBS2 1 65536 65536 8
_SYSSMU15$ UNDOTBS2 2 65536 65536 8
_SYSSMU15$ UNDOTBS2 3 65536 65536 8
_SYSSMU15$ UNDOTBS2 4 65536 65536 8
_SYSSMU15$ UNDOTBS2 5 65536 65536 8
_SYSSMU15$ UNDOTBS2 6 65536 65536 8
_SYSSMU15$ UNDOTBS2 7 65536 65536 8
##################################################################
4 問題
##################################################################
1 回滾段與undo表空間中的undo segment的關係?
回滾段即undo segment, 來自於undo表空間。
2 事務與回滾段間的關係?
多個事務可以共享回滾段,甚至共享同一個回滾段的同一個Extent,但區內的Block不能共享。
回滾段的頭部記錄了使用這個回滾段的事務的資訊。
參考文件<
三思君的筆記
##################################################################
1 Overview
##################################################################
This view keeps a summary of statistics for each rollback segment since startup;
本檢視自啟動即保持並記錄各回滾段統計項。在學習本檢視之前,我們先來了解一下回滾段(rollback segment)的相關概念:
1.1 回滾段概述
回滾段用於存放資料修改之前的值(包括資料修改之前的位置和值)。回滾段的頭部包含正在使用的該回滾段事務的資訊。一個事務只能使用一個回滾段來存放它的回滾資訊,而一個回滾段可以存放多個事務的回滾資訊。
1.2 回滾段的作用
1。事務回滾:當事務修改表中資料的時候,該資料修改前的值(即前影像)會存放在回滾段中,當使用者回滾事務(ROLLBACK)時,ORACLE將會利用回滾段中的資料前影像來將修改的資料恢復到原來的值。
2。事務恢復:當事務正在處理的時候,例程失敗,回滾段的資訊儲存在重做日誌檔案中,ORACLE將在下次開啟資料庫時利用回滾來恢復未提交的資料。
3。讀一致性:當一個會話正在修改資料時,其他的會話將看不到該會話未提交的修改。而且,當一個語句正在執行時,該語句將看不到從該語句開始執行後的未提交的修改(語句級讀一致性)。當ORACLE執行SELECT語句時,ORACLE依照當前的系統改變號(SYSTEM CHANGE NUMBER-SCN)來保證任何前於當前SCN的未提交的改變不被該語句處理。可以想象:當一個長時間的查詢正在執行時,若其他會話改變了該查詢要查詢的某個資料塊,ORACLE將利用回滾段的資料前影像來構造一個讀一致性檢視。
1.3 事務級的讀一致性
ORACLE一般提供SQL語句級(SQL STATEMENT LEVEL)的讀一致性,可以用以下語句來實現事務級的讀一致性。
SET TRANSACTION READ ONLY;
或:
SET TANNSACTION SERIALIZABLE;
以上兩個語句都將在事務開始後提供讀一致性。需要注意的是,使用第二個語句對資料庫的併發性和效能將帶來影響。
1.4 回滾段的種類
1。系統回滾段:當資料庫建立後,將自動建立一個系統回滾段,該回滾段只用於存放系統表空間中物件的前影像。
2。非系統回滾段:擁有多個表空間的資料庫至少應該有一個非系統回滾段,用於存放非系統表空間中物件的資料前影像。非系統回滾段又分為私有回滾段和公有回滾段,私有回滾段應在引數檔案的ROLLBACK SEGMENTS引數中列出,以便例程啟動時自動使其線上(ONLINE)。公有回滾段一般在OPS(ORACLE並行伺服器)中出現,將在例程啟動時自動線上。
3。DEFERED回滾段:該回滾段在表空間離線(OFFLINE)時由系統自動建立,當表空間再次線上(ONLINE)時由系統自動刪除,用於存放表空間離線時產生的回滾資訊。
1.5 回滾段的使用
分配回滾段:當事務開始時,ORACLE將為該事務分配回滾段,並將擁有最少事務的回滾段分配給該事務。
事務可以用以下語句申請指定的回滾段:
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment
事務將以順序,迴圈的方式使用回滾段的區(EXTENTS),噹噹前區用滿後移到下一個區。幾個事務可以寫在回滾段的同一個區,但每個回滾段區中的塊只能包含一個事務的資訊。
例如(兩個事務使用同一個回滾段,該回滾段有四個區):
1、事務在進行中,它們正在使用回滾段的第三個區;
2、當兩個事務產生更多的回滾資訊,它們將繼續使用第三個區;
3、當第三個區滿後,事務將寫到第四個區,當事務開始寫到一個新的區時,稱為翻轉(WRAP);
4、當第四個區用滿時,如果第一個區是空閒或非活動(使用該區的所有事務完成而沒有活動的事務)的,事務將接著使用第一個區。
1.6 回滾段的擴張(EXTEND)
噹噹前回滾段區的所有塊用完而事務還需要更多的回滾空間時,回滾段的指標將移到下一個區。當最後一個區用完,指標將移到第一個區的前面。回滾段指標移到下一個區的前提是下一個區沒有活動的事務,同時指標不能跨區。當下一個區正在使用時,事務將為回滾段分配一個新的區,這種分配稱為回滾段的擴充套件。回滾段將一直擴充套件到該回滾段區的個數到達回滾段的引數MAXEXTENTS的值時為止。
1.7 回滾段的回收和OPTIMAL引數
OPTIMAL引數指明回滾段空閒時收縮到的位置,指明回滾段的OPTIMAL引數可以減少回滾段空間的浪費。
##################################################################
2 Useful Columns for v$undostat
##################################################################
1) USN: Rollback segment number
2) RSSIZE: Current size fo the rollback segment
3) XACTS: Number of active transactions
Columns Useful for Doing a Delta Over a Period of Time
1) WRITES: Number of bytes written to the rollback segment
(寫到回滾段的位元組數)
2) SHRINKS: Number of times the rollback segment grew past OPTIMAL and shrank back.
(回滾段收縮的次數)
3) WRAPS: Number of times the rollback segment wrapped around.
(回滾段出現翻轉的次數)
4) GETS: Number of header gets
(獲取回滾段頭次數)
5) WAITS: Number of header waits
(回滾段頭等待次數)
6) HWMSIZE: High water mark of rollback segment size
(回滾段的高水位)
JOIN COLUMNS FOR V$ROLLSTAT
SQL> desc V$ROLLNAME
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
USN NUMBER Y
NAME VARCHAR2(30)
select b.name,a.* from v$rollstat a , v$rollname b
where a.usn = b.usn;
By dividing the elapsed time by wraps, you can determine the average time taken for a rollback segment to wrap.
This is useful in sizing rollback segments for long running queries to avoid 'Snapshot Too Old' erros.
##################################################################
3 示例
##################################################################
1.查詢回滾段的資訊。所用資料字典:DBA_ROLLBACK_SEGS,可以查詢的資訊:回滾段的標識(SEGMENT_ID)、名稱(SEGMENT_NAME)、所在表空間(TABLESPACE_NAME)、型別(OWNER)、狀態(STATUS)。
select * from DBA_ROLLBACK_SEGS
2.檢視回滾段的統計資訊:
SELECT n.name, s.extents, s.rssize, s.optsize, s.hwmsize, s.xacts, s.status
FROM v$rollname n, v$rollstat s
WHERE n.usn = s.usn;
3.檢視回滾段的使用情況,哪個使用者正在使用回滾段的資源:
select s.username, u.name
from v$transaction t, v$rollstat r, v$rollname u, v$session s
where s.taddr = t.addr
and t.xidusn = r.usn
and r.usn = u.usn
order by s.username;
開始一個事務:
SQL> delete from big_table where rownum < 11;
10 rows deleted
檢視這個事務所使用的Undo Segment回滾段:
SQL> select s.username, u.name
2 from v$transaction t, v$rollstat r, v$rollname u, v$session s
3 where s.taddr = t.addr
4 and t.xidusn = r.usn
5 and r.usn = u.usn
6 order by s.username;
USERNAME NAME
------------------------------ ------------------------------
GZDC _SYSSMU15$
檢視這個回滾段的Extent情況。
SQL> select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,BYTES,BYTES,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU15$';
SEGMENT_NAME TABLESPACE_NAME EXTENT_ID BYTES BYTES BLOCKS
-------------------------------------------------------------------------------- ------------------------------ ---------- ---------- ---------- ----------
_SYSSMU15$ UNDOTBS2 0 57344 57344 7
_SYSSMU15$ UNDOTBS2 1 65536 65536 8
_SYSSMU15$ UNDOTBS2 2 65536 65536 8
_SYSSMU15$ UNDOTBS2 3 65536 65536 8
_SYSSMU15$ UNDOTBS2 4 65536 65536 8
_SYSSMU15$ UNDOTBS2 5 65536 65536 8
_SYSSMU15$ UNDOTBS2 6 65536 65536 8
_SYSSMU15$ UNDOTBS2 7 65536 65536 8
##################################################################
4 問題
##################################################################
1 回滾段與undo表空間中的undo segment的關係?
回滾段即undo segment, 來自於undo表空間。
2 事務與回滾段間的關係?
多個事務可以共享回滾段,甚至共享同一個回滾段的同一個Extent,但區內的Block不能共享。
回滾段的頭部記錄了使用這個回滾段的事務的資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10248702/viewspace-669515/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle動態效能檢視學習之 V$ROLLSTAT -- 轉Oracle
- Oracle動態效能檢視學習筆記(4)_v$waitstatOracle筆記AI
- Oracle動態效能檢視學習筆記(1)_v$sysstatOracle筆記
- Oracle動態效能檢視學習筆記(3)_v$undostatOracle筆記
- Oracle動態效能檢視學習筆記(6)_v$filestatOracle筆記
- Oracle動態效能檢視學習筆記(7)_v$sessionOracle筆記Session
- Oracle動態效能檢視學習筆記(8)_v$waitstatOracle筆記AI
- (轉):學習Oracle動態效能表-(18)-V$ROLLSTATOracle
- Oracle動態效能檢視學習筆記(9)_v$system_eventOracle筆記
- 學習動態效能表(15)--V$ROLLSTAT
- Oracle動態效能檢視學習筆記(10)_v$session_waitOracle筆記SessionAI
- Oracle動態效能檢視學習筆記(2)_v$sesstat_v$mystat_v$statnameOracle筆記
- Oracle動態效能檢視學習之v$sqltext & v$sqlareaOracleSQL
- (轉)Oracle動態效能檢視學習之v$processOracle
- Oracle動態效能檢視學習之v$lock & v$locked_objectOracleObject
- (轉)Oracle動態效能檢視學習之V$DB_OBJECT_CACHEOracleObject
- (轉)學習Oracle動態效能表-(4)-V$SYSSTATOracle
- Oracle效能優化視訊學習筆記-動態調整SGAOracle優化筆記
- V$PGASTAT動態效能檢視AST
- 學習oracle動態效能表--v$transactionOracle
- oracle學習筆記——檢視、索引Oracle筆記索引
- 學習動態效能表 第15 篇--V$ROLLSTAT 2007.6.12
- Oracle檢視:常用動態效能檢視Oracle
- oracle 學習筆記---效能優化(4)Oracle筆記優化
- (轉)Oracle 動態效能檢視Oracle
- 動態檢視V$SESSION_LONGOPS學習SessionGo
- Oracle動態效能檢視之v$session_longops ztOracleSessionGo
- Oracle的v$動態檢視 收藏Oracle
- (轉):學習Oracle動態效能表-(7)-V$SQLTEXT,V$SQLAREAOracleSQL
- [轉]學習Oracle動態效能表-(6)-V$SQLTEXT,V$SQLAREAOracleSQL
- (轉):學習Oracle動態效能表-(12)-V$PROCESSOracle
- (轉):學習Oracle動態效能表-(10)-V$FILESTATOracle
- (轉):學習Oracle動態效能表-(8)-V$SESSIONOracleSession
- (轉):學習Oracle動態效能表-(5)-V$SESSTATOracle
- (轉):學習Oracle動態效能表-(2)-V$SQLTEXTOracleSQL
- (轉):學習Oracle動態效能表-(1)-V$SQLAREAOracleSQL
- (轉):學習Oracle動態效能表-(21)-V$UNDOSTATOracle
- (轉):學習Oracle動態效能表-(19)-v$rowcacheOracle