Navicat Premium连接虚拟机中的Oracle数据库

  由于自己电脑上无法安装Oracle11g,几经折腾始终无果。为了完成一个项目oracle还是要使用的,怎么办呢?退而求其次,找到了以前某培训机构的Oracle视频看了一下,决定采用虚拟机中安装oracle10g + 主机使用Navicat访问这种解决方案。在参考了网络上众多大神的帖子之后,终于成功安装,现在发帖子总结一下。

1.虚拟机选择

  在虚拟机中进行安装时,要选择一个合适的虚拟机。这样可以大大的减少我们时间,我们的目的是为了解决问题,而不是标新立异。根据网上的资料和我个人的成功经验。我推荐使用Virtual Box这个虚拟机,下面说一下理由。我使用过Vmware 10这个版本装过WinXp最后发现使用host-only这个模式无法进行主机和虚拟机进行通信,这让我很郁闷。
  无奈之下参考前人的成功经验,使用Virtual Box进行安装配置host-only模式后,最后成功安装,主机和虚拟机之间通过ping 命令可以ping通。
Navicat Premium连接虚拟机中的Oracle数据库

Navicat Premium连接虚拟机中的Oracle数据库
记住这个虚拟机ip,我们在主机进行ping时需要测试使用。在设置完host-only模式之后,还有一点需要注意就是要关闭虚拟机的防火墙。
Navicat Premium连接虚拟机中的Oracle数据库
在主机对虚拟机ping 192.168.56.101,测试是否通过。我们检查一下是否有丢包现象发生。我的测试结果是没有丢包,测试通过。
Navicat Premium连接虚拟机中的Oracle数据库

2.Oracle的配置

  安装完虚拟机以后,需要安装oracle并且配置两个文件,listener和tnsname。具体文件的位置参考下图。
  Navicat Premium连接虚拟机中的Oracle数据库
  这两个文件需要安装下图进行配置。需要修改listener和tnsname中host的ip,这个ip地址就是我们上面见到的192.168.56.101这个ip地址。这两个文件配置的截图如下。
  Navicat Premium连接虚拟机中的Oracle数据库
Navicat Premium连接虚拟机中的Oracle数据库
  这样oracle的配置就完成了,下面说一下如果不配置会导致什么问题。我当初没有配置这两个文件,最后导致在主机用cmd访问sqlplus时提示找不到。我当初就奇怪了,我都是按照正常的文档配置的,怎么就找不到了。后来参考了博客《Navicat Premium连接虚拟机中的Oracle数据库-总结 》我自己尝试改一下虚拟机中的Oracle网络配置,结果测试通过,验证了我的猜想。

3.Navicat Premium的配置

  解决了虚拟机和主机通信以及Oracle的远程调用两大问题之后,就设计第三个问题就是使用Navicat Premium访问Oracle instance Client,再由Oracle instance Client访问Oracle服务器。这样一来整个流程就都通了。上面还有一个Oracle instance Client的问题没有解决,我们先来解决这个问题,由于这个问题很简单只是下载一个软件然后在环境变量中配置一下我就合并在一起进行说明。下面给出我安装成功的软件,以及软件的配置截图。
  我使用的软件是从CSDN上下载的,唯一的缺点就是需要积分,如果大家感觉有问题,也可以从其他渠道下载,步骤相同。我的系统是64位的,我下载的是64位的版本,大家根据自己的系统自行选择。Oracle 11g 客户端 绿色版(64位)有了下载地址之后,下面给出配置的截图。我将下载的Oracle 11g 客户端放在了C盘(虽然安装的是Oracle10g版本,但是使用这个客户端没有问题)。
  Navicat Premium连接虚拟机中的Oracle数据库
  解压完成之后,再配置一下环境变量就行了。见下图。
  Navicat Premium连接虚拟机中的Oracle数据库
  到目前为止,Oracle客户端的问题就解决了。就剩下最后一个问题,那就是用Navicat premium访问Oracle客户端。如果要访问Oracle的客户端就需要修改一下Navicat premium安装目录下的instanceClient10_2文件夹下面的文件,需要替换一个oci.dll文件,我怕出现问题备份了一个源文件。再添加orannzsbb11.dll,oraocci11.dll,oraociei11.dll这三个文件。这些文件的来源从上面安装好的Oracle 11g Client安装文件中复制过来拷贝到instanceClient10_这个文件夹中。具体见下图。
  Navicat Premium连接虚拟机中的Oracle数据库弄完这些准备工作以后,就剩下最后一步了,在Navicat Premium软件中设置一下就ok了。打开Navicat Premium软件,工具——>选项——>OCI。设置一下OCI Library和SQL Plus两个文件的目录,具体见下图。
  Navicat Premium连接虚拟机中的Oracle数据库
 其中第一个OCI Library选择已经替换过的上图中Navicat premium安装目录下的instanceClient10_2文件夹下面的文件OCI.dll文件。SQL Plus则为Oracle instance Client中的sqlplus.exe。替换完成之后,点击确定。重新启动Navicat premium进行测试是否可以成功连接虚拟机种Oracle 10g。下面给出测试成功的结果。
 Navicat Premium连接虚拟机中的Oracle数据库
  如果上面的方法仍然不能解决,那么应该注意一下Navicat Premium的版本是32位的还是64位的,相应的Oracle instance Client应该选择应该相应型号的实例。我自己安装的是Navicat Premium 11.0.7(X86)这个版本,我将32位的instantclient_12_1直接拷贝到C:\Program Files (x86)\PremiumSoft\Navicat Premium这个目录,并且在工具—->选项—->OCI中配置一下OCI,我测试了也是可以的。

4.总结

  经过了主机和虚拟机通信、oracle服务器和oracle客户端通信、navicat和Oracle客户端通信这三个步骤我们就可以完成通过Navicat界面完成对于oracle的操作,感觉跟MVC模式挺像的。Navicat属于视图层,oracle客户端属于服务层,oracle服务器数据数据层,主机和虚拟机通信感觉像IO流操作。在此也感谢以前大神的总结,我在此借花献佛完成整个过程的整理。

参考文章
http://bebettergy.blog.163.com/blog/static/230977082201432043049557/
http://blog.csdn.net/qq_27966627/article/details/50512096