在數(shù)據(jù)庫的遷移和升級場景中,我們經常會遇到一個問題:在做壓力測試時,如何模擬真實的業(yè)務壓力,解決這個問題的方法有很多,比如:應用方開發(fā)模擬程序或者使用壓力測試工具模擬,如load runner,但是,如果要說哪種方法能最大限度地模擬真實業(yè)務壓力,我認為還是Oracle的Database Replay(數(shù)據(jù)庫重放)功能,Database Replay功能是Real Application Testing的一部分,它的基本原理圖如下:
簡單說,Database Replay可以在生產數(shù)據(jù)庫上“捕獲”負載(workload capture),保存成一定格式的二進制文件。將保存的負載文件復制到測試環(huán)境,經過一定的處理后,就可以在測試環(huán)境“重放”負載(workload replay),從而達到模擬真實壓力,進行壓力測試的目的。
Database Replay是11g才有的特性,但是,負載的捕獲,支持10.2.0.4之后的數(shù)據(jù)庫,這一點也正好符合國內很多客戶的需求,因為國內還有相當一部分客戶,因為穩(wěn)妥起見,系統(tǒng)還都一直運行在10gR2版本的Oracle數(shù)據(jù)庫上,都有升級的需求。
Consolidated Database Replay 是11.2.0.2之后才出現(xiàn)的功能,字面意思是整合的數(shù)據(jù)庫重放,它可以將不同系統(tǒng)“捕獲”的負載,整合到一起重放,適用于數(shù)據(jù)庫整合測試和Scale-Up測試。
后面我們用實驗來詳細介紹一下Database Replay的相關功能,實驗采用10.2.0.5作為負載的捕獲端,用12.1.0.2作為負載的重放端。
準備工作(安裝Database Replay相關補?。?/h5>
首先要根據(jù)文檔 Mandatory Patches for Database Testing Functionality for Current and Earlier Releases (Doc ID 560977.1),檢查該打的補丁是否打過了。捕獲端和重放端都要打。