开发环境变成win10后,在Oracle数据库的权限与兼容性上产生了诸多问题,在此总结一下:
1.关于Oracle数据库服务端与客户端的区别:
-
服务端是指服务器端,安装后文件夹名称为OraDb11g_home1,可以建立、维护、管理数据库等。服务器端整体比较大,包含oracle的全部功能。
-
客户端从字面意思来看是给客户用的,安装后文件夹名称为OraClient11g_home1,配置好客户端的机器可以通过客户端程序访问服务器上的数据。可以增、删、改、查。客户端软件比较小,里面仅包含Oracle的基本运行环境。
所以如果只需要访问某一数据库,而不需要去建立维护,只安装客户端即可。同样,安装了服务端的机器就没必要安装客户端了。
2.关于Oracle数据库与pl/sql工具的配置问题:
plsql只能用来连接Oracle数据库,若要使用plsql访问远程数据库,则必须在本地部署Oracle客户端(也可以是服务端,如不需要从本地建立、维护数据库,则只需安装更轻量化的client版本)。注意:plsql必须与Oracle的版本一致,即32位的Oracle必须安装32或64位的plsql,不能64位的Oracle安装32位的plsql。
当访问远程客户端时,需要先配置服务。
- 打开Net Configuration Assistant 或 Net Manager,添加新的服务。前者为“本地Net服务名配置”,后者为点击服务命名后点击绿色的加号。
-
输入服务名称。(任意不重复的英文名称)
-
选择网络协议,一般为TCP协议。
-
输入主机名,即服务器端口号。
-
进行连接测试。(用户名与口令与服务器端数据库管理员联系)
-
测试完成后建立连接服务。
完成服务配置后,plsql便可正常访问远程数据库。
3.“ORA-12638:身份证明检索失败”的解决方案
- 打开安装目录 D:\app\ben\product\11.1.0\client_1\network\admin,找到sqlnet.ora。
- 在里面找到SQLNET.AUTHENTICATION_SERVICES= (NTS),将括号内的NTS修改为NONE。
若问题没有解决,打开Net Manager,点击“概要文件”,选择“Oracle高级安全性”,将所选方法中的NTS,通过“<”符号进行关闭,关闭Net Manager,保存配置。
4.出现“System.Data.OracleClient需要Oracle客户端软件version8.1.7或更高版本”问题的解决方案
在Web端进行数据库访问时,后端代码出现这个错误。经排查后发现是win10系统更加严格的权限管理导致,Web服务器没有访问本地Oracle数据库文件夹的权限。
解决方案:
打开Oracle数据库的安装目录,在最上级目录处右键属性,点击“安全-编辑-添加-高级-立即查找”,找到NETWORK SERVICE,点击确定,在编辑界面给予NETWORK SERVICE “完全控制”权限。
需要注意的是:只修改最上级目录不一定会应用到子文件夹及子应用,需要检查一下,确保NETWORK SERVICE对所有Oracle数据库文件有控制权限。
5."尝试加载Oracle客户端时引发BadImageFormatException"的解决方案
出现此问题一般是因为Web服务器与Oracle客户端不兼容。
若本地安装的Oracle 32位客户端,IIS在64位环境下,便会出现此错误。
解决方法:
打开IIS管理器,点击应用程序池,在程序处右键,选择高级设置。将“启用32位应用程序”修改为True。
若本地安装的Oracle 64位客户端,IIS在32位环境下,也会出现此错误。
解决方法:
- 方案一:通过修改注册表使vs调用x64版IIS EXPRESS。注册表编辑命令regedit,找到\HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\WebProjects,修改Use64BitllSExpres值为1,重启vs使其生效(本例中vs为2015)
- 方案二:修改网站属性,使用本地IIS代替IIS EXPRESS,需管理员运行vs。
这种情况强烈建议安装32位的Oracle,一劳永逸,要什么自行车。
总结
在Web端访问数据库时出现问题,软件兼容性或权限层面的可能性要大于代码层面,要根据报错内容具体分析。