这是因为oci.dll版本不对。
1、百度instantclient,在官网上下载即可。
2、选择好你的系统版本,点击进入后同意协议进行下载。
3、下载好文件后,将文件解压到你Navicat安装目录下。
4、打开Navicat软件。如图点击菜单栏上的‘工具’-->'选项'。
5、选择其他菜单栏下的OCI配置instantclient版本。
6、找到你把instantclient解压的目录,找到oci.dll。点击确认。
选中文件后,点击确认。重启Navicat程序即可。
第一种、解决方案如下:
listener.ora是服务器端的配置oracle的文件。
后来将listener.ora的这一行注释掉,就行了,, (PROGRAM = extproc) 。
修改为:
SID_LIST_LISTENER = 。
(SID_LIST =
(SID_DESC =
(SID_NAME = prod) 。
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) 。
# (PROGRAM = extproc) 。
)
)
LISTENER =
(DESCRIPTION_LIST = 。
(DESCRIPTION = 。
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1522)) 。
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) 。
)
)
第二种、解决方案如下:
参考:https://forums.oracle.com/forums/message.jspa?messageID=693607 。
整理如下:
客户端的配置文件sqlnet.ora中配置如下:
将#SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉,改成如下即可!
如下:
SQLNET.AUTHENTICATION_SERVICES= (NONE) 。
同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$/NETWORK/ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。
第三种、解决方案如下:
如果你以上使用的是plsql developer工具或者是toad工具,应该以上的操作就绝对可以解决你的问题,
但是如果你使用的是 navicat工具,以上怕是还不能解决你的问题。具体的如果在navicat工具上使用就是如下的问题:
Oracle基本是默认安装,安装过程没出现过任何异常 。
Oracle开启了两个服务:OracleServiceORCL和OracleOraDb11g_home1TNSListener 。
Navicat一直都连接不上本地的Oracle 。
网上搜了一大堆资料,大都是改那3个配置文件的 。
最终还是没能解决这个问题
最终的问题是:
Navicat主机那里如果填本机IP地址(192.168.18.8),错误代码是:ORA-12541:TNS:no listener 。
如果填localhost,错误代码是:ORA-28547:connection to server failed,probable Oracle Net admin error 。
tnsping localhost 是通的,tnsping 192.168.18.8 则出错 TNS-12541: TNS: 无监听程序 。
解决的方案是:
oci.dll的版本不对 从 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html 下载client里面很多,根据你的版本来下,我下载的是instantclient_11_2。
在navicat的 工具-选项-其他-OCI ,选择刚下的client中的 oci.dll 。
设置环境变量:
1)在环境变量PATH中开头增加C:\Instantclient10_2; 。
2)增加用户环境变量SQLPATH,值为C:\Instantclient10_2 。
3)增加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.UTF8 。
选择 Basic 连接,就大概能连接上了 。
以上的操作可以通过如下进行排查:
1、首先确认你的数据库已经启动了,可以用net start OracleServiceORCL 。
2、其次确认你的侦听启动了否,用lsnrctl status查看,如果没有启动,用lsnrctl start启动。
3、以上启动后,直接打开sqlplus,输入用户名密码,无需输入服务名,直接登录即可。
开始是出现一个错误提示对话框:
ORA-28547:连接服务器失败,可能是Net8管理错误。
忽略这个错误后又出现一个错误提示对话框:
ORA-24324:未初始化服务句柄。
忽略这个错误后又接连出现两个错误:
ORA-01041: 内部错误,hostdef扩展名不存在。
ORA-01034: ORACE not available。
最后出现的一个错误提示框是:
由于一下错误,Enterprise Manager配置失败,‘job queue_process’必须大于等于1…..。
这时数据库创建失败,在oradata文件并没有发现预想的数据文件。同事向我请教。以前我也遇到这个问题,于是到网上搜索,找到了一条解决之道:
修改oracle的网络配置文件,具体做法是:在oracle安装目录下搜索sqlnet.ora文件,一般在$/NETWORK/ADMIN目录下,
用记事本打开把文件中的一行:
SQLNET_AUTHENTICATION_SERVICES= (NTS)。
修改为:
SQLNET_AUTHENTICATION_SERVICES= (NONE)。
同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$/NETWORK/ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。
修改这两个文件后,顺利创建数据库。
Navicat连接oracle数据库数据库需要设置oci.dll。
1、设置oci.dll,下载instantclient,解压;
2、设置oci后,从起Navicat,再打开,新建连接;
点击连接测试,要保证连接的上数据库;
最重要的一点,需要关注报错信息,如果是ORA-XXX错误,可以在服务器端执行oerr ORA XXX命令查看报错信息,以及建议的处理方案。