如何利用LoadRunner最高效的批量制造Oracle數(shù)據(jù)

前不久寫過一篇高效大批量制造MySQL數(shù)據(jù)的文章:《如何利用LoadRunner最高效的批量制造MySQL數(shù)據(jù)》,后來有人問我嘀趟,怎么高效大批量制造Oracle數(shù)據(jù)脐区。其實(shí)是一樣的,也是用JDBC的批量插入(addBatch)方法她按,以下就提供一下我寫的腳本牛隅,以供參考:

/*

* LoadRunner Java script. (Build: _build_number_)

*

* Script Description:

*? ? ? ? ? ? ? ? ? ?

*/

import lrapi.lr;

import java.io.File;

import java.io.IOException;

import java.sql.Connection;?

import java.sql.DriverManager;?

import java.sql.PreparedStatement;?

import java.sql.SQLException;

import java.lang.StringBuffer;

import java.util.List;

import java.util.ArrayList;

public class Actions

{

//設(shè)定數(shù)據(jù)庫驅(qū)動(dòng),數(shù)據(jù)庫連接地址酌泰、端口媒佣、名稱,用戶名陵刹,密碼?

? ? String driverName="oracle.jdbc.OracleDriver";?

? ? String url="jdbc:oracle:thin:@192.168.1.176:1521:orcl";?

? ? String user="test";? //用戶名?

? ? String password="123456";? //密碼?


? ? PreparedStatement pstmt = null;?


? ? //數(shù)據(jù)庫連接對象?

? ? Connection conn = null;


? ? public void connection(){

? ? try {

//反射Oracle數(shù)據(jù)庫驅(qū)動(dòng)程序類?

Class.forName(driverName);?


//獲取數(shù)據(jù)庫連接?

conn = DriverManager.getConnection(url, user, password);?

? ? ? ? // 關(guān)閉事務(wù)自動(dòng)提交

? conn.setAutoCommit(false);? ? ?

//輸出數(shù)據(jù)庫連接?

System.out.println(conn);

? ? } catch (ClassNotFoundException e) {?

e.printStackTrace();?

? ? } catch (SQLException e) {?

e.printStackTrace();?

? ? }

}

public void deconnection(){

? ? try{?

? ? if(pstmt != null){?

pstmt.close();?

? ? }

? ? if(conn != null){?

conn.close();?

? ? }

} catch (SQLException e) {?

? ? e.printStackTrace();?

}?

}

? ? public void addBatchData(List alist){

? ? try{

? ? for (int i = 0; i < alist.size(); i++) {

? ? pstmt.setString((i+1), alist.get(i).toString());

? }

? ? //把一個(gè)SQL命令加入命令列表

? ? pstmt.addBatch();

? ? } catch (Exception e) {?

e.printStackTrace();?

? ? }

? ? }

public int init() throws Throwable {

return 0;

}//end of init

public int action() throws Throwable {

? ? ? ? String sqlStr="insert into test_opadetail(id, opaid, pripid, uniscid, entname, enttype, enttype_cn, regorg, " +

? ? ? ? "regorg_cn, lerep, regno, certype, cerno, specause, specause_cn, abntime, decorg, decorg_cn, ismove, " +

? ? ? ? "remexcpres, remexcpres_cn, remdate, redecorg, redecorg_cn, creationtime, creatoruserid, lastmodificationtime, " +

? ? ? ? "lastmodifieruserid, deletiontime, deleteruserid, isdeleted, dom, enttype_zn, year)" +

? ? ? ? ? ? " values " +

? ? ? ? "(sys_guid(), ?, ?, ?, ?, ?, ?, '220101', '長春市工商行政管理局', 'test', ?, '', '', 1, " +

? ? ? ? "'未按規(guī)定公示年報(bào)', to_date(to_char(sysdate,'yyyy/mm/dd'),'YYYY/MM/DD'), '220101', '長春市工商行政管理局', 1," +

" '', '', '', '', '', to_date(to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS'), " +

? ? ? ? "'97e6daadd18f4667be0c5c42b84b8a90', to_date(to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS'), " +

? ? ? ? "'97e6daadd18f4667be0c5c42b84b8a90', '', '', 0, ?, ?, '')";

? ? List list = new ArrayList();//定義一組參數(shù)化數(shù)據(jù)

? ? list.add(lr.eval_string("{Param1}"));

? ? list.add(lr.eval_string("{Param2}"));

? ? list.add(lr.eval_string("{Param3}"));

? ? list.add("TEST"+lr.eval_string("{Param4}"));

? ? list.add(lr.eval_string("{Param5}"));

? ? list.add(lr.eval_string("{Param6}"));

? ? list.add(lr.eval_string("{Param7}"));

? ? list.add(lr.eval_string("TESTA-{Param4}"));

? ? list.add(lr.eval_string("{Param12}"));

? ? connection();

? ? StringBuffer sql = new StringBuffer();

? sql.append(sqlStr);

? lr.start_transaction("action");

? ? try{

? //創(chuàng)建該連接下的PreparedStatement對象?

? ? pstmt = conn.prepareStatement(sql.toString());

? ? for (int k=0;k<1000;k++){//一個(gè)User一批次插入1000條

? ? addBatchData(list);

? ? }

// 執(zhí)行批量更新

? pstmt.executeBatch();

} catch (Exception e) {?

e.printStackTrace();?

? ? }

? lr.end_transaction("action", lr.AUTO);

? ? deconnection();


return 0;

}//end of action

public int end() throws Throwable {?

return 0;

}//end of end

}

然后通過Loadrunner進(jìn)行多用戶并發(fā)的跑腳本默伍,快速的制造出成千上億條數(shù)據(jù),我就是用這個(gè)方法衰琐,在測試環(huán)境中模擬出現(xiàn)場的大數(shù)據(jù)量也糊,然后去重現(xiàn)或定位系統(tǒng)當(dāng)中由于慢SQL引起的慢事務(wù)問題。

????????注:以上是批量插入數(shù)據(jù)的腳本羡宙,有人會(huì)將批量更新也放到腳本中執(zhí)行狸剃,這時(shí)候就要避免行級(jí)鎖在高并發(fā)時(shí)引起死鎖,所以強(qiáng)調(diào)更新條件應(yīng)該使用主鍵狗热。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钞馁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匿刮,更是在濱河造成了極大的恐慌指攒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僻焚,死亡現(xiàn)場離奇詭異允悦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門隙弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來架馋,“玉大人,你說我怎么就攤上這事全闷〔婕牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵总珠,是天一觀的道長屏鳍。 經(jīng)常有香客問我,道長局服,這世上最難降的妖魔是什么钓瞭? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮淫奔,結(jié)果婚禮上山涡,老公的妹妹穿的比我還像新娘。我一直安慰自己唆迁,他們只是感情好鸭丛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唐责,像睡著了一般鳞溉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鼠哥,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天熟菲,我揣著相機(jī)與錄音,去河邊找鬼肴盏。 笑死科盛,一個(gè)胖子當(dāng)著我的面吹牛帽衙,可吹牛的內(nèi)容都是我干的菜皂。 我是一名探鬼主播适室,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凸主,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了梯啤?” 一聲冷哼從身側(cè)響起谴垫,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤章母,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后翩剪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乳怎,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年前弯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚪缀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秫逝。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖询枚,靈堂內(nèi)的尸體忽然破棺而出违帆,到底是詐尸還是另有隱情,我是刑警寧澤金蜀,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布刷后,位于F島的核電站,受9級(jí)特大地震影響渊抄,放射性物質(zhì)發(fā)生泄漏尝胆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一抒线、第九天 我趴在偏房一處隱蔽的房頂上張望班巩。 院中可真熱鬧,春花似錦嘶炭、人聲如沸抱慌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抑进。三九已至,卻和暖如春睡陪,著一層夾襖步出監(jiān)牢的瞬間寺渗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工兰迫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留信殊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓汁果,卻偏偏與公主長得像涡拘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子据德,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容