大家好,又见面了,我是你们的朋友全栈君。
场景:oracle服务安装在windows本地,oracle客户端在虚拟机中,使用虚拟机连接windows的oracle数据库。
问题1:使用虚拟机telnet我本地oracle1521端口,不通
解决思路:
关闭虚拟机linux防火墙(这个方法有点粗暴,建议在只需要修改防火墙的端口允许通过即可)
# 1:查看防火状态
systemctl status firewalld
service iptables status
# 2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
# 3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
# 4:重启防火墙
systemctl enable firewalld
service iptables restart
# 5:永久关闭后重启
chkconfig iptables on
防火墙配置规则 端口 允许的端口
# 查看已打开的端口
netstat -anp
# 添加允许的端口
firewall-cmd –add-port=1521/tcp –permanent
# 若移除端口
firewall-cmd –permanent –remove-port=1521/tcp
# 策略修改完成,请重启:
systemctl restart firewalld
添加windows防火墙对1521的入站允许规则
复制代码
问题2:使用sqlplus登录报错,ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
解决思路:关键字监听程序
查看监听服务状态
# 关闭监听服务
lsnrctl stop
# 启动监听服务
lsnrctl start
# 查看监听服务状态
lsnrctl stat
查看监听服务如果出现下列问题
复制代码
说明监听服务没有启动
去启动oracle监听服务,监听服务有两个,这里只做单监听讲,随便启动一个即可。
再通过lsnrctl stat查看监听服务,如果出现下图情况
只看到一个服务名”CLRExtProc”启动了,而我们想要的是ORCL服务名
这是需要修改listener.ora 文件
修改listener.ora 文件
文件路径,我本地的路径是:D:appniaobulashiproduct11.2.0dbhome_1NETWORKADMIN
需要添加以下红色部分代码,将服务名为ORCL添加到监听配置文件中
贴出来如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\niaobulashi\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = “EXTPROC_DLLS=ONLY:D:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll”)
)
(SID_DESC=
(SID_NAME = ORCL)
(ORACLE_HOME = D:\app\niaobulashi\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = “EXTPROC_DLLS=ONLY:D:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll”)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
)
ADR_BASE_LISTENER = D:\app\niaobulashi
复制代码
再查看监听服务状态,可以看到ORCL有了
修改tnsname.ora的HOST为本地主机名
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-NNDNCEI)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
复制代码
最后使用虚拟机就可以正常连接本地oracle服务了
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133060.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...