单声道真的很棒。我们的一些应用程序在linux中开箱即用,甚至不需要重新编译二进制文件。然而,我很难将oracle instantclient配置为与mono一起使用。
我在CentOS虚拟机上安装了即时客户端(通过安装即时客户端rpm),但是我没有找到TNSNAMES.ORA anywhere。
我搜索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,现在如何配置mono以将其用作oracle客户端?以及如何在app.config连接字符串部分指定oracle数据库?
虽然mono是一个强大的框架,但它似乎像linux一样存在问题,所有的文档都只能在邮件列表中找到,而官方网站上的任何东西要么过时了,要么对普通用户来说不是很清楚。
希望事情很快会改变,Mono将成为linux的编程框架。
发布于 2010-03-11 16:11:56
使用oracle easy connect命名方法或自己在正确的位置创建一个tnsnames.ora (查看即时客户端文档以了解位置的搜索顺序)。tnsping不是即时客户端(或任何附加程序包)的一部分。
从instant client faq 如何确保在Instant Client中使用我的" tnsnames.ora“文件?始终将TNS_ADMIN环境变量或注册表设置设置为tnsnames.ora文件的完整路径。这种做法将确保您在使用即时客户端运行时为您的应用程序使用适当的tnsnames.ora。
如何在即时客户机模式下指定连接字符串?所有不需要使用ORACLE_HOME或TNS_ADMIN (用于查找配置文件,如tnsnames.ora或sqlnet.ora)的Oracle net命名方法都在即时客户机模式下工作。具体地说,可以用以下格式指定连接字符串:
以下形式的SQL连接URL字符串:
//host:port
例如:
//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等TNSNAME项,则必须设置ORACLE_HOME变量,并且配置文件应位于$ORACLE_HOME/network/admin目录中。
请注意,本例中的ORACLE_HOME变量仅用于定位Oracle Net配置文件,而客户机代码库的任何其他组件(OCI、NLS等)都不使用ORACLE_HOME的值。
不支持遗留适配器或空连接字符串。但是,使用空连接字符串的另一种方法是将UNIX上的TWO_TASK环境变量或Windows上的本地变量设置为tnsnames.ora条目或Oracle Net关键字-值对。如果将TWO_TASK或LOCAL设置为tnsnames.ora条目,则tnsnames.ora文件必须能够通过TNS_ADMIN或ORACLE_HOME设置加载。
发布于 2010-03-11 21:55:48
Mono不知道在哪里搜索"libclntsh.so“。在我的系统上,"libclntsh.so“是@ /usr/lib/oracle/11.2/client/lib/。通过执行以下命令,我的问题得到了解决
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib/https://stackoverflow.com/questions/2422316
复制相似问题