环境说明:Windows_server_2008_r2 64位
oracle数据库 11.2 64位
iis服务器为windows自带
plsql32位
问题一:Oracle监听器服务无法启动,即重启后停止
弹出警告窗口:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。
处理方式:
1、查看oracle的listener.ora文件
根据网上资料,查看oracle安装目录下:app\Administrator\product\11.2.0\dbhome_1\BIN\NETWORK\ADMIN的listener.ora文件,需要更改host的ip。默认安装环境下发现自己的文件是指定主机名称的,所以不用改。注意可指定自己的ip,也可以是127.0.0.1。但不能是localhost(由于问题不在这里,所以未验证)。
2、更改注册表
开始-->运行REGEDIT -->进入注册表找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleXXXTNSListener。找到ImagePath关键值,如果没有,则新建一个名为ImagePath的可扩充字符串值,编辑字符串的数值数据为:Oracle安装路径/BIN/TNSLSNR 。发现自己的配置是正确的。另找他路。
3、重新配置监听器
找到配置移植工具Net ConfigurationAssistant,重新配置监听器。
4、环境变量
配置环境变量oracle_home =D:\app\Administrator\product\11.2.0\dbhome_1\BIN。重启监听服务ok
自我原因分析:综上,主要原因就是在配置环境变量上,客户端和服务端的安装没有区分清楚。在安装完oracle数据库后,将instantclient_11_2.rar(32位)解压到服务器上,并将“TNS_ADMIN”,和“oracle_home”变量都全部指向instantclient_11_2解压文件夹路径了,并将path路径下添加了%oracle_home%,instantclient_11_2加入tnsnames.ora文件,其实这些都是客户端的配置。
总结:oracle监听服务会根据oracle_home环境变量去查找启动文件。
问题二、plsql无法连接数据库
由于问题一的环境变量修改,导致plsql启动有问题。plsql由于是32位要连接64位数据库,结果报错。
处理方式:
1、指定OCI库
启动plsql,设置PLSQL Developer。在工具-首选项,连接,OCI库输入instantclient_11_2的文件路径,指定到oci.dll文件。如我的是C:\instantclient_11_2\oci.dll。
2、plsql其他设置
“TNS_ADMIN”环境变量,指向instantclient_11_2文件夹,并将服务器目录下的tnsnames.ora文件加入instantclient_11_2。解决plsql中文乱码问题,设置环境变量NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
至此,Oracle数据库和plsql配置ok!
问题三、IIS管理器设置添加网站BadImageFormatException
问题说明:
由于程序需要启用32位应用程序,so需要在连接池高级设置中设置启用32位应用程序为true。那么问题就来了。
错误日志:
System.InvalidOperationException:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。--->System.BadImageFormatException: 试图加载格式不正确的程序。
解决方式:
在path路径后添加路径,指定到instantclient_11_2文件夹。也就是说现在path中既有32位的组件instantclient_11_2下的文件,也有64位的组件%oracle_home%所指定的文件。那么问题来了,当把32位组件放在64位组件前(即%oracle_home%在path的后面),网站连接依旧有问题,把32位组件放后面,就ok了。ps:对path修改可能需要重启服务器才能生效。
其他问题:网站访问文件夹权限问题
由于服务器只有一个c盘,因此有很多文件夹访问权限的问题
解决方式:设置文件夹(包括instantclient_11_2文件夹)添加authenticated users读取和执行权限。
问题四、imp/exp备份问题
问题说明:imp数据库导入,出现少表的情况。
解决方式:根据提示,创建与之相应的表空间。