最近刚到公司,因为公司用的是navicat,所以自己尝试搭建一下连接Oracle数据库的环境,过程中出现很多错误,特整理下来分享一下。
第一个错误:Cannot load OCI DLL 87,如图1所示
图1原因:Oracle需要装client才能让第三方工具通过OCI(Oracle Call Interface)连接
解决办法:
1.去oracle官网下载Instantcliet-basic-windows.x64,地址为:http://www.oracle.com/technetwork/topics/winx64soft-089540.html(我自己的是64位的,需要32为的可以下载相应的32位的)。如图2所示
图22.解压到合适的目录下,不要解压到navicat的安装目录下,(自己试过不可以)如图3所示
图33.Navicat——>工具——>选项——>其他——>OCI
4.将OCI的地址改为刚解压的目录下的oci.dll。如图4所示
图4最后,重启navicat,重启服务,连接数据库。
第二个错误:ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
这个错误原因有两个:
①:Oracle中没有正确配置tnsnames.ora文件
解决办法:将HOST =localhost改为HOST=“本机IP地址”。如图5所示
图5②服务器端的监听里未注册服务
命令行中输入:lsnrctl status。看有没有监听服务,如果没有在listener.ora文件中加入
SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=orcl) (SID_NAME=orcl) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) (PRESPAWN_MAX=20) (PRESPAWN_LIST= (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1)) ) ) )
然后,命令行输入lsnrctl stop停止监听服务,再输入Isnrctl start重启监听。
最后连接数据库。
第三个错误:no listener。如图6所示
图6首先查看自己的监听服务是否打开,如果是打开状态,检查自己在连接的过程中参数是否有误,尤其是主机名或IP地址和服务名或SID,前者写自己的IP地址,不要写localhost,后者通过命令行查看自己的服务名或SID是什么,一般默认为ORCL,但配置过的会不一样,就需要通过命令行查看。
命令行查看自己的服务名或SID。如图7所示
图7我这里有三个服务,分别是CLRExtProc、orcl.166.88.9、orclXDB.166.88.9我在配置listener.ora和tnsnames.ora的时候都选择的是orcl.166.88.9。如图8/9/10所示
图8 图9 图10修改成统一的,连接数据库,连接成功.如图11所示
图11
网友评论