Docker部署Oracle 18c后SQL Developer连接报ORA-12514错误求助
解决ORA-12514: 监听程序无法识别连接描述符中请求的服务
1. 确认容器初始化完成
Oracle XE 18c容器启动后需要10-20分钟完成数据库初始化,后台运行不代表可用。通过日志确认就绪状态:
sudo docker logs -f oracle18c
等待日志输出DATABASE IS READY TO USE!后再尝试连接。
2. 核对连接服务名
你启动容器时指定了ORACLE_PDB=orcl,因此:
- 连接PDB时,服务名填
orcl - 连接CDB时,服务名填
XE
注意Oracle 12c+优先使用服务名,不要混淆SID和服务名。
3. 检查容器内监听状态
进入容器验证监听是否正常运行:
sudo docker exec -it oracle18c bash su - oracle lsnrctl status
正常输出应显示LISTENER状态为READY,且包含XE和orcl的服务注册信息。
4. 验证端口映射有效性
确认宿主机1521端口被容器占用:
sudo netstat -tulpn | grep 1521
若未看到docker-proxy相关进程,说明端口映射失败,重启容器:
sudo docker restart oracle18c
5. 修正SQL Developer连接配置
连接配置需注意:
- 连接类型:选择
Basic - 主机名:填Ubuntu虚拟机的IP(跨设备连接时)或
localhost(虚拟机内本地连接) - 端口:1521
- 服务名:
orcl(对应你设置的PDB) - 用户名:用
SYS/SYSTEM时,连接角色选SYSDBA - 密码:你设置的
password
6. 检查数据库实例与PDB状态
若监听正常但服务未注册,进入容器检查数据库状态:
sudo docker exec -it oracle18c sqlplus / as sysdba
执行以下SQL确认状态:
SELECT status FROM v$instance; SELECT name, open_mode FROM v$pdbs;
确保实例状态为OPEN,PDBORCL的OPEN_MODE为READ WRITE。若PDB未打开,执行:
ALTER PLUGGABLE DATABASE orcl OPEN; ALTER PLUGGABLE DATABASE orcl SAVE STATE;
内容的提问来源于stack exchange,提问作者Carles Sastre Pérez
相关产品推荐
相关产品推荐

