代码之家  ›  专栏  ›  技术社区  ›  funwithcoding

如何为mono配置oracle instantclient?

  •  1
  • funwithcoding  · 技术社区  · 16 年前

    单声道真的很棒。我们的一些应用程序在linux中开箱即用,甚至没有重新编译二进制文件。但是,我很难将oracle instantclient配置为与mono一起使用。

    我在CentOS虚拟机上安装了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,现在如何配置mono将其用作oracle客户端?以及如何在app.config连接字符串部分指定oracle数据库?

    尽管mono是一个功能强大的框架,但它似乎也像linux一样存在问题,所有的文档都只能在邮件列表中找到,而官方网站上的任何内容要么已经过时,要么对普通用户来说都不清楚。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Rob van Laarhoven    16 年前

    使用oracle easy connect命名方法或在正确的位置创建tnsnames.ora(查看instant client docs以了解位置的搜索顺序)。 tnsping不是instant client(或任何附加包)的一部分。

    从即时客户端 faq 如何确保我的“tnsnames.ora”文件正在Instant Client中使用?

    如何在即时客户端模式中指定连接字符串? 所有不需要使用Oracle\u HOME或TNS\u ADMIN(查找配置文件,如tnsnames.ora或sqlnet.ora)的Oracle net命名方法都在即时客户机模式下工作。特别是,可以按以下格式指定连接字符串:

    SQL连接URL字符串的格式为:

    例如:

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

    “(描述=(地址=(协议=tcp)(主机=dlsun242)” (端口=5521)) (连接数据=(服务名称=bjava21)))

    如果未设置TNS\u ADMIN环境变量,并且使用了诸如inst1等TNSNAMES条目,则必须设置ORACLE\u HOME变量,并且配置文件应位于$ORACLE\u HOME/network/ADMIN目录中。

    请注意,本例中的ORACLE\ U HOME变量仅用于定位ORACLE Net配置文件,客户端代码库的其他组件(OCI、NLS等)均未使用ORACLE\ U HOME的值。

        2
  •  2
  •   funwithcoding    16 年前

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

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