【LoadRunner】利用lr_db_connect函数对Oracle数据库压测的完整流程
项目中常常会有直接对数据库进行压测的需求,以前都是通过Jmeter实现的,但是Jmeter本身图表及结果收集方面没有Loadrunner那么强大,所以利用loadrunner工具自己的函数整理了一个脚本。思路大致如下:
1、环境准备
Oracle 11g
LR11
适用于WebService协议
2、Oracle数据库环境说明
Oracle安装步骤这里不进行说明,详细步骤请参考:https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html
重点注意:Oracle安装完毕后,在本地计算机命令行解释器键入“regsvr32 D:\oracle\11.0\db\BIN\OraOLEDB11.dll”,其中路径为Oracle安装路径BIN目录下的OraOLEDB11.dll,否则会报“未在计算机注册‘OraOLEDB.Oracle.1’”错误。
3、lr_db_connect函数连接目标数据库
脚本如下:
1 //创建Oracle数据库连接 2 lr_db_connect("StepName=Connect", 3 "ConnectionString=Provider=OraOLEDB.Oracle.1, " 4 "Data Source=SID;Server=服务器IP;Port=端口号;" 5 "Persist Security Info=True; " 6 "User ID=username;Password=pw", 7 "ConnectionName=db1", 8 "ConnectionType=OLEDB", 9 LAST);
注意:一定要先进行上一步的环境注册
执行脚本,报“Error: DB Connection failed {"ORA-01017: invalid username/password; logon denied"}”错误,但是在本地登录时用户名、密码都是对的,最后修改用户名(可以改成一样的)或新建用户登录成功。
原因可参考:http://www.51testing.com/html/36/614336-858335.html
4、SQL执行及查询结果判断
成功连接数据库后,执行SQL语句,具体脚本如下:
1 int i=0; 2 #数据条数 3 int NumRows=0; 4 5 //执行SQL 6 i = lr_db_executeSQLStatement("StepName=Query", 7 "ConnectionName=db1", 8 "SQLStatement=select * from TEST.table1", 9 "DatasetName=MyDataset", 10 LAST ); 11 12 //查看数据条数 13 lr_output_message("数据条数:%d",i); 14 15 //打印执行结果 16 lr_db_dataset_action("StepName=RemoveDataset", 17 "DatasetName=MyDataset", 18 "Action=PRINT", 19 LAST ); 20 21 //利用循环获取具体字段的取值-----根据DatasetName 22 while (i<3) { 23 lr_db_getvalue("StepName=GetValue", 24 "DatasetName=MyDataset", 25 "Column=id", 26 "Row=next", 27 "OutParam=ID", 28 LAST ); 29 lr_output_message("The value is: %s", lr_eval_string("{ID}") ); 30 i=i+1; 31 } 32 33 34 //释放结果 35 lr_db_dataset_action("StepName=RemoveDataset", 36 "DatasetName=MyDataset", 37 "Action=REMOVE", 38 LAST);
5、场景设计及执行
脚本调试好(事务、判断等自行添加即可)就可以根据实际需求进行场景设计了,执行场景等测试流程。。。