城邦 发表于 2013-5-9 08:59:45

loadrunner测试oracle sql语句性能

工作需要,尝试用loadrunner测试oracle的sql查询性能,记录下来,以后遇到使用。

录制脚本使用Oracle(2-Tier)协议,用NCA和11i的都做了实验,发现后边两个录制下来的事务比较少,怀疑可能是协议在不同层,后来一直用Oracle(2-Tier)协议,感觉可以录制下来的细节会比较多。

录制采用win32形式,选择的执行文件是oracle客户端安装之后的sqlplus。开始想偷懒采用PLSQL,但是无论采用哪种协议录制完之后loadrunner的客户端都会崩溃。安装oracle的时候为了保险把所有的组件全部安装了,之后使用的时候感觉没有必要,只安装sqlplus应该也可以,不过这个没有尝试,如果有人看了这个博客如此操作不行可不要怪我哦。

安装oracle客户端完的时候有几个注意的地方,第一个是要在环境变量中配置环境变量ORACLE_HOME为oracle客户端安装的路径(路径中不允许有空格,当然安装时若有是不让安装完成的),第二个是把PLSQL的tnsnames.ora文件复制到oracle客户端安装路径的\NETWORK\ADMIN\文件夹下,如果没有就新建一个,在里边写上要链接的数据库信息,如下:
test =                         \\数据库名
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))             \\IP和端口号
    )
    (CONNECT_DATA =
      (SID = test1)               \\实例名
    )
)

这几步做完之后到sqlplus上去试一下是否能够连接并且执行脚本,如果能够执行则关掉之后把loadrunner的脚本录制打开选择(2-Tier)协议和客户端之后开始录制。loadrunner脚本录制器会自动启动sqlplus,填入用户名、密码、数据库名之后登陆进去,执行需要测试的sql语句,此处注意这个脚本录制仍然需要遵守每步写一个注释的规则,不然后边就区分不开了。如果需要录制的是存储过程,可以放在一个sql文件中然后在sqlplus执行就可以了。sql语句全部执行完之后千万不要忘了用exit命令退出sqlplus,不然场景会失败。

录制完成之后可以和http协议脚本一样进行调试,但是我只是把登录和退出两步分别放在init和end中了,没有做别的操作。在网上看好像如果想做参数还有些需要注意的地方。这个等以后探索了再研究吧。
如果想换sql语句就直接在脚本中把对应的字符串改了就行了,回放的时候会在日志中写出来sql执行的结果。

用场景加载脚本的时候要注意这个时候使用的license和web的时候是不一样的,要用global的才行。
我在执行场景的时候报了一个“Error: lrdo_server_attach:"OCIServerAttach" return-code=OCI_ERROR, error-code=24309:”的错,注意,这里的error-code是数据库反馈回来的错误,要查找到oracle的错误代码含义。我的错误就是第一次录脚本的时候没有从sqlplus中退出,oracle说我已经和它连接,重要求连接的时候就会报错。这就是为什么不要忘了exit命令退出sqlplus。当然把他们分别放在init和end中也可以避免这个问题发生。

lsekfe 发表于 2013-5-9 09:49:10

不错的分享,支持!

让测试飞起来 发表于 2013-12-1 20:39:22

真心好分享呀!!

让测试飞起来 发表于 2013-12-1 20:39:40

如果用LR直接监控ORA呢?试过吗?

让测试飞起来 发表于 2013-12-1 20:56:29

真的是太谢谢了!
页: [1]
查看完整版本: loadrunner测试oracle sql语句性能