在虚拟机中安装了oracle数据库以后,在虚拟机中可以正常访问数据库,但是在主机中就连接不上。
主要过程如下:
安装虚拟机
设置共享文件夹:
删除快照:
2.安装oracle数据库:安装文件路径: E:\迅雷下载\OracleXE112_Win64.zip
安装完成以后,用navicat连接数据库,出现报错(具体内容忘记了),然后设置环境变量(ORACLE_HOME=D:\oracle\app\oracle\product\11.2.0\server),然后再path变量后添加 %ORACLEHOME%/bin, 事实上在打开path变量的时候就已经看到了一直指向bin路径的变量值,所以,上述设置(新增ORACLE_HOME变量)应该不是必须的,安装程序已经自动在path里面添加bin目录了。
用navicat连接数据库(system/123Abcde),刚开始连接失败,打开navicat的“工具”-》“选项”-》“oci”,在其中制定navicat的oci.dll文件的路径,然后填写连接属性,就连接成功了。
3.从主机连接虚拟机
从主机连接虚拟机的时候,提示错误:“no TNSListener”,主要解决过程如下:
在主机中用ipconfig -all得到虚拟机的ip地址(192.168.199.1),然后ping了以后,是通的,就以为虚拟机的ip就是这个了。
在虚拟机中找到oracle的安装目录下的listener.ora文件,将其中的计算机名改为刚刚得出的ip地址。
右击计算机,进入管理-》服务和应用程序-》服务,重启其中的listener和service服务,但是一直提示listener启动失败,并且与启动顺序无关。网上搜索以后,进入cmd窗口,进入到“D:\oracle\app\oracle\product\11.2.0\server\bin”目录下,输入“lsnrctl start”,执行,看错误输出,发现是目标主机不存在,于是cmd-ipconfig -all查询,发现虚拟机的ip地址是192.168.199.128,于是将listener.ora文件中的IP地址改为新的地址,然后重新执行“lsnrctl start”,启动成功。
在主机中,将连接属性修改为相应的ip地址,也连接成功。
综上所述,主要的问题在于虚拟机的地址判断不正确。