51Testing软件测试论坛

标题: 使用LR测试Oracle数据库的方法 [打印本页]

作者: cedar    时间: 2006-12-4 14:47
标题: 使用LR测试Oracle数据库的方法
使用LR测试Oracle数据库的方法
一个简单的连接方法,欢迎大家跟贴讨论更多方法
详细脚本见附件


选择,建立一个Oracle(2-Tier)协议的脚本
加入
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
{
        {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
};


先定义初始化数据库的各种变量
static void FAR *       OraEnv1;
static void FAR *       OraSvc1;
static void FAR *       OraSrv1;
static void FAR *       OraSes1;
static void FAR *       OraStm1;
unsigned long           rownum;

初始化数据库部分
lrd_init(&InitInfo, DBTypeVersion);
lrd_initialize_db(LRD_DBTYPE_ORACLE, 3, 0);
lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0);
lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc1, 0);
lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv1, 0);
lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes1, 0);

连接数据库
lrd_server_attach(OraSrv1, "这里填写数据库的名称", -1, 0, 0);
lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv1, 0, 0);

设定数据库密码
lrd_ora8_attr_set(OraSes1, USERNAME, "system", -1, 0);
lrd_ora8_attr_set(OraSes1, PASSWORD, "这里填写密码", -1, 0);

初始化连接session
lrd_ora8_attr_set_from_handle(OraSvc1, SESSION, OraSes1, 0, 0);

开始连接数据库
lrd_session_begin(OraSvc1, OraSes1, 1, 0, 0);
lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm1, 0);

设定查询语句
lrd_ora8_stmt(OraStm1, "这里填写查询语句", 1, 0, 0);

执行查询语句
lrd_ora8_exec(OraSvc1, OraStm1, 0, 0,&rownum, 0, 0, 0, 0, 1);

释放连接数据库的各种变量
lrd_handle_free(&OraStm1, 0);
lrd_session_end(OraSvc1, OraSes1, 0, 0);
lrd_server_detach(OraSrv1, 0, 0);
lrd_handle_free(&OraEnv1, 0);

[ 本帖最后由 cedar 于 2007-7-27 18:50 编辑 ]
作者: Zee    时间: 2006-12-4 15:02
确实不错
作者: leey    时间: 2006-12-4 15:04
有点深奥,顶一个。
作者: vivien    时间: 2006-12-4 15:12
前段时间一直弄这这个东西,现在可以参考了,谢谢楼主共享:)
作者: blackwind    时间: 2006-12-4 15:51
感动啊 ,希望以后多共享一下脚本.最好出教程拉,哈哈
作者: jackloo    时间: 2006-12-4 16:41
呵呵。其实不需要这么麻烦。
如果你是用Oracle(2-Tier)协议的话,可以通过各种执行Oracle的SQL脚本的工具来直接录制。它会自动生成很多文件,比如:
pre_cci.c
vdf.h
*.rdf
*.grd
print.inl
你脚本中定义的所有static,其实都自动保存在vdf.h文件中;另外如果你要使用到数据库中表的某些字段,它也会自动保存到*.grd和*.rdf文件中。

但是,当初我发现如果我使用ODBC协议的话,我根本录制不到任何内容,所以才手写脚本,把vdf.h文件中的定义内容全部写在了脚本里。我发现这样也是可以运行的,而且还发现居然效率更高。
作者: cedar    时间: 2006-12-5 10:28
不错的信息。欢迎大家一起来讨论。
作者: jiangyue    时间: 2006-12-5 11:20
标题: 请教一问题
请教一下,在对数据库进行测试的时候,比如模拟200个用户对数据库施压,在数据库中会添加实际数据吗。他实现的原理是什么?谢谢!
作者: jiangyue    时间: 2006-12-5 11:27
标题: 请教loadrunner 实现压力测试的原理?
在对数据库测试的过程中,模拟的数据会在数据库中实际添加吗?如果不能,他怎么对数据库的性能指标实施测试?
  请教各位大侠!!!
作者: cedar    时间: 2006-12-5 14:41
对数据进行的操作是实际操作,如果是插入语句的话,会向数据库里添加数据的。
由此来测试数据库的性能指标。
作者: AlanStone    时间: 2006-12-5 16:59
好.简单明了,学习的好帮手.
作者: Aries1987    时间: 2006-12-5 17:00
标题: 不错
不错是不错!问题是我写在那啊?怎么弄啊?可否做个视屏给大家看看啊?
作者: hadywei    时间: 2006-12-5 17:37
我想问一下  ,这个脚本要自己写吗 ?不是录制的吗?
作者: cs_blue    时间: 2006-12-6 09:34
正要学习这方面知识,谢谢搂主!
作者: cedar    时间: 2006-12-6 12:00
通过录制也可以有类似的脚本,但无用的语句过多,简单的测试可以直接引用上面的语句。
作者: 黑妹    时间: 2006-12-6 14:03
谢谢,收藏
作者: 黑妹    时间: 2006-12-6 15:20
原帖由 jackloo 于 2006-12-4 16:41 发表
呵呵。其实不需要这么麻烦。
如果你是用Oracle(2-Tier)协议的话,可以通过各种执行Oracle的SQL脚本的工具来直接录制。它会自动生成很多文件,比如:
pre_cci.c
vdf.h
*.rdf
*.grd
print.inl
你脚本中定义 ...


如何录制的?sdlkfj1
作者: cedar    时间: 2006-12-6 16:18
安装Oracle后选择一个可以访问数据库的程序,开始录制。
作者: wuhuawu09    时间: 2006-12-6 16:20
不是很明白......
作者: cedar    时间: 2006-12-6 16:54
试试就清楚了。sdlkfj2
作者: suncaijun    时间: 2006-12-7 10:41
死命的顶贴
作者: jackloo    时间: 2006-12-7 11:17
标题: 回复 #17 黑妹 的帖子
就是用Oracle(2-Tier)协议,选择WIN32程序,程序选择的是ORACLE的SQLPLUS。开始录制后在里面写SQL语句就可以了。
作者: dandan    时间: 2006-12-7 13:36
不错....顶一下
作者: ZBB    时间: 2006-12-7 14:17
好文章,顶一下!

不过,本人是菜鸟,还需要多理解
作者: cedar    时间: 2006-12-7 15:11
加了对应脚本的附件,欢迎大家下载。
作者: syjjuanna_971    时间: 2006-12-7 16:13
标题: 不错
顶一下!
作者: fengjianxin    时间: 2006-12-7 16:48
标题: 菜鸟也要顶
什么都看不懂也进来顶上一顶!以后多学习!
作者: g_win    时间: 2006-12-7 21:42
ding one!
作者: cedar    时间: 2006-12-12 13:43
自己顶个。
作者: zhaoxu2003    时间: 2006-12-17 15:48
标题: 谢谢
谢谢
作者: testzhu    时间: 2006-12-20 14:32
我也想问上面问过的问题,要是测试的时候,向实际的数据库中增加了数据,那岂不是多了很多垃圾数据?再删除的话删不干净或删错了岂不是很麻烦?怎么办?
作者: xingcyx    时间: 2006-12-20 15:25
在哪里填数据库服务器的IP地址?
作者: cedar    时间: 2006-12-22 10:32
to:31楼
因为是实际操作才可能测试真正的数据库性能,也可以对应的编写删除数据的脚本

to:32楼
数据的地址是由连接Oracle的客户端配置的
作者: jut984907    时间: 2006-12-22 11:03
下载看看,有空试试
作者: 2betrue    时间: 2006-12-22 17:51
顶一下,好东西
作者: eliteboyling    时间: 2007-2-7 17:45
我菜鸟。。虽然不知道。。但还是谢谢了。。
作者: Joan2005    时间: 2007-2-8 09:37
好厉害啊.
作者: wuzm8412    时间: 2007-2-9 11:33
标题: 好东西
顶破头也要顶一下
作者: jingzi    时间: 2007-3-30 19:06
先下载,然后慢慢研究sdlkfj5
作者: kelly_yan    时间: 2007-3-31 09:57
下载
作者: markbullet    时间: 2007-4-2 17:21
支持原创
作者: windfly1314    时间: 2007-4-4 17:25
good!太感谢你了!
作者: yuanxinyi16rain    时间: 2007-4-5 17:40
标题: 回复 #1 cedar 的帖子
ok
作者: xiyufenfei    时间: 2007-4-11 10:08
不错 收藏了 谢谢
作者: ggogw    时间: 2007-4-12 09:44
好方法,,值得学习!!
作者: wjmiao    时间: 2007-4-12 10:51
sdlkfj2 好东西,学习下.
作者: rickyzhu    时间: 2007-4-12 13:12
高手都自己写代码
新手都是想办法录制
作者: 测试员叶子    时间: 2007-4-12 15:21
原帖由 jackloo 于 2006-12-7 11:17 发表
就是用Oracle(2-Tier)协议,选择WIN32程序,程序选择的是ORACLE的SQLPLUS。开始录制后在里面写SQL语句就可以了。

请问,你录制的程序设置循环,例如Action部分循环2次,会有错吗?

如果我将登录SQL*Plus的操作也录制在Action中,第二次循环会报错,提示如下:
Action.c(11): Error: lrdo_server_attach: "OCIServerAttach" return-code=OCI_ERROR, error-code=24309:
Action.c(11): Error:     ORA-24309: 已连接至服务器
Action.c(11): server_attach: ERROR, return-code=LRDE2009.  ServerHandle=OraSrv1, ServerID="customs"
Abort was called from an action.

不把登录信息录制在Action就没有问题。
这是为什么?
作者: whaiya    时间: 2007-4-27 14:15
标题: 回复 #22 jackloo 的帖子
我自己试的时候用PLSQL Developer可以成功录制脚本,但在controller中运行时报不支持此协议(Oracle(2-Tier)),把楼主的代码拷贝到aciton下运行时报InitInfo定义错误,但选择odbc协议时运行正常。就是在controller设置的场景中运行有问题,为什么可以正常录制脚本却不能运行呢?
作者: guxingyun    时间: 2007-4-28 17:10
学习中 收藏
作者: taotaoma    时间: 2007-5-11 12:00
谢谢了,我正需要呢,。
作者: joy    时间: 2007-5-14 19:35
觉得有点难sdlkfj9
作者: huangoujian    时间: 2007-5-15 10:37
不错,学习下呀sdlkfj3 sdlkfj3
作者: luhuisky    时间: 2007-5-17 17:27
听有用的
作者: 黑客    时间: 2007-5-18 15:38
本质还是通过ODBC来传递数据的sdlkfj3  
所以测试数据库 方法很多
如以前我就用JAVA协议
写了点JDBC 用LR测试 也很好的 效率也很高的
作者: 黑客    时间: 2007-5-18 15:43
原帖由 测试员叶子 于 2007-4-12 15:21 发表

请问,你录制的程序设置循环,例如Action部分循环2次,会有错吗?

如果我将登录SQL*Plus的操作也录制在Action中,第二次循环会报错,提示如下:
Action.c(11): Error: lrdo_server_attach: "OCIServerAtt ...



连接没有断开或释放啊  如果你非的想录制到ACTION中 建议多录制一个断开连接的操作就可以了 呵呵
作者: lu5897    时间: 2007-5-18 16:52
厉害,顶一个!
作者: chenzhe0420    时间: 2007-5-21 11:41
确实不错
作者: syd    时间: 2007-5-21 16:26
感谢楼主分享经验,直接用ODBC不知道能不能有同样的效果。
作者: cedar    时间: 2007-6-18 17:55
自己也来顶,哈哈~~~
作者: zhmiss    时间: 2007-6-20 15:40
为什么要付费啊
作者: dawee    时间: 2007-6-21 09:43
原帖由 cedar 于 2006-12-4 14:47 发表
使用LR测试Oracle数据库的方法
一个简单的连接方法,欢迎大家跟贴讨论更多方法
详细脚本见附件


选择,建立一个Oracle(2-Tier)协议的脚本
加入
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT ...


楼主什么时间写个Oracle9的吧
作者: fightsuper    时间: 2007-6-21 10:06
还是入门级别,比较难
作者: dawee    时间: 2007-6-21 10:24
原帖由 cedar 于 2006-12-4 14:47 发表
使用LR测试Oracle数据库的方法
一个简单的连接方法,欢迎大家跟贴讨论更多方法
详细脚本见附件


选择,建立一个Oracle(2-Tier)协议的脚本
加入
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT ...



你这谁买的起啊,我下载了个,贴上吧
作者: athenawx    时间: 2007-6-21 12:10
多谢75楼的。我觉得也是,为什么要付费呢。本来这个网站就是要让大家共享资源的呀。如果都不用付费,赚那些积分也就没有必要了。
作者: 期待流星    时间: 2007-7-2 12:17
标题: zhixhi
zhichiyiaxi
作者: ebuluo    时间: 2007-8-29 13:56
在这一块是无知,学习
作者: 423799223    时间: 2007-8-30 07:54
多谢楼主
作者: harneyluo    时间: 2007-8-30 09:41
呵呵,有点看不懂,不过我最后会要测试这部分东西,下来好好研究以下
作者: stevenhappy    时间: 2007-9-4 09:37
cedar,可以留下你的msn或者QQ吗?我想向你请教一下。麻烦你看到了,尽快回复我。我的msn是:steven851@hotmail.com.
非常感谢你的共享,我现在也在做这样的测试。
作者: stevenhappy    时间: 2007-9-4 10:09
要是有人知道cedar的msn或者QQ也可以告诉我呀。
作者: hadywei    时间: 2007-9-4 10:24
只试用oracle吗,db2等可以吗
作者: zhangjing0523    时间: 2007-9-4 15:31
谢谢
作者: stevenhappy    时间: 2007-9-5 10:21
标题: 回复 #6 jackloo 的帖子
我也是按照你的做法去录制脚本,但是在controller加入并发用户数运行时,马上就失败了:
You do not have a license for this Vuser type.Please contact Mercury Interactive to renew your license.这是什么原因呢?我已经在license加入了AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB。很急。我用的是破解1oadrunner8.0。
作者: niceleafage    时间: 2007-9-13 10:43
标题: 用LR测试sql语句的性能,问两个问题
第一个问题是:用LR测试sql语句性能,那么多sql语句测试哪一句好呢,是不是对找执行时间最长的,执行次数最多的sql语句去测试 ?
第二个问题:查看sql语句性能,主要看哪些技术指标呢
作者: yjr2008    时间: 2007-10-8 19:39
有点难度哦
作者: haiyanfei    时间: 2007-10-11 17:07
不错的,顶了
作者: abgg    时间: 2007-10-24 18:33
哦,晕,狂晕
不过谢拉
作者: senciya    时间: 2007-10-27 21:16
谢谢楼主分享
作者: 兰色犹豫    时间: 2007-11-6 17:24
修改了:设定联接数据库地址、设定连接数据库的用户名和密码、设定查询条件
报错啊,
Virtual User Script started
Starting action vuser_init.
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(13): lrd.c/fjInitDB: Cannot load the ORACLE library (DLL), "ora805.dll", specified after a "+"  in the "805" entry in section [ORACLE_WINNT] in the "lrd.ini" file.  - 找不到指定的模块。
Processing continues
Action.c(13): lrd.c/fjInitDB: Using the "816" entry in section [ORACLE_WINNT] in the "lrd.ini" file ("C:\Program Files\Mercury\LoadRunner\bin\lrdo32.dll" / "oci.dll")
Action.c(19): Error: lrdo_server_attach: "OCIServerAttach" return-code=OCI_ERROR, error-code=06401:
Action.c(19): Error:     ORA-06401: NETCMN: 无效的驱动程序指示符
Action.c(19): server_attach: ERROR, return-code=LRDE2009.  ServerHandle=OraSrv1, ServerID="10.10.20.48:db9i"
Abort was called from an action.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

数据库是Oracle 9G的
修改内容如下:

//设定联接数据库地址
    lrd_server_attach(OraSrv1, "10.10.20.48:db9i", -1, 0, 0);
        lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv1, 0, 0);
//设定连接数据库的用户名和密码
        lrd_ora8_attr_set(OraSes1, USERNAME, "myfd", -1, 0);
    lrd_ora8_attr_set(OraSes1, PASSWORD, "myfd", -1, 0);
//设定查询条件
        lrd_ora8_stmt(OraStm1, "select * from mng_user", 1, 0, 0);

[ 本帖最后由 兰色犹豫 于 2007-11-6 17:27 编辑 ]
作者: 猫妖木夕    时间: 2007-11-12 14:58
下载,正在学习,谢谢了...   雪中送炭啊
作者: sdusun    时间: 2007-11-27 14:18
LR测试Oracle的时候只能出来4个性能曲线!
哎,怎么回事呢?而且,没办法analyze?! 你们测试的时候所有性能曲线都能出来吗?
作者: softwareth    时间: 2007-12-7 16:49
为什么我修改后回放时 执行的结果是0 啊 ??
有没有人能告诉我啊
作者: log_1    时间: 2007-12-21 10:50
标题:
好东西呀,正在做这块,都不知道哪地方错了,完全手工写的代码,正好拿来参考。
作者: tianliang    时间: 2007-12-24 11:16
标题: loadrunner怎么连接Oracle数据库吗
谁有详细资料感激不尽。请发到zhidongm·163.com
作者: tianliang    时间: 2007-12-24 11:18
标题: 怎么在loadrunner里设置Oracle数据库的连接吗
急用

谁有详细资料感激不尽。请发到zhidongm·163.com
作者: xiaofei0604    时间: 2008-1-13 00:34
说实话 看不懂
作者: camil    时间: 2008-2-14 14:51
我把要测试的sql语句换为insert后,运行出错,报“零迭代错误”,不知何故
作者: zkfxysy    时间: 2008-3-13 13:49
试试看,学习中~~~
作者: 天地一剑    时间: 2008-3-13 15:35
学到东西了......
作者: catexiaona    时间: 2008-3-14 13:30
看来这些都是高手~~
作者: terrylight    时间: 2008-4-24 14:28
好东西,收藏了,谢谢LZ
作者: cyxm    时间: 2008-4-24 15:37
本人功夫浅,看不懂呀!怎么办呢?!!!!!
作者: qzyhouse    时间: 2008-4-24 23:09
标题: 回复 1# 的帖子
谢谢
作者: harryhu    时间: 2008-5-12 13:45
heh

[ 本帖最后由 harryhu 于 2008-6-17 10:31 编辑 ]
作者: superfang    时间: 2008-5-13 11:56
标题: 回复 1# 的帖子
Virtual User Script started
Starting action vuser_init.
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(13): lrd.c/fjInitDB: Cannot load the ORACLE library (DLL), "ora805.dll", specified after a "+"  in the "805" entry in section [ORACLE_WINNT] in the "lrd.ini" file.  - 找不到指定的模块。
Processing continues
Action.c(13): lrd.c/fjInitDB: Using the "816" entry in section [ORACLE_WINNT] in the "lrd.ini" file ("C:\Program Files\Mercury\LoadRunner\bin\lrdo32.dll" / "oci.dll")
Action.c(19): server_attach: ServerHandle=OraSrv1, ServerID="DBTEST_59.151.27.83"
Action.c(20): attr_set: TargetHandle=OraSvc1, SERVER=OraSrv1
Action.c(22): attr_set: TargetHandle=OraSes1, USERNAME="dtuser_"
Action.c(23): attr_set: TargetHandle=OraSes1, PASSWORD="[Hidden]"
Action.c(25): attr_set: TargetHandle=OraSvc1, SESSION=OraSes1
Action.c(27): session_begin: SvcCtxHandle=OraSvc1, SessionHandle=OraSes1
Action.c(32): lrd_ora8_stmt: StmtHandle=OraStm1, Text="select * from dt_clientuser"
Action.c(34): ora8_exec: 0 row(s) processed
Action.c(39): Error: (null)
Action.c(43): session_end: SvcCtxHandle=OraSvc1, SessionHandle=OraSes1
Action.c(44): server_detach: ServerHandle=OraSrv1
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
  我想问下,为什么我的日志显示为: 执行0行呢?? 
作者: superfang    时间: 2008-5-13 11:59
标题: 回复 1# 的帖子
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =

这两个变量是做什么用的呢? 不要行吗?
作者: xihong2004    时间: 2008-5-13 16:49
噢哟,不错
作者: harryhu    时间: 2008-5-14 15:36
参数化后,每次运行到第二个参数的时候,都显示
我设置的三个参数都是一样的!

[ 本帖最后由 harryhu 于 2008-6-17 10:31 编辑 ]
作者: harryhu    时间: 2008-5-15 16:54
[
我尝试过了,登录步骤在

[ 本帖最后由 harryhu 于 2008-6-17 10:32 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2