Oracle Database 10g新特性-回滾監視
回滾監視為使用者提供對回滾操作時間的準確評估.
我們還在這地方嗎?還要多長時間?
聽起來熟悉嗎?這些問題可能是您在前往孩子們最喜愛的主題公園的路上,從汽車後座上提出來的,並且經常是不斷地、越來越頻繁地提出來。您不想告訴他們還確切需要多長時間嗎 — 或者更簡單些,您自己知道答案嗎?
同樣,在回滾長期執行的事務時,經常會有些使用者不停地詢問相同的問題。這些問題是合理的,因為該事務進行了鎖定,正常的處理經常受到回滾程式的影響。
在 Oracle 9i Database 及更低的版本中,您可以執行查詢
SELECT USED_UREC FROM V$TRANSACTION;該語句返回由當前事務所使用的重做記錄的數量,而如果重複地執行該語句,將會顯示連續減少的數值,因為回滾程式在其處理過程中會釋放重做記錄。隨後您可以透過對一段間隔進行快照來計算其速率,然後推斷出評估結束時間的結果。
雖然在檢視 V$TRANSACTION 中有一個名為 START_TIME 的列,但該列只顯示整個事務的起始時間(也就是在回滾執行之前)。因此,除了推斷,您沒有辦法知道回滾實際上是在什麼時間執行的。
事務回滾的擴充套件統計資訊
在 Oracle Database 10g 中,這種操作很簡單。當事務回滾時,事件被記錄在檢視 V$SESSION_LONGOPS 中,該檢視顯示長期執行的事務。用於回滾,如果程式耗時超過六秒,則記錄出現在該檢視中。在回滾執行以後,您可能會隱藏所檢視的監視螢幕並執行以下的查詢:
select time_remaining from v$session_longops where sid = <<em>sid of the session doing the rollback>;既然您意識到這個檢視 V$SESSION_LONGOPS 的重要性,就讓我們來看它必須提供的其他資訊。該檢視在 Oracle Database 10g 的預覽版中提供,但沒有捕獲關於回滾事務的資訊。為了以一種易讀的方式顯示所有的列,我們將使用由 Tom Kyte 在 SQL 語句
另一部分重要的新資訊是正在被回滾的 SQL 語句的識別符號。在早先,SQL_ADDRESS 和 SQL_HASH_VALUE 用於獲取正在被回滾的 SQL 語句。新的列 SQL_ID 對應於檢視 V$SQL 的 SQL_ID,如下所示:
SELECT SQL_TEXT FROM V$SQL WHERE SQL_ID = <<em>value of SQL_ID from V$SESSION_LONGOPS>;該查詢返回所回滾的語句,因此提供了額外的校驗以及 SQL 語句的地址和雜湊值。
並行例項恢復
如果 DML 操作是並行操作,則列 QCSID 顯示並行查詢伺服器會話的 SID。在並行回滾事件中,如例項恢復以及隨後的故障事務恢復期間,經常用到該資訊經常。
例如,假設在大型的更新期間,例項異常關閉。當例項啟動時,發生故障的事務被回滾。如果啟用了用於並行恢復的初始化引數值,則回滾並行地而不是序列地發生,如同它發生在常規事務回滾中一樣。下一步的任務是評估回滾程式的完成時間。
檢視 V$FAST_START_TRANSACTIONS 顯示為回滾故障事務所產生的事務。類似的檢視 V$FAST_START_SERVERS 顯示對回滾進行處理的並行查詢伺服器的數量。這兩個檢視都在以前的版本中提供,但顯示事務識別符號的新列 XID 使得聯接更方便了。在 Oracle9i Database 以及更低的版本中,您必須透過三列(USN — 重做段號,SLT — 重做段中的儲存區號,SEQ — 序列號)來聯接檢視。其父集顯示在 PARENTUSN、PARENTSLT 和 PARENTSEQ 中。在 Oracle Database 10g 中,您只需將其聯接到 XID 列,其父 XID 由直觀的名稱表示:PXID。
最有用的資訊部分來自於 V$FAST_START_TRANSACTIONS 檢視中的列 RCVSERVERS。如果發生並行回滾,則該列中顯示並行查詢伺服器的數量。您可以檢視該列,瞭解啟動了多少並行查詢程式:
select rcvservers from v$fast_start_transactions;如果輸出是 1,則事務正在由 SMON 程式進行序列回滾 — 顯然這是完成工作的一種不充分的方法。您可以將初始化引數 RECOVERY_PARALLELISM 的值改為除 0 或 1 以外的值,重新啟動例項進行並行回滾。隨後您可以執行 ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK = HIGH,按 CPU 數量的 4 倍建立並行伺服器。
如果上述查詢的輸出顯示不是 1,則正在進行並行回滾。您可以查詢同一檢視 (V$FAST_START_TRANSACTIONS) 來獲得父事務和子事務(父事務 id — PXID,而子事務 id — XID)。XID 還可用於聯接此檢視與 V$FAST_START_SERVERS,以獲得其他詳細資訊。
結論
總之,當在 Oracle Database 10g 中回滾長期執行的事務時 — 無論是並行例項恢復會話還是使用者執行的回滾語句 — 您所需做的一切就是檢視檢視 V$SESSION_LONGOPS 並評估還需要多少時間。
現在,如果能預測到達主題公園的時間就好了!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1755312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 10g新特性——回滾監視
- Oracle Database 10g新特性-閃回表OracleDatabase
- Oracle Database 10g新特性-閃回版本查詢OracleDatabase
- Oracle 10G 新特性——閃回表Oracle 10g
- 使用 Oracle Database 10g中的閃回表特性OracleDatabase
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- Oracle Database 10g新特性-改善的表空間管理OracleDatabase
- oracle 12c 新特性 Temporary UNDO 臨時回滾段Oracle
- Oracle Database 10g新特性-高速的匯出/匯入Data PumpOracleDatabase
- 10g新特性——閃回版本查詢
- oracle檢視回滾的事務Oracle
- 1 Oracle Database 19c 新特性OracleDatabase
- oracle 10G 物化檢視新特性(測試效果不理想)Oracle 10g
- 【Flashback】10G的新特性“閃回表”清除方法
- oracle前滾和回滾Oracle
- ORACLE 前滾和回滾Oracle
- oracle回滾溯源Oracle
- ORACLE回滾段Oracle
- oracle 10g 新特性中文筆記(zt)Oracle 10g筆記
- 10g 新特性
- Oracle 資料回滾Oracle
- ORACLE回滾段(1)Oracle
- ORACLE回滾段(2)Oracle
- ORACLE回滾段(轉)Oracle
- ORACLE回滾段管理Oracle
- Oracle Database 12.2新特性詳解 --該國強OracleDatabase
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- oracle 10g flashback databaseOracle 10gDatabase
- 10G新特性 - AWR
- Oracle Database 10g:為 DBA 提供的最佳前 20 位的特性OracleDatabase
- oracle閃回特性Oracle
- ORACLE 10G 新特性(INCREMENTALLY UPDATED BACKUPS)學習Oracle 10gREM
- 【oracle 10g R2 新特性】Asynchronous CommitOracle 10gMIT
- Oracle 10G 新特性--SQLPLUS的改進Oracle 10gSQL
- 10G新特性筆記之安裝新特性筆記
- ORACLE 回滾段詳解Oracle
- 11g 新特性—— Active Database Duplication for A standby databaseDatabase
- 鎖表時KILL SESSION及回滾段監控(回滾時間評估)Session