引言:
实践是检验真理的唯一标准,勇于发现问题解决问题,才是王道。
概述:
本篇博客总结俩个关于Navicat连接oracle的问题。相信大家都用Navicat连接过oracle数据库,在这个过程中还是需要格外小心的。下面总结小编遇到的俩个问题。
内容:
问题一:请看下图:
先解释一下为什么会出现这个问题?
从问题字面理解来看是客户端不支持服务器端的字符集造成的,也就是客户端的字符集和服务器端的字符集并不匹配,一般情况下,Navicat都是连接自己的OCI,由于你想连接oracle的数据库,那么很有可能你安装的Navicat版本的OCI并不支持连接oracle需要的OCI。
第一步策略:既然你本地的Navicat版本的OCI不支持连接oracle,那么就找oracle安装目录下的OCI替换掉本地Navicat的,oracle的OCI地址一般是在安装目录的bin文件夹中,搜索一下就可以了。但是这样替换是不是太绝对了,如果我又要连mysql,那么这个有没有可能继续出现问题;所以我们何不通过替换路径的方式来解决这个问题。
具体步骤:
步骤1
点击上图3的位置,将这个路径改为oracle安装目录下的bin文件下的oci文件的路径。
步骤2:重启Navicat,连接一下试一试。若还出现这个问题,恭喜你又中了一次奖,说明你oracle安装目录的bin文件下的这个OCI也不是Navicat连接你的oracle需要的OCI,很荣幸我的运气就是这么好,按照步骤一改完之后重启Navicat,仍然是这个问题。
步骤3:若步骤一并没有起作用,那么就只能去官网上下载一个相匹配的OCI了,如何能判断是否相匹配?很不幸我没有判断,直接找到最新的下一个,因为最新的一般都会兼容之前,如果不一般出现了,那你就另寻它法吧。
问题二:上一个问题解决之后,原本以为会成功的我,再一次碰壁,遇到了另外一个问题。
还是先解释一下这个问题:监听程序当前无法识别连接描述符中请求的服务。大家觉得这个问题是什么原因导致的哪(是不是应该去考虑服务?)?
本人觉得肯定是oracle的服务出现了问题,于是上网百度一下,果然证明本人的猜想是有问题的,出现这个问题一般有俩个原因,一:你的OracleServiceORCL没有启动;二 安装Oracle时没有安装这个实例服务。其实还有第三个原因,不过这个原因一般就是小编这个智商才会范,待会再给大家介绍,让大家轻松一下。
第一个原因好解决,解决办法就是通过控制面板——》管理工具——》服务,找到这个相关的服务,设置为启动就可以了。
第二个原因解决起来相当于第一个复杂一些,如果没有这个实例服务,你需要先建立一个实例,建立实例的方法,打开dos命令窗口,输入如下命令:oradim -new -sid ORCL,如果出现无法打开windows nt服务控制管理器的错误提示,那么你就用管理员身份打开命令操作符窗口,然后输入上述命令,就可以成功建立实例,建立完实例,再通过控制面板进入服务列表,就能看到相关的服务了,把该服务启动,需要注意的是,该实例是你安装oracle时创建的实例,如果是另外的实例还需要另外的俩个服务OracleDBConsolexxxx和OracleJobSchedulerxxxx,否则仍然会出现这个问题。
最后,轻松一刻,我自己的原因:原本我建立的实例是BJPOWERNODE,然后连接数据库的时候我由于自己并不是很懂,连接的是ORCL实例,大家也看到了上面图片的错误,其实就是我连接了一个默认的实例,然而这个实例并没有相对应的服务,于是我就走远了,所幸的是也学到了很多知识。
总结:
通过上述俩个问题的解决,明白了有些问题的出现是因为我们懂的太少,而不是我们不会,例如这种服务、实例的,其实我第一次安装SQL数据库的时候就不是很明白,于是才会范低级的错误,欠下的总是会还的,我们要保持良好的心态走下去。