在RedHat Enterprise 4 上安装 Mono1.9 (四)
(1)Mono 安装
(2)Apache和XSP 安装和配置
(3)Castle MonoRails配置运行
这两天,一直试图让我们的系统连接到Oracle,但是让我们很困惑的是,系统一直提示说:System.DllNotFoundException: libclntsh.so。Goole了一下,网上很多的人也是遇到了这个问题,参考他们的说明和方法,但是始终不能解决。后来我只好换了一个操作系统,改用OpenSUSE,出乎意料,很顺利的连到Oracle。
其实在Linux上配置Oracle应该是比较简单,以OpenSUSE为例:
- 首先去下载一个Oracle的 Oracle Instant client,很小,只有几十M。
- 解压缩并Copy到Linux的某个文件夹,比如 :/home/oracleclient.
- copy一个tnsnames.ora文件到这个文件夹。或者自己写一个按照如下格式:
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
) - 在Apache的配置文件中加入:
export LD_LIBRARY_PATH=/home/oracleclient:$LD_LIBRARY_PATH
export TNS_ADMIN=/home/oracleclient - 客户端文件夹中可能只有一个libclntsh.so.10.1,因此你可以做一个连接文件libclntsh.so,或者修个/etc/mono/config, 中的oci到libclntsh.so.10.1
- 重新启动Apache
- 启动应用程序测试。
- 如果Oracle出来的中文是乱码,则需要在Apache的配置文件在加入:
export NLS_LANG=american_america.AL32UTF8
以上的安装假定,Oracle数据已经安装在另外一台服务器上。那么这台Mono服务器几乎不需要安装复杂的Oracle Client。但是这些配置在ReaHat上就不起作用,它一如既往的找不到DLL。难道是因为它是数据库服务器呢?还是因为它的Apache安装配置不正确?这还需要进一步求证。
接下来的Oracle测试中,大部分都可以使用,但是 使用OracleClientFactory.Instance获取DBFactory的地方却一直出错。难道Mono还没有实现这个Factory?