OCI接口编程出现连接错误,连接字符串解析错误问题

kmkjwjf kmkjwjf 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
是采用Tuxedo进行编程,在tpsvrinit函数中加入和ORACLE连接的操作部分,其函数内容如下:

OCIInitialize(OCI_DEFAULT|OCI_OBJECT,(dvoid *)0,0,0,0);
OCIEnvInit(&tpcenv, OCI_DEFAULT, 0, (dvoid **)0);
OCIHandleAlloc((dvoid *)tpcenv, (dvoid **)&tpcsrv, OCI_HTYPE_SERVER, 0 , (dvoid **)0);
OCIHandleAlloc((dvoid *)tpcenv, (dvoid **)&errhp, OCI_HTYPE_ERROR, 0 , (dvoid **)0);
OCIHandleAlloc((dvoid *)tpcenv, (dvoid **)&tpcsvc, OCI_HTYPE_SVCCTX, 0 , (dvoid **)0);
for (;;) {
rval = OCIServerAttach(tpcsrv, errhp, (text *)0, 0,OCI_DEFAULT);
if (rval == OCI_SUCCESS || rval == OCI_SUCCESS_WITH_INFO)
break;
OCIERROR(errhp, rval);
sleep(1);
}

由于在执行OCIServerAttach函数时出错,因此不断的在sqlnet.log中出现如下错误:

Fatal NI connect error 12545, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/opt/oracle/bin/oracle)(ARGV0=oracletpccraw80)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))')(DETACH=NO))(CONNECT_DATA=(CID=(PROGRAM=tpccfmlw)(HOST=node122)(USER=oracle))))

原因应该是设置连接的数据库sid和hostname错误了。实际上我需要连接的数据库的hostname是128.5.30.111,SID是tpccraw80。

而我写的tnsnames.ora中的内容是按照正确格式设置的:

tpcc =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= 128.5.30.111)(Port= 1521))
(SDU=14600)
(CONNECT_DATA = (SERVICE_NAME = tpccraw80))
)


想问各位大侠,如何修改tnsnames.ora或者是OCI调用使我的程序能正确的连接到Oracle数据库?
...全文

相关推荐

LINUX_OCI.rar_linux oci_oci_oci linux_oracle

LINUX下ORACLE数据库操作,OCI用C++封装的。

刘良运

Oracle数据库连接实战:Dll包使用指南

动态链接库(Dynamic Link Library, DLL)是Windows操作系统中一种用于存放可以被多个程序同时使用的一段程序或代码的库文件。DLL文件通过提供可重用代码块,减少程序的体积,允许模块化设计,提高系统的可维护性和稳定性。在数据库交互领域,DLL承担着与数据库服务进行通信、执行SQL命令以及处理数据等功能。使用DLL可以避免重复编写数据库连接和操作代码,提升应用性能,实现高效的数据交互。

滚菩提哦呢

Oracle Instant Client:轻量级数据库连接管理工具

Oracle Instant Client是一个轻量级的Oracle数据库客户端软件包,它为开发者提供了一种在不安装完整数据库软件的情况下访问Oracle数据库的能力。通过仅需下载和配置Instant Client,开发者可以在应用程序中嵌入数据库连接功能,这为开发和部署数据库应用程序提供了极大的便利。Instant Client支持多种编程语言接口,如Pro*C/C++、ODBC、JDBC和Python等,这使得它能够与各种应用程序和开发环境无缝集成。

你这人真狗

简单的oci案例源码

一个入门的oci案例,实现了 增删改查操作,和插入二进制的操作,是一个容易的案例 一个入门的oci案例,实现了 增删改查操作,和插入二进制的操作,是一个容易的案例

晓理紫

c# 封装OCI.dll 编程

通过c#封装oci.dll 实现对数据的基本处理。不需要安装oracle客户端。一直完善更新中。希望大家可以参与学习。最近遇到点问题还没有完全解决。

jason成都
评论 7
收藏 已收藏
分享
返回顶部
kmkjwjf
Oracle 17,133 成员 55,258 内容