虚拟机无法访问宿主机oracle数据库

很久没打开本地的linux虚拟机,发现之前运行没问题的程序出问题了:连接不上oracle数据库。数据库是装在宿主机上的,在宿主机本地登录没有问题。
排查了虚拟机网络和防火墙,都没有问题。最后发现在宿主机本地127.0.0.1 1521端口是通的,但是用局域网ip+端口的方式不通。通过以下方式成功解决问题。

1.修改配置

(1)打开Windows上Oracle Net Manager应用
虚拟机无法访问宿主机oracle数据库_第1张图片
(2)配置listener
虚拟机无法访问宿主机oracle数据库_第2张图片
这里地址2配置了tcp/ip模式,其实监听ip为127.0.0.1,监听端口为1521
也就是,客户端访问数据库时,需要连接的ip端口。
(3)保存修改
虚拟机无法访问宿主机oracle数据库_第3张图片
(4)通过配置文件修改配置
lsnrctl监听器命令,lsnrctl可以调出监听器状态,这里可以看到监听器配置文件的位置:
虚拟机无法访问宿主机oracle数据库_第4张图片
通过修改配置文件,可以达到通过windows oracle net manager修改配置一样的效果。

2.重启监听器服务

(1)关闭监听器:
lsnrctl stop
虚拟机无法访问宿主机oracle数据库_第5张图片
(2)启动监听器命令为:
lsnrctl start
虚拟机无法访问宿主机oracle数据库_第6张图片
**注意:**不关闭监听器,直接执行lsnrctl stop,起不到重启的效果。

3.重启oracle网络服务

net start OracleServiceORCL
虚拟机无法访问宿主机oracle数据库_第7张图片

4.配置效果

(1)配置为127.0.0.1跟localhost是一样的效果,只有本机能通过127.0.0.1访问到数据库,通过ip地址无法访问数据库,并且1521端口不通。我一开始遇到的问题就是这么配置的;
(2)配置具体ip,可以实现通过具体ip访问数据库,可以解决我的问题;
(3)对于机器的IP是随机ip的情况,显然第二种配置无法满足要求,这时候应该配置IP为主机名。用这种方式成功又方便地解决问题。

你可能感兴趣的:(oracle,数据库,database,linux)