oracle64兼容32,64bit系统下兼容oracle32bit问题

※环境

OS:windows server 2008R2 64bit.

开发工具: VS2010 (NetFv4.0)+ C# + NHibernate + OracleClient

Oracle:10.0.2 64bit server +10.0.2 32bit client

※错误现象

数据库连接失败:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务.

※解决方案:

在监听文件中加入下面红字部分:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = D:\oracle)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = D:\oracle)

(SID_NAME = ORCL)

)

)

※错误现象

C#连接ORACLE 报错“System.Data.OracleClient需有Oracle用户端软体版本8.1.7或以上版本".

※解决方案:

权限限制。Oracle安装目录,NETWORK SERVICE用户没有访问权限。

所以只要给Oracle安装目录,设置NETWORK SERVICE的访问权限即可。详细步骤如下:

1. 在 Oracle 安装目录上(如D:\Oracle10\),按鼠标右键,选择 [共享与安全],到 [安全]选项卡。

添加"NETWORK SERVICE"用户组,权限增加“修改、读取和执行”,如果不够就加上完全控制。

2. 计算机管理--用户和组--在administrator组中加上"NETWORK SERVICE"用户组。

一般介绍到此重启机器就可以了,这里涉及一些VS内部使用组件的问题,事实上有些是不行的,还需要配置下oci.dll.

3. 下载“instantclient-basic-win32-10.2.0.4”,解压后放到某个目录下。(如:C:\instantclient-basic-win32-10.2.0.4)

4. 把"C:\instantclient-basic-win32-10.2.0.4"加到环境变量PATH中。

5. 设置环境变量:TNS_ADMIN=“tnsnames.ora所在路径”,如果不行就把tnsnames.ora copy到"C:\instantclient-basic-win32-10.2.0.4"目录下。

6. 重启机器,OK。

※错误现象

PL SQL DEVELOPER在以上环境中不能用。

※解决方案

1. 按照上面3、4、5所述,做好配置。

2. 打开PLSQLDEV,在其“工具”--“首选项”中,把Oracle主目录名设为:C:\instantclient-basic-win32-10.2.0.4

3. 把“OCI库”设为:C:\instantclient-basic-win32-10.2.0.4\OCI.DLL

4. 关闭PLSQLDEV,重启,OK。

※错误现象

程序执行报ora-00911错误(无效字符)

※解决方案

1. 通常是SQL末尾加了个分号(;)所致。

2. 客户端和服务器端字符集不一致所致。

SELECT * FROM v$nls_parameters;  或

select * from nls_database_parameters 或

select userenv(‘language’) from dual;

a. 修改客户端字符集(设置环境变量)

NLS_LANG = AMERICAN_CHINA.ZHS16GBK

b. 修改客户端字符集(修改注册表)--不建议。

附:NLS_LANG 参数组成NLS_LANG参数由以下部分组成:

NLS_LANG=_.

NLS_LANG各部分含义如下:

LANGUAGE指定:

-Oracle消息使用的语言

-日期中月份和日显示

TERRITORY指定

-货币和数字格式

-地区和计算星期及日期的习惯

CHARACTERSET:

-控制客户端应用程序使用的字符集

通常设置或者等于客户端(如Windows)代码页

或者对于unicode应用设置为UTF8

在Windows上查看当前系统的代码页可以使用chcp命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值