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