如何为单声道配置oracle instantclient?

时间:2010-03-11 03:22:31

标签: linux oracle mono

Mono非常棒。我们的一些应用程序即使不重新编译二进制文件也可以在Linux中开箱即用。但是,我很难配置oracle instantclient与mono使用它。

我在CentOS VM上安装了instantclient(通过安装instantclient rpm)但是我没有在任何地方找到TNSNAMES.ORA。

我搜索了oracle,发现以下路径包含oracle库。

[root@bagvapp rupert]# ll /usr/lib/oracle/11.2/client/lib/
total 143280
-rw-r--r-- 1 root root     7456 Aug 14  2009 cobsqlintf.o
-rw-r--r-- 1 root root      342 Aug 14  2009 glogin.sql
lrwxrwxrwx 1 root root       17 Mar  9 06:52 libclntsh.so -> libclntsh.so.11.1
-rw-r--r-- 1 root root 40088477 Aug 14  2009 libclntsh.so.11.1
-rw-r--r-- 1 root root  6986848 Aug 14  2009 libnnz11.so
lrwxrwxrwx 1 root root       15 Mar  9 06:52 libocci.so -> libocci.so.11.1
-rw-r--r-- 1 root root  1879549 Aug 14  2009 libocci.so.11.1
-rw-r--r-- 1 root root 89377610 Aug 14  2009 libociei.so
-rw-r--r-- 1 root root   152304 Aug 14  2009 libocijdbc11.so
-rw-r--r-- 1 root root  1501651 Aug 14  2009 libsqlplusic.so
-rw-r--r-- 1 root root  1218075 Aug 14  2009 libsqlplus.so
-rw-r--r-- 1 root root   777979 Aug 14  2009 libsqora.so.11.1
-rw-r--r-- 1 root root  1996228 Aug 14  2009 ojdbc5.jar
-rw-r--r-- 1 root root  2111220 Aug 14  2009 ojdbc6.jar
-rw-r--r-- 1 root root   298388 Aug 14  2009 ottclasses.zip
drwxr-xr-x 3 root root     4096 Mar  9 06:52 precomp
-rw-r--r-- 1 root root    37807 Aug 14  2009 xstreams.jar

没有可用的TNSPING,没有TNSNAMES.ORA,现在如何配置单声道将其用作oracle客户端?以及如何在app.config连接字符串部分中指定oracle数据库?

尽管mono是一个功能强大的框架,但似乎它遇到像linux这样的问题,所有文档只能在邮件列表中找到,官方网站上提供的任何文件都已过时或者对普通用户不清楚。

希望事情会很快改变,Mono将为Linux编程框架。

2 个答案:

答案 0 :(得分:3)

使用oracle easy connect命名方法或在正确的位置自己创建tnsnames.ora(查看即时客户端文档以获取位置的搜索顺序)。 tnsping不是即时客户端(或任何附加包)的一部分。

来自即时客户faq 如何确保我的“tnsnames.ora”文件在Instant Client中使用? 始终将TNS_ADMIN环境变量或注册表设置设置为tnsnames.ora文件的完整路径。在使用Instant Client运行时,此练习将确保您为应用程序使用适当的tnsnames.ora。

如何在Instant Client模式下指定连接字符串? 所有不需要使用ORACLE_HOME或TNS_ADMIN(用于查找配置文件,如tnsnames.ora或sqlnet.ora)的Oracle网络命名方法都可以在Instant Client模式下运行。特别是,可以使用以下格式指定连接字符串:

以下格式的SQL Connect URL字符串:

// host:[port] [/ service name]

如:

// dbase-server-5:4321 / ORDERS

作为Oracle Net关键字 - 值对。例如:

“(DESCRIPTION =(ADDRESS =(PROTOCOL = tcp)(HOST = dlsun242) (PORT = 5521)) (CONNECT_DATA =(SERVICE_NAME = bjava21)))“

如果设置了TNS_ADMIN环境变量,则需要TNS_ADMIN定位配置文件的命名方法才能继续工作。

如果未设置TNS_ADMIN环境变量,并且使用了诸如inst1等的TNSNAMES条目,则必须设置ORACLE_HOME变量,并且配置文件应该位于$ ORACLE_HOME / network / admin中目录。

请注意,在这种情况下,ORACLE_HOME变量仅用于查找Oracle Net配置文件,客户端代码库(OCI,NLS等)的其他组件不使用ORACLE_HOME的值。

不支持遗留适配器或空连接字符串。但是,使用空连接字符串的另一种方法是将UNIX上的TWO_TASK环境变量或Windows上的LOCAL变量设置为tnsnames.ora条目或Oracle Net关键字 - 值对。如果TWO_TASK或LOCAL设置为tnsnames.ora条目,则tnsnames.ora文件必须能够通过TNS_ADMIN或ORACLE_HOME设置加载。

答案 1 :(得分:2)

Mono不知道在哪里搜索“libclntsh.so”。在我的系统上,“libclntsh.so”可用于/ /usr/lib/oracle/11.2/client/lib/。我的问题通过执行以下命令解决了

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib/