1、Loadrunner支持Oracle协议,可以选择协议录制方式,或手写脚本方式,本文讲的手写脚本方式,简洁方便。

2、vuser_init文件代码(连接全放到init中,因为连接耗时耗资源,以保证性能测试时少连接):


[objc] view plain copy

  1. vuser_init()  

  2. {  

  3.     lrd_init(&InitInfo, DBTypeVersion);  

  4.     lrd_initialize_db(LRD_DBTYPE_ORACLE, 20);  

  5.     lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv100);  

  6.     lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv10);  

  7.     lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc10);  

  8.     lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes10);  

  9.     lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes20);  

  10.     //lrd_server_attach(OraSrv1, "qa70/orcl", 9, 0, 0);  

  11.     lrd_server_attach(OraSrv1"qa70", -100);//lrd_server_attach(OraSrv1, "qa70", 4, 0, 0)  

  12.     lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv100);  

  13.     lrd_ora8_attr_set(OraSes1, USERNAME, "xtjg_test", -10);//lr_decrypt("58b3e02f8ba0e4201c2c")  

  14.     //lrd_ora8_attr_set(OraSes1, PASSWORD, lr_decrypt("5487fff63e812b81"), -1, 0);  

  15.     lrd_ora8_attr_set(OraSes1, PASSWORD, "123456", -10);  

  16.     lrd_ora8_attr_set_from_handle(OraSvc1, SESSION, OraSes100);  

  17.     lrd_session_begin(OraSvc1, OraSes1100);  

  18.     lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm10);  

  19.       

  20.     return 0;  

  21. }  


2、action文件代码


[objc] view plain copy

  1. Action()  

  2. {  

  3.     charchar *test;  

  4.     lr_load_dll("ole32.dll");      //引用windows生成GUID的API  

  5.     test=lr_guid_gen("GUID");      //调用上面lr_guid_gen()方法   

  6.     lr_save_string(test,"GUID");  

  7.   

  8.         lr_start_transaction("test-insert");  

  9.   

  10.         lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm70);  

  11.         lrd_ora8_stmt(OraStm7"insert into ent_unionpunish "   

  12.         " (id, limlow, lowdes, limdatefrom, limdateto, senddep, senddepname, recdep, recdepname, infotype,"  

  13.         "pripid, remark, organizationid, dataproway, errcode, subdate, feedbackdate, hanobjtype,"  

  14.         "persontype, name, certype, cerno, entname, uniscid, regno)"  

  15.         "values "  

  16.         "('{GUID}', 'v_limlow', 'v_lowdes', to_date('2016-12-11','yyyy/mm/dd'),"  

  17.         "to_date('2016-12-11','yyyy/mm/dd'),"   

  18.         "'v_senddep', 'v_senddepname', 'v_recdep', 'v_recdepname', 'v_infotype', 'v_pripid', 'v_remark',"   

  19.         "'v_organizationid', 'v_dataproway', 'v_errcode',"  

  20.         "to_date('2016-12-11','yyyy/mm/dd'),to_date('2016-12-11','yyyy/mm/dd'), '1',"  

  21.         "'v_persontype', 'v_name', 'v_certype', 'v_cerno', 'v_entname', 'v_uniscid', 'v_regno')"100);  

  22.         /*lrd_ora8_stmt(OraStm7, "update ent_unionpunish set hanobjtype=1 where name='smooth", 1, 0, 0);*/  

  23.         lrd_ora8_exec(OraSvc1, OraStm710, &uliRowsProcessed, 00000);  

  24.         lrd_handle_free(&OraStm70);  

  25.   

  26.         lr_end_transaction("test-insert", LR_AUTO);  

  27.   

  28.         lr_start_transaction("test-select");  

  29.   

  30.         lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm70);  

  31.         lrd_ora8_stmt(OraStm7"select * from ry_jbxx,dz_zzxx where dz_zzxx.zzbh=ry_jbxx.RYZZBH and "  

  32.         " ry_jbxx.xm='{RYDZ_XM}' and ry_jbxx.csrq='{RYDZ_CSRQ}'"1320);  

  33.         lrd_ora8_exec(OraSvc1, OraStm700, &uliRowsProcessed, 00000);//注意参数与insert的区别          

  34.         lrd_handle_free(&OraStm70);  

  35.   

  36.         lr_end_transaction("test-select", LR_AUTO);  

  37.     return 0;  

  38. }  


3、vuser_end文件代码

[objc] view plain copy

  1. vuser_end()  

  2. {  

  3.     lrd_session_end(OraSvc1, OraSes100);  

  4.     lrd_server_detach(OraSrv100);  

  5.     lrd_handle_free(&OraEnv10);  

  6.   

  7.     return 0;  

  8. }