我想在 Ubuntu 中使用 C++ 连接到本地网络中的 Oracle 数据库。据我所知,这可以通过即时客户端库来完成。但是我没有成功连接。
我尝试过其他库,例如 soci、ODBC ..,但它们也失败了。
我可以使用 Oracle SQL 开发人员 GUI 连接到这个数据库,没有任何问题。但是使用其他库我会遇到许多不同的错误。我为您列出了其中一些。
使用 InstantClientLibrary12
user="XYZ";
pass="XYZ";
db="mdw.dbs.sharif.edu:1521";
Environment * env = Environment::createEnvironment(Environment::DEFAULT)
Connection * conn = env->createconnection(user,pass,db); //here it gives error
给出这个错误:
Error: ORA-12163 - TNS:connect descriptor is too long
使用社交图书馆
session sql(soci::oracle,"service=mdw.dbs.sharif.edu:1521 user=XYZ pass=XYZ");
这给出了这个错误
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
这些错误是因为 Oracle 没有正式支持 Ubuntu 吗?有没有人在 Ubuntu 中成功连接到 Oracle DB?
最佳答案
您的问题与开发无关。您的 oracle 客户端的 tnsnames.ora 文件存在配置问题。你应该在这个结构上重新配置它:
<addressname> =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port>))
)
(CONNECT_DATA =
(SERVICE_NAME = <service_name>)
)
)
您可能忘记在文件中指定SERVICE_NAME。请记住 tnsnames.ora 文件位于您的/network/admin 目录中。
希望对您有所帮助。
关于c++ - 从 ubuntu 连接到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44326678/