我能操作的终端电脑是一台linux系统可以上互联网 ,服务器在部署在独立的私网上,不方便上互联网。服务器是2008R2.安装vs不是很方便。其所linux下作开发不是不可以,java php mono.net python 都能做。但是我还得在服务器上部署一套运行环境。因为操作系统不同,还不知道有没有什么坑。就想到了不需要部署的ASP。2008R2的IIS自带此功能。
但所没想到还是有坑的。。先说说服务器的环境,2008R2 安装了64位 oracle11G。安装了9i精简客户端。
一)连接字符串问题
原来在网上搜的ado的连接字符串,格式如下。但所一直报错,提示无法识别服务名。
connstr="Provider=OraOLEDB.Oracle;Data Source=orcl;User Id=trffpn_app;Password=*****; "
然后就尝试另外的连接字符串通过ODBC连接,格式如下:
connstr="DSN=trffpn;UID=trffpn_app;PWD=******"
二)64位系统下32位ODBC管理工具。
需要在odbc下面建立连接。在管理工具里面用ODBC管理建立了连接池,发现害死报错,提示找不到数据源。后来发现64的系统ODBC是区分32位和64位的。32位ODBC管理工具路径如下:
C:\Windows\SysWOW64\odbcad32.exe
三)9i精简客户端odbc驱动问题
找到odbc32就好办了,建立连接就可以了,发现还是报错,提示用户名密码不对。怎么尝试怎么不对。想来64位的ODBC没问题,估计就是32位的ODBC驱动的问题了。
卸载驱动,重新安装12.2绿色版驱动。
绿色版客户端是不包含ODBC驱动的,下载独立ODBC驱动包,把两个放在一个目录下面。
然后执行一下ODBC驱动安装文件odbc_install.exe,建议在命令行里执行方便查看输出结果。
最后配置环境变量即可,主要方便32位的PLSQL连接。其中tns_admin和ORACLE_HOME不设置也行。在oci.dll文件目录下新建NETWORK/ADMIN目录,把tnsnames.ora放在这里即可。把绿色版客户端目录直接复制在plsql选项卡里也就可以不需要配在ORACLE_HOME了。
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK TNS_ADMIN = D:/PLSQL/instantclinet_11_2
ORACLE_HOME= D:/PLSQL/instantclinet_11_2
好了,这这时候终于在32位的驱动里建立了oracle连接
四)12.2驱动 plsql 登陆时需要VC++2003运行环境
折腾好了,要登陆plsql 我的版本是7.发现报错。msvc120.dll的错误。百度搜了下缺少VC2003运行环境,安装后解决。另外PLSQL11已经支持64位客户端了。
五)获取后的数据中文乱码
在aspstudio里没有问题,但所在iis里就是乱码查看十六进制后中文都是3F。这个捣鼓了我好久,修改NLS_LANG,在ASP里现实声明CODE。都没有用。后来想起来配在了oracle驱动后还没有重起服务器,重起解决
response.CodePage=65001 Response.Charset="UTF-8"