环境:
操作系统:WINDOWS7 64位
数据库版本:12.1.0
PLSQL版本:随意
ORACLE_HOME:D:\oracle\product\12.1.0\dbhome_1 ,根据实际安装情况调整就行;
问题:PLSQL无法连接数据库,PLSQL登录界面中数据库无法自动带出来,手动输入用户名、密码、数据库后,系统会提示:
Initialization error
Could not initialize
"xxxxxx\oci.dll"
OCIDLL forced to
"xxxxxx\oci.dll"
returned 0
原因:32位的PLSQL,无法使用64位系统的OCI.DLL动态连接库
解决办法:
1、去官网下载对应版本的Oracle Instant Client;12.1的是:instantclient-basic-nt-12.1.0.2.0.zip;不要下载错了,比如下载成“instantclient-basic-windows.x64-12.1.0.2.0.zip”就不行;
2、将instantclient-basic-nt-12.1.0.2.0.zip解压到目录:D:\oracle\instantclient_12_1 (此目录可以改的);
3、在D:\oracle\instantclient_12_1目录下创建文件夹NETWORK;
4、管理员进入CMD;
5、输入:mklink /d D:\oracle\instantclient_12_1/NEWWORK/ADMIN D:\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN这样做的好处是以后不用维护两套tnsnames.ora,按Oracle原生态方式添加服务命名就行;
6、进入PL/SQL,首次进入点击“CANCEL”,在主界面依次进入:Tools -> Perferences ;
7、设置Oracle_Home(empty is autodetect):D:\oracle\instantclient_12_1 ;
8、设置OCI library(empty is autodetect):D:\oracle\instantclient_12_1\oci.dll;
9、点击OK,保存设置;
10、重启PL/SQL,搞定!