我已经在LoadRunner 12.00中使用Oracle 2 Tier协议记录了一个脚本。这是脚本失败的一小段代码:
lrd_init(&InitInfo, DBTypeVersion);
lrd_initialize_db(LRD_DBTYPE_ORACLE, 1, 0);
lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0);
lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv1, 0);
lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc1, 0);
lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes1, 0);
lrd_server_attach(OraSrv3, "xyz.abc.com", 24, 0, 0);
错误发生在lrd_server_attach行:
Action.c(24): Server Handle has not been allocated (NULL)
Action.c(24): server_attach: ERROR, return-code=LRDE2090
我已使用正确的连接语句更新了tsnames.ora文件。是什么导致此错误?我应该从哪里开始寻找?请帮助。
好,让我们看一下lrd_server_attach()的示例代码,然后看您的代码
首先,示例
rd_initialize_db(LRD_DBTYPE_ORACLE, 2, 0);
lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0);
lrd_handle_alloc_ora(OraEnv1, SERVER, &OraSrv1, 0); // See OraSrv1 here
lrd_handle_alloc_ora(OraEnv1, SVCCTX, &OraSvc1, 0);
lrd_handle_alloc_ora(OraEnv1, SESSION, &OraSes1, 0);
lrd_server_attach(OraSrv1, "rman", -1, 0, 0); // See OraSrv1 here
现在,您的代码
lrd_init(&InitInfo, DBTypeVersion);
lrd_initialize_db(LRD_DBTYPE_ORACLE, 1, 0);
lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0);
lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv1, 0); // See OraSrv1 here
lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc1, 0);
lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes1, 0);
lrd_server_attach(OraSrv3, "xyz.abc.com", 24, 0, 0); // See OraSrv3 here
对我来说,您似乎有一个尚未分配的OraSrv3句柄标签。您的第三个参数也有点麻烦,因为它通常是第二个参数的长度,但是这里更长。