国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle Database 10 g : 為 DBA 提供的最佳前 20 位的特性(二)

2024-08-29 13:47:01
字體:
供稿:網(wǎng)友
Oracle Database 10 g : 為 DBA 提供的最佳前 20 位的特性(二) 作者 Arup Nanda 來源: OTN 第 2 周
還要多長時間?:回滾監(jiān)視 為用戶提供對回滾操作時間的準確評估 我們還在這地方嗎?還要多長時間? 聽起來熟悉嗎?這些問題可能是您在前往孩子們最喜愛的主題公園的路上,從汽車后座上提出來的,并且經(jīng)常是不斷地、越來越頻繁地提出來。您不想告訴他們還確切需要多長時間嗎 — 或者更簡單些,您自己知道答案嗎? 同樣,在回滾長期運行的事務時,經(jīng)常會有些用戶不停地詢問相同的問題。這些問題是合理的,因為該事務進行了鎖定,正常的處理經(jīng)常受到回滾進程的影響。 在 Oracle 9 i Database 及更低的版本中,您可以執(zhí)行查詢 SELECT USED_UREC FROM V$TRANSACTION; 該語句返回由當前事務所使用的重做記錄的數(shù)量,而假如重復地執(zhí)行該語句,將會顯示連續(xù)減少的數(shù)值,因為回滾進程在其處理過程中會釋放重做記錄。隨后您可以通過對一段間隔進行快照來計算其速率,然后推斷出評估結(jié)束時間的結(jié)果。 雖然在視圖 V$TRANSACTION 中有一個名為 START_TIME 的列,但該列只顯示整個事務的起始時間(也就是在回滾執(zhí)行之前)。因此,除了推斷,您沒有辦法知道回滾實際上是在什么時間執(zhí)行的。 事務回滾的擴展統(tǒng)計信息 在 Oracle Database 10 g 中,這種操作很簡單。當事務回滾時,事件被記錄在視圖 V$session_LONGOPS 中,該視圖顯示長期運行的事務。用于回滾,假如進程耗時超過六秒,則記錄出現(xiàn)在該視圖中。在回滾執(zhí)行以后,您可能會隱藏所查看的監(jiān)視屏幕并執(zhí)行以下的查詢: select time_remaining from v$session_longops where sid = < sid of the session doing the rollback >; 既然您意識到這個視圖 V$SESSION_LONGOPS 的重要性,就讓我們來看它必須提供的其他信息。該視圖在 Oracle Database 10 g 的預覽版中提供,但沒有捕捉關(guān)于回滾事務的信息。為了以一種易讀的方式顯示所有的列,我們將使用由 Tom Kyte 在 AskTom.com 中所描述的 PRINT_TABLE 函數(shù)。此過程簡單地以表格方式而不是常用的行方式來顯示列。 SQL> set serveroutput on size 999999 SQL> exec print_table('select * from v$session_longops where sid = 9') SID : 9 SERIAL# : 68 OPNAME :Transaction Rollback TARGET : TARGET_DESC :xid:0x000e .01c .00000067 SOFAR : 20554 TOTALWORK : 10234 UNITS :Blocks START_TIME :07-dec-2003 21:20:07 LAST_UPDATE_TIME :07-dec-2003 21:21:24 TIME_REMAINING : 77 ELAPSED_SECONDS : 77 CONTEXT : 0 MESSAGE :Transaction Rollback:xid:0x000e .01c .00000067 : 10234 out of 20554 Blocks done
USERNAME : SYS SQL_ADDRESS :00000003B719ED08 SQL_HASH_VALUE : 1430203031 SQL_ID :306w 9c 5amyanr QCSID : 0 注重,此處顯示對行的所有更改,即使刪除并重新插入行時也是如此。 VERSION_OperaTION 列顯示對該行執(zhí)行的操作 (Insert/Update/Delete) 。完成這些操作不需要歷史表或額外的列。 讓我們仔細檢查這些列中的每一列。在會話中可能會有超過多個長期運行操作 — 非凡是因為視圖中包含以前的會話中所有長期運行操作的歷史。列 OPNAME 顯示該記錄用于 “ 事務回滾 ” ,這為我們指出了正確的方向。列 TIME_REMAINING 顯示所評估的剩余時間秒數(shù),這在前面已經(jīng)描述過,而列 ELAPSED_SECONDS 顯示到目前為止所消耗的時間。 那么該表如何提供對剩余時間的評估呢?可以在列 TOTALWORK 中找到線索,該列顯示要完成的 “ 工作 ” 總量,還有 SOFAR 顯示到目前為止已經(jīng)完成了多少工作。工作的單位顯示在列 UNITS 中。在本例中以數(shù)據(jù)塊為單位;因此,到目前為止已經(jīng)回滾了 20,554 個數(shù)據(jù)塊中共計 10,234 個數(shù)據(jù)塊。此操作到目前為止已消耗了 77 秒。因此,剩余數(shù)據(jù)塊將消耗: 77 * ( 10234 / (20554-10234) ) ? 77 秒 但您不必利用這種方法來獲得該數(shù)值,它已經(jīng)清楚地顯示出來了。最后,列 LAST_UPDATE_TIME 顯示有關(guān)當前視圖內(nèi)容的時間,這將用于加強您對結(jié)果的解釋。 SQL 語句 另一部分重要的新信息是正在被回滾的 SQL 語句的標識符。在早先, SQL_ADDRESS 和 SQL_HASH_VALUE 用于獲取正在被回滾的 SQL 語句。新的列 SQL_ID 對應于視圖 V$SQL 的 SQL_ID ,如下所示: SELECT SQL_TEXT FROM V$SQL WHERE SQL_ID = < value of SQL_ID from V$SESSION_LONGOPS >; 該查詢返回所回滾的語句,因此提供了額外的校驗以及 SQL 語句的地址和散列值。 并行實例恢復 假如 DML 操作是并行操作,則列 QCSID 顯示并行查詢服務器會話的 SID 。在并行回滾事件中,如實例恢復以及隨后的故障事務恢復期間,經(jīng)常用到該信息經(jīng)常。 例如,假設(shè)在大型的更新期間,實例異常關(guān)閉。當實例啟動時,發(fā)生故障的事務被回滾。假如啟用了用于并行恢復的初始化參數(shù)值,則回滾并行地而不是串行地發(fā)生,如同它發(fā)生在常規(guī)事務回滾中一樣。下一步的任務是評估回滾進程的完成時間。 視圖 V$FAST_START_TRANSACTIONS 顯示為回滾故障事務所產(chǎn)生的事務。類似的視圖 V$FAST_START_SERVERS 顯示對回滾進行處理的并行查詢服務器的數(shù)量。這兩個視圖都在以前的版本中提供,但顯示事務標識符的新列 XID 使得聯(lián)接更方便了。在 Oracle9 i Database 以及更低的版本中,您必須通過三列( USN — 重做段號, SLT — 重做段中的存儲區(qū)號, SEQ — 序列號)來聯(lián)接視圖。其父集顯示在 PARENTUSN 、 PARENTSLT 和 PARENTSEQ 中。在 Oracle Database 10 g 中,您只需將其聯(lián)接到 XID 列,其父 XID 由直觀的名稱表示: PXID 。 最有用的信息部分來自于 V$FAST_START_TRANSACTIONS 視圖中的列 RCVSERVERS 。假如發(fā)生并行回滾,則該列中顯示并行查詢服務器的數(shù)量。您可以查看該列,了解啟動了多少并行查詢進程: select rcvservers from v$fast_start_transactions; 假如輸出是 1 ,則事務正在由 SMON 進程進行串行回滾 — 顯然這是完成工作的一種不充分的方法。您可以將初始化參數(shù) RECOVERY_PARALLELISM 的值改為除 0 或 1 以外的值,重新啟動實例進行并行回滾。隨后您可以執(zhí)行 ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK = HIGH ,按 CPU 數(shù)量的 4 倍創(chuàng)建并行服務器。 假如上述查詢的輸出顯示不是 1 ,則正在進行并行回滾。您可以查詢同一視圖 (V$FAST_START_TRANSACTIONS) 來獲得父事務和子事務(父事務 id — PXID ,而子事務 id — XID )。 XID 還可用于聯(lián)接此視圖與 V$FAST_START_SERVERS ,以獲得其他具體信息。
結(jié)論 總之,當在 Oracle Database 10 g 中回滾長期運行的事務時 — 無論是并行實例恢復會話還是用戶執(zhí)行的回滾語句 — 您所需做的一切就是查看視圖 V$SESSION_LONGOPS 并評估還需要多少時間。 現(xiàn)在,假如能猜測到達主題公園的時間就好了!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 祁连县| 山东| 塔城市| 祁连县| 武义县| 吴江市| 班玛县| 仁化县| 阳信县| 临武县| 菏泽市| 黄陵县| 双牌县| 且末县| 仙桃市| 三明市| 运城市| 抚宁县| 辉县市| 开江县| 闻喜县| 同江市| 揭西县| 府谷县| 阿尔山市| 安岳县| 广宁县| 临清市| 来安县| 平度市| 许昌县| 临猗县| 鄂伦春自治旗| 康保县| 丰台区| 策勒县| 大荔县| 集安市| 临高县| 唐海县| 集贤县|