首页 > 数据库 > Oracle > 正文

在ASP.NET MVC 4 on Mono中使用Oracle,Client in CentOS 6.x的问

2019-11-02 14:51:38
字体:
来源:转载
供稿:网友

   在ASP.NET MVC 4 on Mono中使用OracleClient in CentOS 6.x的问题记录

  前言

  最近有个Web项目,业务功能不复杂,但是这个客户(某政府部门)有两个硬性要求:1、数据库必须使用Oracle;2、程序必须运行在Linux或HP-Unix系统中。虽然把.NET程序跑在Linux中一直都是俺的自觉要求,之前也断续为此做了一些准备(我们自己的一些底层框架库已经在Linux中顺利跑起来了),但是把一个Web项目完整的移植到Mono in CentOS 6.x中确实没有过。

  安装Oracle for Linux客户端

  1、从Oracle官网下载:

  oracle-instantclient12.1-basic-12.1.0.1.0-1.i386.rpm

  oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.i386.rpm

  oracle-instantclient12.1-devel-12.1.0.1.0-1.i386.rpm

  oracle-instantclient12.1-odbc-12.1.0.1.0-1.i386.rpm

  使用 #> rpm -ivh ... 命令分别安装这几个rpm文件。完装完毕后,在 /usr/lib 目录中就会有个 oracle 目录了。

  2、配置环境信息:

  请打开 /etc/profile 文件,在这个文件里面追加如

双视影院[www.aikan.tv/special/shuangshiyingyuan/]
下内容:

  export ORACLE_BASE=/usr/lib/oracle/12.1 #请注意,这里应填写为你的安装路径

  export ORACLE_HOME=$ORACLE_BASE/client #请注意,这里应填写为你的安装路径

  export ORACLE_SID=ortl #请注意,这里应填写你的SID值

  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

  export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 #请注意,这里的字符集应该与你的数据库的字符集一致

  编辑保存后,运行 #> source /etc/profile 命令使该profile立即生效;或者注销当前用户并重新登录Linux系统亦可。

  3、指定.ora文件:

  在 /usr/lib/oracle/12.1/client 目录中创建一个 network 目录,在其下再创建一个 admin 目录,然后将你的 tnsnames.ora 文件放置在此。

  4、设置库路径

  进入 /etc/ld.so.conf.d 目录中,新建一个名为 oracle-i386.conf 的文件,其内容只有一行文本:

  /usr/lib/oracle/12.1/client/lib

  然后在终端使用如下命令,重新加载配置文件:

  #> ldconfig

  5、检测是否安装成功

  运行 sqlplus 命令,人品没问题的话应该可以看到类似下面这样的信息:

  #> sqlplus

  SQL*Plus: Release 12.1.0.1.0 Production on Sun Mar 16 01:49:42 2014

  Copyright (c) 1982, 2013, Oracle. All rights reserved.

  问题出现

  我们的Web程序使用了 System.Data.OracleClient 下面的东东来访问Oracle数据库,这些代码在.NET in Windows下面可以正常工作,但是在 Mono in CentOS 6.x下面却罢工了,我在CentOS系统中使用的Web服务器是Jexus 5.4.0版本。

  第一次访问页面的时候,报出的异常信息如下:

  System.DllNotFoundException: libclntsh.so

  at (wrapper managed-to-native) System.Data.OracleClient.Oci.OciCalls/OciNativeCalls:OCIEnvCreate (intptr&,System.Data.OracleClient.Oci.OciEnvironmentMode,intptr,intptr,intptr,intptr,int,intptr)

  at System.Data.OracleClient.Oci.OciCalls.OCIEnvCreate (System.IntPtr& envhpp, OciEnvironmentMode mode, IntPtr ctxp, IntPtr malocfp, IntPtr ralocfp, IntPtr mfreep, Int32 xtramem_sz, IntPtr usrmempp) [0x00000] in :0

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表