先前遇到了一系列的问题,结果把32位和64位的Oracle都装进来了。
但由于项目的dll使用的是32位的,用64位的Oracle在运行时会出现 “未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。” 这个错误。
而改用32位Oracle后,开启PLSQL时又出现了 “error while trying to retrieve text for error ORA-01804” 这个错误,导致无法连接数据库。
解决方法:
32位和64位的Oracle都装了(不知道有没有影响,实际上在后面配置环境变量时只使用到了32位的Oracle,但事实证明PLSQL连接数据库需要64位的Oracle)
关键来了,之前按照网上的方法配置环境变量,结果在项目运行时和PLSQL连接数据库时总有其中一个会出现上面说的错误。
最后,问题还是回到了环境变量上,因为项目是32位的dll,所以配置时,路径都是用的32位的Oracle,这时,项目运行没有问题,但用PLSQL连接数据库时会出现 “error while trying to retrieve text for error ORA-01804” 这个错误,我的解决方法:将 “ORACLE_HOME” 这个环境变量删除即可。
Ps:
出错原因推测:原本 “ORACLE_HOME” 的变量值为 “D:\app\Administrator\client\Administrator\product\12.1.0\client_1\network\admin” 这是指向32位Oracle的路径,导致我使用的PLSQL连接数据库时出错。而先前使用指向64位Oracle的路径时,我的PLSQL能够正常连接数据库。我猜测在删除环境变量 “ORACLE_HOME” 后,PLSQL会自动寻找合适的Oracle版本使用(同时装了64位Oracle也许是伏笔?)。
如果按上述方法PLSQL连接数据库时还是报这个错,就尝试将环境变量 “ORACLE_HOME” 的变量值改为指向64位Oracle的路径(我的是“D:\app\client\Administrator\product\12.1.0\client_1\network\admin” )。
附上我的环境变量配置:
Path: D:\app\Administrator\client\Administrator\product\12.1.0\client_1\BIN