Oracle數(shù)據(jù)庫重放功能介紹_第1頁
Oracle數(shù)據(jù)庫重放功能介紹_第2頁
Oracle數(shù)據(jù)庫重放功能介紹_第3頁
Oracle數(shù)據(jù)庫重放功能介紹_第4頁
Oracle數(shù)據(jù)庫重放功能介紹_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Oracle數(shù)據(jù)庫重放功能介紹Oracle Database Replay目錄 HYPERLINK l _bookmark1 引言4 HYPERLINK l _bookmark1 數(shù)據(jù)庫重放工作流4 HYPERLINK l _bookmark2 常見使用情形6 HYPERLINK l _bookmark2 捕獲6 HYPERLINK l _bookmark3 設(shè)置捕獲7 HYPERLINK l _bookmark3 指定過濾器7 HYPERLINK l _bookmark4 捕獲監(jiān)視和報告8 HYPERLINK l _bookmark4 開銷8 HYPERLINK l _bookmark4 測

2、試系統(tǒng)設(shè)置和負(fù)載處理8 HYPERLINK l _bookmark5 重放9 HYPERLINK l _bookmark5 重放客戶端9 HYPERLINK l _bookmark5 重放技術(shù)9 HYPERLINK l _bookmark5 同步9 HYPERLINK l _bookmark6 數(shù)據(jù)重新映射10 HYPERLINK l _bookmark7 數(shù)據(jù)差異原因11 HYPERLINK l _bookmark8 重放選項12 HYPERLINK l _bookmark8 服務(wù)器選項12 HYPERLINK l _bookmark9 連接重新映射13 HYPERLINK l _bookm

3、ark9 設(shè)置重放客戶端13 HYPERLINK l _bookmark9 重放分析和報告13 HYPERLINK l _bookmark10 重放報告和監(jiān)視14 HYPERLINK l _bookmark11 會話故障15 HYPERLINK l _bookmark11 錯誤差異15 HYPERLINK l _bookmark11 數(shù)據(jù)差異15 HYPERLINK l _bookmark11 用戶提供的數(shù)據(jù)驗證腳本15 HYPERLINK l _bookmark11 性能比較15 HYPERLINK l _bookmark12 限制16 HYPERLINK l _bookmark12 最佳實

4、踐16 HYPERLINK l _bookmark12 捕獲計劃16 HYPERLINK l _bookmark13 測試系統(tǒng)設(shè)置和負(fù)載捕獲處理17 HYPERLINK l _bookmark13 重放計劃17 HYPERLINK l _bookmark13 PLSQL 程序包17 HYPERLINK l _bookmark14 DBA 視圖18 HYPERLINK l _bookmark14 結(jié)論18數(shù)據(jù)庫重放敏捷的企業(yè)無論其操作系統(tǒng)、服務(wù)器還是軟件都要能夠快速采用新技術(shù),以幫助它們在競爭中處于領(lǐng)先地位。但是,更改往往導(dǎo)致關(guān)鍵任務(wù) IT 系統(tǒng)出現(xiàn)不穩(wěn)定時段。結(jié)合使用真正應(yīng)用測試和 Oracl

5、e 數(shù)據(jù)庫 11g 企業(yè)版,企業(yè)能夠快速采用新技術(shù),同時消除更改帶來的風(fēng)險。真正應(yīng)用測試將負(fù)載捕獲和重放特性與 SQL 性能分析器整合到一起,以幫助您測試更改對實際負(fù)載的影響,然后幫助您在將更改部署到生產(chǎn)系統(tǒng)之前對其調(diào)優(yōu)。引言硬件/軟件升級、為應(yīng)用程序打補丁等系統(tǒng)更改對保持企業(yè)在合規(guī)性/安全性方面的競爭優(yōu)勢至關(guān)重要。企業(yè)在將更改引入生產(chǎn)系統(tǒng)之前,花費大量時間和精力,在測試環(huán)境中評估和測試系統(tǒng)更改。但是,盡管使用各種腳本和模擬工具進(jìn)行此類測試,許多問題通常在進(jìn)行生產(chǎn)部署和對系統(tǒng)性能和可用性產(chǎn)生不良影響以前無法檢測到。測試成功率低的主要原因是現(xiàn)有工具無法使用實際生產(chǎn)負(fù)載進(jìn)行測試。Oracle 真正

6、應(yīng)用測試選件中的一個解決方案 數(shù)據(jù)庫重放,支持系統(tǒng)更改的實際測試,方法是在測試系統(tǒng)上重新創(chuàng)建生產(chǎn)負(fù)載,同時保持負(fù)載的獨有特性。要實現(xiàn)此操作,應(yīng)在生產(chǎn)系統(tǒng)上捕獲實時負(fù)載并在測試系統(tǒng)上重放此負(fù)載,重放時完全保持原始負(fù)載的時限、并發(fā)性和事務(wù)屬性。這一經(jīng)濟高效的解決方案不需要生成和維護任何測試腳本。因此,以前需要幾個月時間才能完成的復(fù)雜應(yīng)用程序的測試現(xiàn)在只需幾天即可完成。數(shù)據(jù)庫重放工作流數(shù)據(jù)庫重放工作流包括四個主要步驟:負(fù)載捕獲在生產(chǎn)系統(tǒng)上啟用負(fù)載捕獲之后,系統(tǒng)將跟蹤轉(zhuǎn)到 Oracle 數(shù)據(jù)庫的所有外部客戶端請求,并以二進(jìn)制文件(稱為捕獲文件)的形式將其存儲到文件系統(tǒng)上。用戶指定捕獲文件的位置以及捕獲

7、的持續(xù)時間。這些文件包含重放所需的所有相關(guān)信息,如 SQL 文本、綁定值、時鐘時間、系統(tǒng)更改號等。捕獲在數(shù)據(jù)庫范圍內(nèi)進(jìn)行并且識別 RAC,因此只需在一個實例上啟動捕獲。您可以通過企業(yè)管理器查看捕獲進(jìn)度和系統(tǒng)活 動。Oracle 建議在負(fù)載捕獲之前準(zhǔn)備好適當(dāng)?shù)膫浞莺突謴?fù)策略,以便可以使用與捕獲開始時相同的數(shù)據(jù)重新創(chuàng)建測試系統(tǒng)。為了從此特性獲取最大收益,用戶應(yīng)該在高峰負(fù)載期間啟用捕獲,因為這是最令人感興趣的測試時段。負(fù)載處理捕獲之后,必須處理負(fù)載文件,然后才能重放。這將創(chuàng)建重放負(fù)載所需的必要元數(shù)據(jù)。很重要的一點是,要在與重放系統(tǒng)相同的數(shù)據(jù)庫版本上進(jìn)行一次處理。處理之后,捕獲的負(fù)載便可以在相同版本上

8、反復(fù)重放。通常建議在重放負(fù)載的測試系統(tǒng)上執(zhí)行此步驟。負(fù)載重放負(fù)載經(jīng)過處理之后就可以重放了。測試系統(tǒng)應(yīng)該應(yīng)用更改,數(shù)據(jù)庫應(yīng)該反映與捕獲開始時相同的應(yīng)用程序數(shù)據(jù)狀態(tài)??梢允褂靡环N稱為重放客戶端的特殊客戶端將負(fù)載發(fā)送到數(shù)據(jù)庫服務(wù)器,并且保持與捕獲系統(tǒng)中相同的時限和并發(fā)性特性??梢允褂靡粋€校準(zhǔn)工具來幫助確定重放客戶端的數(shù)量,因為可能需要多個重放客戶端來驅(qū)動負(fù)載。負(fù)載文件必須可用于數(shù)據(jù)庫服務(wù)器以及所有重放客戶端。分析和報告大量報告供您對捕獲和重放進(jìn)行詳細(xì)的分析。重放過程中遇到的所有數(shù)據(jù)錯誤或差異都將進(jìn)行報告。強烈建議使用應(yīng)用程序級驗證腳本來評估重放之后的應(yīng)用程序數(shù)據(jù)狀態(tài)。 還提供了使用 AWR 數(shù)據(jù)的報

9、告以進(jìn)行詳細(xì)的性能分析。AWR 數(shù)據(jù)將在重放之后自動導(dǎo)出到負(fù)載目錄中,從而允許在重放之間進(jìn)行比較。圖 1:數(shù)據(jù)庫重放工作流Oracle 的企業(yè)管理器對以上工作流中的所有步驟提供完全支持。以下顯示的是企業(yè)管理器內(nèi)啟動上述任意步驟的頁面。圖 2:企業(yè)管理器數(shù)據(jù)庫重放啟動頁面常見使用情形可以使用數(shù)據(jù)庫重放測試數(shù)據(jù)庫級別或該級別以下的任何系統(tǒng)更改。這包括配置和硬件更改。以下列出的是數(shù)據(jù)庫重放的一些常見使用情形數(shù)據(jù)庫升級,包括補丁部署。配置更改,如從單一實例轉(zhuǎn)換為 RAC、使用 ASM。試驗負(fù)載平衡技術(shù)和 RAC 服務(wù)。更改數(shù)據(jù)庫配置參數(shù),如調(diào)整參數(shù)大小操作系統(tǒng)和硬件平臺遷移。存儲、網(wǎng)絡(luò)、互連更改本白皮

10、書的其余部分更詳細(xì)地介紹了 Oracle 建議的各種步驟以及最佳實踐。捕獲系統(tǒng)將跟蹤轉(zhuǎn)到 Oracle 數(shù)據(jù)庫的所有外部客戶端請求,并以二進(jìn)制文件的形式將其存儲在指定的目錄中作為輸入。不捕獲后臺活動和系統(tǒng)活動。負(fù)載捕獲基礎(chǔ)架構(gòu)支持本地文件系統(tǒng)和共享文件系統(tǒng)。捕獲文件的大小還取決于負(fù)載,并與需要捕獲的數(shù)據(jù)成正比。請注意,捕獲的數(shù)據(jù)的格式與平臺無關(guān);這允許您在硬件平臺之間測試遷移。隨著時間的推移,負(fù)載目錄將包含負(fù)載文件、重放必需的元數(shù)據(jù),以及捕獲和所有后續(xù)重放的 AWR 快照(以允許進(jìn)行比較)。建議在捕獲和每次重放之后,將此負(fù)載目錄移至單獨的位置。每次重放都會向此目錄中添加更多的內(nèi)容,因此必須保持

11、使用一組相同的文件以保留重放歷史記錄和比較。我們當(dāng)前支持 Oracle 數(shù)據(jù)庫 10.2.0.4 及更高版本上的負(fù)載捕獲。請參閱有關(guān)限制的章節(jié)以獲取不支持特性的列表。設(shè)置捕獲在開始捕獲之前,需要創(chuàng)建一個目錄對象。請確?;A(chǔ)目錄為空,并具有足夠的存儲空間。如果系統(tǒng)空間不足,則捕獲將自動停止而不會影響用戶負(fù) 載。負(fù)載捕獲可以按需運行或按計劃在某個特定時間運行,持續(xù)時間應(yīng)該覆蓋應(yīng)用程序令人感興趣的時段(如高峰時間),在捕獲過程中將自動生成維護時段 AWR 快照以進(jìn)行分析和報告。捕獲結(jié)束時,用戶應(yīng)將快照導(dǎo)出到包含負(fù)載文件的目錄中。企業(yè)管理器對這些操作提供完全支持。指定過濾器捕獲基礎(chǔ)架構(gòu)提供了根據(jù)以下負(fù)

12、載屬性包括或排除特定負(fù)載的功能:用戶、程序、模塊、操作、服務(wù)以及會話 ID。由于許多應(yīng)用程序可能共享同一數(shù)據(jù)庫,因此可以使用過濾器僅測試某些需要升級的特定應(yīng)用程序,而不是測試整個系統(tǒng)。還可以使用過濾器來濾掉 DBA 可能要在捕獲過程中執(zhí)行的管理負(fù)載。圖 3:捕獲報告捕獲監(jiān)視和報告企業(yè)管理器提供了大量統(tǒng)監(jiān)視功能。您可以通過圖形了解捕獲的負(fù)載量(相對于整個數(shù)據(jù)庫負(fù)載)。您還可以隨時獲取捕獲的狀態(tài)報告。在捕獲過程中將自動生成 AWR 快照,AWR 中的性能數(shù)據(jù)用于提供更詳細(xì)的捕獲報告。建議導(dǎo)出 AWR 以便進(jìn)一步分析并與重放進(jìn)行比較。除了性能數(shù)據(jù)之外,報告還顯示了已經(jīng)捕獲的負(fù)載、尚未捕獲的負(fù)載量以及

13、無法重放的負(fù)載量。開銷負(fù)載捕獲過程已經(jīng)過高度優(yōu)化,以確保即使在繁忙系統(tǒng)上它所產(chǎn)生的開銷也可忽略不計。開銷主要取決于負(fù)載,并與需要捕獲的數(shù)據(jù)成正比。例如,如果負(fù)載主要包括屬于長時間運行的查詢的調(diào)用,則開銷可降至最低,因為每個時間單位內(nèi)捕獲的數(shù)據(jù)較少:對于執(zhí)行此查詢的每個調(diào)用,僅捕獲每個會話一次的復(fù)雜查詢的文本。相反,如果負(fù)載包括大量插入,則開銷將會升 高。例如,我們已經(jīng)觀察到在運行并發(fā)性較高的 TPCC 負(fù)載的系統(tǒng)上,吞吐量降低 4.5%。測試系統(tǒng)設(shè)置和負(fù)載處理捕獲負(fù)載之后,下一步是設(shè)置測試系統(tǒng)并應(yīng)用用戶要測試的更改,如數(shù)據(jù)庫升級或系統(tǒng)配置更改。測試系統(tǒng)應(yīng)該將數(shù)據(jù)庫恢復(fù)到捕獲開始之前的時間 點,

14、以反映相同的應(yīng)用程序數(shù)據(jù)狀態(tài),否則數(shù)據(jù)庫在重放過程中可能遇到數(shù)據(jù)差異??梢允褂?RMAN、快照備用、導(dǎo)入/導(dǎo)出工具等執(zhí)行應(yīng)用程序數(shù)據(jù)的復(fù)制或恢復(fù)。可以從捕獲報告中檢索捕獲時段的起始 SCN。(參見圖4)。例如,如果測試數(shù)據(jù)庫升級,則可使用 RMAN 將測試系統(tǒng)上的數(shù)據(jù)庫恢復(fù)到特定的 SCN 或時間點,然后執(zhí)行升級。在測試系統(tǒng)上進(jìn)行處理之前,需要將捕獲文件傳輸并整合到一個目錄中。處理負(fù)載捕獲將導(dǎo)致創(chuàng)建重放負(fù)載所需的必要元數(shù)據(jù)。需要在與重放系統(tǒng)相同的數(shù)據(jù)庫版本上進(jìn)行一次處理。處理之后,捕獲的負(fù)載便可以在相同版本上反復(fù)重放。重放捕獲的負(fù)載經(jīng)過處理之后就可以在測試系統(tǒng)上重放了。假設(shè)測試系統(tǒng)已經(jīng)過適當(dāng)設(shè)

15、置。一種稱為“重放客戶端”的特殊客戶端將重放已處理文件中的負(fù)載。重放客戶端將調(diào)用提交到數(shù)據(jù)庫(完全保持與捕獲系統(tǒng)中相同的時限和并發(fā)性),并對系統(tǒng)施加與生產(chǎn)環(huán)境中完全相同的負(fù)載。這樣,可以在生產(chǎn)環(huán)境中引入更改之前,在測試環(huán)境中標(biāo)識由更改導(dǎo)致的所有不穩(wěn)定性及其后續(xù)補救。必須注意的是,重放不需要中間層或應(yīng)用層。只需數(shù)據(jù)庫和重放客戶端即可忠實地再現(xiàn)生產(chǎn)負(fù)載并測試系統(tǒng)更改。重放客戶端“Oracle 數(shù)據(jù)庫 11g 實際增加了三個新特性,即自動 SQL 調(diào)整、分區(qū)顧問程序以及真正應(yīng)用測試。僅使用這三個特性便足以進(jìn)行升級?!盇rthur Fleiss, Colgate-Palmolive 的 IT 架構(gòu)師重

16、放客戶端是指重放捕獲文件的多線程 OCI 客戶端。每個重放客戶端線程讀取一個 捕獲文件,并將記錄的調(diào)用解釋為它提交到數(shù)據(jù)庫的一系列 OCI 調(diào)用。重放客戶端使用捕獲處理輸出來了解何時開始重放捕獲文件。開始重放文件之后,重放客戶端線程將根據(jù)記錄的時限發(fā)出調(diào)用:它執(zhí)行在兩個連續(xù)調(diào)用之間記錄的判斷時間。實際上,這意味著客戶端的不同重放線程之間沒有協(xié)調(diào)。所有同步(如果啟用)均在服務(wù)器端進(jìn)行,這將產(chǎn)生極具可擴展性的體系結(jié)構(gòu),在該體系結(jié)構(gòu)中,我們可以根據(jù)需要使用多個重放客戶端,而不會產(chǎn)生任何開銷。雖然重放客戶端是可以同時重放多個會話的多線程應(yīng)用程序,但重放會話數(shù)實際上受到每個進(jìn)程的線程數(shù)、打開文件描述符數(shù)

17、等限制。建議一個重放客戶端獨自重放的并發(fā)會話不應(yīng)超過 50 個。如果記錄的負(fù)載具有多個并發(fā)會話,則應(yīng)啟動多個重放客戶端以便進(jìn)行忠實的重放。我們提供了一個校準(zhǔn)實用程序,可以估算這些數(shù)量(請參閱有關(guān)“設(shè)置重放客戶端”的章節(jié)以獲取更多信息)。名為 wrc 的重放客戶端二進(jìn)制文件是 Oracle 客戶端和 Oracle 即時客戶端的一部分。重放技術(shù)同步一個關(guān)鍵突破是能夠重放負(fù)載,同時保持原始的并發(fā)性和事務(wù)特性。我們將此稱為“同步”。如果在重放過程中啟用同步(默認(rèn)行為),則服務(wù)器將執(zhí)行提交排序以保留事務(wù)特性。我們將捕獲過程中的調(diào)用分類為提交操作和非提交操作。這種區(qū)分的依據(jù)是提交操作更改數(shù)據(jù)庫狀態(tài),并使新

18、狀態(tài)對所有后續(xù)操作均可見。由于任何調(diào)用的結(jié)果都取決于數(shù)據(jù)庫狀態(tài),因此重放必須確保每個調(diào)用都遵循相應(yīng)的提交操作,以滿足結(jié)果一致性以及最后的數(shù)據(jù)庫最終狀態(tài)一致性。為了執(zhí)行此要求,過“早”到達(dá)服務(wù)器以進(jìn)行重放的重放調(diào)用將等待后面的等待事件, 直到相應(yīng)的提交操作得到重放:WCR:重放鎖定順序。如果會話在捕獲過程中看到與事務(wù)(其提交操作尚未重放)發(fā)生鎖爭用,則該會話將在重放過程中等待此事件。WCR:重放時鐘。這是空閑事件。 如果會話需要查看的數(shù)據(jù)庫狀態(tài)取決于尚未重放的提交操作,則該會話將在重放過程中等待此事件。圖 5:重放同步示例圖 6 中顯示了一個簡單的同步示例。在捕獲過程中,非提交操作 T3 在提交

19、操作 S2 之后執(zhí)行。因此, T3 可見到 S2 對數(shù)據(jù)庫狀態(tài)進(jìn)行的更改。現(xiàn)在,我們可以想象,S2 提交在重放過程中要比在捕獲過程中更慢,需要更多時間才完成。即使重放客戶端發(fā)出 T3 與捕獲過程中發(fā)出 T3 的時間相同,數(shù)據(jù)庫也應(yīng)該直到 S2 完成時才重放 T3,否則 T3 將錯過 S2 的更改。因此,T3 將置于 WCR:重放時鐘 等待事件之上,直到 S2 完成。如果禁用同步,我們將不能在調(diào)用之間執(zhí)行任何邏輯相關(guān)性,在這種情況下,僅根據(jù)捕獲的時限重放調(diào)用。數(shù)據(jù)重新映射即使我們執(zhí)行邏輯數(shù)據(jù)相關(guān)性,也會出現(xiàn)重放調(diào)用所執(zhí)行操作與其在捕獲過程中所執(zhí)行操作不同的情況。當(dāng)調(diào)用包含的系統(tǒng)相關(guān)數(shù)據(jù)在重放系統(tǒng)

20、中無效時,便會出現(xiàn)這種情況。Oracle 數(shù)據(jù)庫中此類數(shù)據(jù)的示例包括行標(biāo)識符 (rowid)、大對象定位器 (lob locator) 以及結(jié)果參考 (refcursor)。如果這些數(shù)據(jù)是綁定值的一部分,則重放客戶端會將它們重新映射到運行時正確值。以下示例(圖 7)說明了運行時重新映射。捕獲作為選擇列表一部分返回客戶端的 rowid (1)。 然后捕獲相同的 rowid 作為綁定 (2)。在重放過程中, 與 select 語句 (3) 關(guān)聯(lián)的捕獲 rowid 使重放客戶端預(yù)計 rowid 的重放時間值。此時,在捕獲的 rowid 與重放過程中出現(xiàn)的 rowid 之間進(jìn)行關(guān)聯(lián)。重放更新 (4)

21、時,將使用重放時間 rowid。這將使更新成功,并更新員工行。select rowid from emp w here name=”Smith”;update emp set sal= 2 * sal where row id = :1;(1)(3 )(2) (4 )捕獲重放圖 7:系統(tǒng)相關(guān)值的運行時重新映射對于在服務(wù)器內(nèi)生成的標(biāo)識符(如序列值),還需要進(jìn)行重新映射。當(dāng)重放的調(diào)用使用序列值時,重放基礎(chǔ)架構(gòu)將查找負(fù)載在捕獲階段使用的各個序列值。這樣便為重放的調(diào)用提供了它在捕獲過程中遇到的完全相同的值。如果序列代碼在重放過程中不變,則重放的調(diào)用最可能使用不同于捕獲過程中使用的序列值,從而導(dǎo)致數(shù)據(jù)差

22、異。數(shù)據(jù)差異原因如果出現(xiàn)以下情況,則認(rèn)為重放的調(diào)用出現(xiàn)差異它在重放過程中影響的行數(shù)不同于在捕獲過程中影響的行數(shù);它在重放過程中遇到一個錯誤,而在捕獲過程中沒有錯誤或出現(xiàn)一個帶有不同錯誤代碼的錯誤。由于捕獲的數(shù)據(jù)不包含任何結(jié)果,因此我們無法知道調(diào)用在重放過程中是否真正具有與捕獲過程中相同的結(jié)果。但為了重放,行計數(shù)和錯誤值足以表明重放的調(diào)用是否與其捕獲的對應(yīng)物具有類似的執(zhí)行方式。雖然重放技術(shù)足夠高級,可以處理同步和數(shù)據(jù)重新映射,但是不一定始終能夠?qū)崿F(xiàn)結(jié)果一致性。確實存在一些極端情況,但在我們試驗的所有負(fù)載中, 只有小部分的調(diào)用中出現(xiàn)這些情況,并不會使作為測試工具的重放值無效。出現(xiàn)差異的原因可能有:

23、PLSQL 腳本內(nèi)的多個提交 在這種情況下,我們將整個 PLSQL 塊視為單個提交操作,不會在 PLSQL 塊內(nèi)的語句與其他會話的調(diào)用之間執(zhí)行提交排序。重放過程中未同步的用戶操作 例如,對 dbms_pipe、用戶鎖、dbms_lock.sleep 等的調(diào)用使用不可重復(fù)的函數(shù) 例如,PLSQL 的 RANDOM() 和SYSDATE 都是此類函數(shù)。捕獲開始時的實時會話 這些會話可能包含對未在捕獲開始之前提交的數(shù)據(jù)進(jìn)行操作的調(diào)用。這些調(diào)用將出現(xiàn)差異,因為實時會話的缺失部分不會重放。對外部實體的引用 當(dāng)捕獲的調(diào)用使用指向遠(yuǎn)程數(shù)據(jù)庫的工具(如數(shù)據(jù)庫鏈接)時,如果遠(yuǎn)程鏈接不存在,則調(diào)用將在重放過程中失

24、敗。與計劃作業(yè)的交互 如果在測試系統(tǒng)中執(zhí)行的計劃作業(yè)與某些重放會話所用的用戶數(shù)據(jù)進(jìn)行交互,則可能存在差異,因為我們沒有對 計劃程序作業(yè)內(nèi)的提交進(jìn)行排序。在大多數(shù)實際情況下,重放都會努力使重放差異降至最低。既然重放是一種測試工具,我們便接受某些差異,因為可以容許極端情況。這也強調(diào)了,必須具有應(yīng)用程序級驗證腳本以評估重放質(zhì)量。重放選項服務(wù)器選項默認(rèn)情況下,以完全同步模式進(jìn)行重放。重放與捕獲的負(fù)載具有相同的事務(wù)提交排序、相同的并發(fā)性以及相同的時限。每個重放線程的開始時間與它在捕獲時的開始時間相同(相對于捕獲/重放的開始時間),并且在重放過程中還執(zhí)行捕獲過程中在同一會話中任何兩個連續(xù)調(diào)用之間記錄的判斷

25、時間。此模式在設(shè)計上確保了數(shù)據(jù)差異最小。但是,它可能增加某些開銷(主要由提交排序所致),這些開銷在某些情況下可能使性能測試無效。因此,我們提供了相應(yīng)選項以針對每種測試情況適當(dāng)調(diào)整重放行為。提交排序可以啟用或禁用。如果在重放過程中可以容許某些數(shù)據(jù)差異,則可以忽略提交排序。如果您的應(yīng)用程序在會話之間具有最小的相關(guān)性,則此模式將不會產(chǎn)生顯著的數(shù)據(jù)差異,并且可能很有用。它還可以用于壓力和負(fù)載測試。其余的三個重放選項(連接時間比例、判斷時間比例以及自動速率)將調(diào)整重放的請求率。默認(rèn)情況下,連接時間比例和判斷時間比例都設(shè)置為100%,這是請求率一致性所需的??梢愿鶕?jù)具體情況調(diào)整它們。例如,當(dāng)試圖在 4 節(jié)

26、點 RAC 系統(tǒng)(可以處理的請求率多達(dá)單個實例設(shè)置的 4倍)上重放單個實例捕獲時,可以將判斷時間比例設(shè)置為 25%,從而使重放客戶端發(fā)出的負(fù)載的請求率為原來的四倍。默認(rèn)情況下啟用自動速率,在這種情況下,重放線程將嘗試通過適當(dāng)減少判斷時間來保持捕獲的請求率。如果禁用自動速率,則不會減少捕獲的判斷時間以彌補執(zhí)行時間較長的調(diào) 用。連接重新映射捕獲時,將記錄已記錄會話用來連接到數(shù)據(jù)庫的連接字符串。但是,用于重放的數(shù)據(jù)庫通常不是捕獲過程中使用的數(shù)據(jù)庫。因此,在開始重放之前,用戶需要重新映射這些連接字符串。以下是一些可能的重新映射情況:一對一 簡單的實例到實例重新映射。還可以將單個連接字符串重新映射到負(fù)載

27、平衡監(jiān)聽程序,以測試從單個實例到 RAC 系統(tǒng)的升級。多對一 將幾個連接字符串重新映射到測試系統(tǒng)中的單個服務(wù)(如負(fù)載平衡監(jiān)聽程序)。設(shè)置重放客戶端用戶可以配置重放過程中使用的重放客戶端數(shù)。但是,建議用戶針對已處理的捕獲負(fù)載以校準(zhǔn)模式 (wrc mode = calibrate) 運行 WRC 重放客戶端。校準(zhǔn)報告提供了有關(guān)要使用的重放客戶端數(shù)以及將需要的 CPU 數(shù)的建議。它還提供了一些有關(guān)捕獲過程中的捕獲會話數(shù)和最大并發(fā)性的信息。強烈建議至少使用校準(zhǔn)報告建議的重放客戶端數(shù)和 CPU 數(shù)。如果無法做到這一點, 則可能導(dǎo)致不忠實的重放和/或重放客戶端錯誤。此外,用戶必須確保所有重放客戶端都可以連

28、接到重放數(shù)據(jù)庫,并且都可以訪問包含已處理的捕獲文件的目錄。這可以通過將目錄復(fù)制到客戶端計算機或使用共享文件系統(tǒng)實現(xiàn)。如果使用前一種方法,則不應(yīng)在重放之后將客戶端計算機上的目錄內(nèi)容復(fù)制回原始目錄。這將導(dǎo)致覆蓋至關(guān)重要的重放數(shù)據(jù)。重放分析和報告重放之后,用戶便可以評估重放的質(zhì)量(與負(fù)載捕獲相比)。典型的常見問題包括:一般重放信息(如開始時間、結(jié)束時間、重放選項、使用的重放客戶端數(shù)等)是什么?重放已經(jīng)完成了嗎?它是否已取消?與捕獲或與先前的重放相比,重放的快慢程度如何?重放是否已實際運行預(yù)期負(fù)載?重放過程中遇到什么錯誤和數(shù)據(jù)差異?重放的性能特性是什么?數(shù)據(jù)庫重放特性提供了重放報告,以幫助用戶分析重放

29、。為了進(jìn)一步研究, 可以使用其他性能報告(AWR、比較時段、ASH)和性能顧問程序(ADDM)。重放報告和監(jiān)視用戶可以使用企業(yè)管理器監(jiān)視重放的進(jìn)度和系統(tǒng)活動,并在重放過程中或重放結(jié)束時生成報告。重放報告包括重放信息、重放統(tǒng)計信息、負(fù)載概要以及重放差異,如重放過程中遇到的錯誤以及 DML 或 SQL 查詢返回的行中的數(shù)據(jù)差異。上圖是重放報告的一個示例。由于空間限制,我們僅顯示了“重放信息”的概述和詳細(xì)信息。以下部分概述了如何解釋報告的不同部分。會話故障用戶會話的重放可能失敗,并且將跳過會話中其余調(diào)用的重放。這在重放報告中顯示為會話故障。會話故障可能由不正確的系統(tǒng)配置導(dǎo)致。(如: 最大進(jìn)程限制)。

30、它還可能由影子進(jìn)程或重放線程的崩潰導(dǎo)致,在這種情況下,應(yīng)該在客戶端或服務(wù)器日志目錄中找到事件。錯誤差異如果特定調(diào)用的重放返回新的錯誤或不同的錯誤,則會報告錯誤差異。有三種情況:未找到:捕獲過程中出現(xiàn)而重放過程中未出現(xiàn)的錯誤新錯誤:捕獲過程中未出現(xiàn)而重放過程中出現(xiàn)的錯誤變異:重放過程中出現(xiàn)但與捕獲過程中不同的錯誤數(shù)據(jù)差異在捕獲和重放過程中,將記錄每個查詢 (SELECT) 或 DML(INSERT、UPDATE)的行計數(shù)。行計數(shù)中的不同之處被報告為差異。極為重要的是,用戶不僅僅依賴于此數(shù)據(jù)。用戶提供的數(shù)據(jù)驗證腳本由于負(fù)載重放的復(fù)雜性,用戶可能很容易迷失在提供的詳細(xì)差異分析中。強烈建議使用應(yīng)用程序

31、特定的驗證腳本評估重放質(zhì)量。有兩種方法用于開發(fā)驗證腳本。首先,用戶可以注入驗證數(shù)據(jù)的主要方面的負(fù)載定制設(shè)計腳本。為此類腳本提供相應(yīng)的“模塊名稱/模塊名稱操作” 屬性,可允許報告基礎(chǔ)架構(gòu)生成有關(guān)這些腳本的詳細(xì)重放特定報告。前提是,如果此類定制設(shè)計腳本沒有出現(xiàn)差異,則重放很好地完成了再現(xiàn)捕獲負(fù)載的任務(wù)。另一種方法是,開發(fā)腳本以評估重放的總體成功度。例如,如果在負(fù)載捕獲過程中處理了 10,000 個訂單,則您應(yīng)該驗證在重放過程中也處理了類似數(shù)量的訂單。請注意,在這種情況下,驗證腳本并不是負(fù)載捕獲的一部分。性能比較僅當(dāng)對重放的數(shù)據(jù)質(zhì)量評估符合要求之后,執(zhí)行性能分析才有效??梢允褂貌东@和重放報告進(jìn)行簡單

32、的性能比較。例如,用戶可以比較持續(xù)時間、等待類/事件次數(shù)等。除非重放以異步模式運行,否則明顯的錯誤或數(shù)據(jù)差異表明重放沒有適當(dāng)?shù)剡\用數(shù)據(jù)庫。由于同步的特性所在,可能無法進(jìn)行精確的數(shù)據(jù)庫時間比較(如果啟用同步)。這是因為同步將導(dǎo)致等待“wcr:重放時鐘”空閑等待事件。另請注意,同步將消除在捕獲過程中發(fā)生的某些事件;這些事件包括行鎖等 待,以及少數(shù)緩沖區(qū)忙和全局緩存忙等待事件。在捕獲過程中,這些等待事件所用的時間主要來自“wcr:重放鎖順序:”重放等待事件。為了深入研究重放的非重放特定性能,可以使用現(xiàn)有工具來監(jiān)視和衡量性能。這些工具包括 AWR、ASH 以及 AWR 比較時段報告。限制數(shù)據(jù)庫重放可以

33、捕獲和重放所有 SQL 相關(guān)調(diào)用和 PLSQL 調(diào)用,包括PLSQL RPC。但是,當(dāng)前數(shù)據(jù)庫版本 (11.1) 不支持以下特性:SQL Loader 直接路徑加載、導(dǎo)入/導(dǎo)出基于 OCI 的對象導(dǎo)航 (ADT) 和 REF 綁定流、非基于 PLSQL 的 AQ分布式事務(wù)、遠(yuǎn)程描述/提交操作閃回查詢共享服務(wù)器最佳實踐此部分匯總了用戶為有效使用數(shù)據(jù)庫重放特性而應(yīng)考慮的實踐列表。捕獲計劃存儲開銷:所需的存儲大小主要取決于負(fù)載。用戶需要為負(fù)載捕獲文件提供足夠的磁盤空間。Oracle 建議根據(jù)短期內(nèi)運行的捕獲估算大小。捕獲時段:捕獲時段應(yīng)該包含令人感興趣的負(fù)載,如高峰時間。重新啟動數(shù)據(jù)庫:重新啟動數(shù)據(jù)

34、庫是可選的,但是如果在捕獲開始時具有實時會話,則這些會話在捕獲開始之前更改的數(shù)據(jù)可能在重放過程中導(dǎo)致差異。建議在可能的情況下重新啟動數(shù)據(jù)庫,以將數(shù)據(jù)差異降至最低。用于 RAC 的文件系統(tǒng):如果可能,建議使用共享文件系統(tǒng)。AWR 數(shù)據(jù)導(dǎo)出:導(dǎo)出 AWR 提供了深入分析重放性能所需的統(tǒng)計信息。在導(dǎo)出 AWR 之前,用戶應(yīng)該考慮對生產(chǎn)系統(tǒng)的影響。測試系統(tǒng)設(shè)置和負(fù)載捕獲處理數(shù)據(jù)設(shè)置:應(yīng)用程序數(shù)據(jù)需要與生產(chǎn)系統(tǒng)保持一致,以將重放差異降至最低。建議做好確保相同復(fù)制的計劃。處理:應(yīng)該在測試系統(tǒng)上而不是生產(chǎn)系統(tǒng)上進(jìn)行處理,因為處理具有性能開銷并且可能需要很長時間。重放計劃隔離測試系統(tǒng):應(yīng)該將測試系統(tǒng)與生產(chǎn)系統(tǒng)

35、隔離,這樣測試不會干擾生產(chǎn)。數(shù)據(jù)庫重放基礎(chǔ)架構(gòu)提供了靈活的目錄對象創(chuàng)建和連接重新映射,以實現(xiàn)此目的。系統(tǒng)時鐘:如果應(yīng)用程序邏輯涉及 SYSDATE 的使用,則用戶應(yīng)該考慮將重放開始時的系統(tǒng)時鐘重新設(shè)置為捕獲開始的時間。這里是另一個邊欄注釋區(qū)域。請注意,邊欄沒有可見的邊界。PLSQL 程序包雖然數(shù)據(jù)庫重放的主要界面是 Oracle 企業(yè)管理器,但是通過一些 PLSQL 程序包和 DBA 視圖提供了命令行界面。請注意,需要 DBA 角色才能使用這些命令。用于控制負(fù)載捕獲的 PLSQL 程序包是 dbms_workload_capture。以下是進(jìn)行捕獲時需要輸入的主要命令。請參閱相關(guān)文檔以獲取更多詳細(xì)信息。create directory

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論