开启1521端口监听_解决Oracle服务端1521端口无法telnet,服务名未开启监听问题

场景: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服务了


版权声明:本文为weixin_33127399原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。