使用账号密码连接Oracle数据库遇localhost 1521无监听错误的解决方法
Oracle数据库连接错误:localhost端口1521无监听程序解决办法
检查Oracle监听服务状态
- Windows:按
Win+R输入services.msc打开服务列表,找到名称含TNSListener的Oracle服务(比如OracleOraDB19Home1TNSListener),查看是否处于“正在运行”状态。未启动则右键点击“启动”。 - Linux/macOS:终端执行
lsnrctl status查看监听状态,若提示异常,执行lsnrctl start启动监听服务。
- Windows:按
核对监听配置文件
listener.ora- 找到Oracle安装目录下的
ORACLE_HOME/network/admin/listener.ora文件 - 确认配置中监听端口为1521、主机指向localhost(或正确主机名),示例配置如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) - 修改配置后需重启监听:Windows在服务中重启,Linux/macOS执行
lsnrctl stop再lsnrctl start。
- 找到Oracle安装目录下的
排查端口1521占用情况
- Windows:命令提示符执行
netstat -ano | findstr :1521,若有结果,查看对应PID的进程,若非Oracle监听进程,可结束该进程(需管理员权限),或修改Oracle监听端口。 - Linux/macOS:终端执行
lsof -i :1521或netstat -tulpn | grep 1521,检查占用进程并处理。
- Windows:命令提示符执行
验证
tnsnames.ora配置(使用TNS连接时)- 同样在
ORACLE_HOME/network/admin目录找到tnsnames.ora,确保连接描述符的主机、端口、服务名正确,示例:ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) - 服务名可通过登录数据库执行
select sys_context('userenv','service_name') from dual;查询。
- 同样在
测试连接
- 用SQL*Plus测试:
sqlplus 用户名/密码@localhost:1521/服务名,替换为实际信息,能成功登录则问题解决。
- 用SQL*Plus测试:
内容的提问来源于stack exchange,提问作者Debesh Pradhan




