You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 12c企业版Docker镜像报ORA-12547:TNS丢失连接故障求助

ORA-12547 TNS丢失连接 Docker部署Oracle解决方案

该报错在Docker部署Oracle场景下的常见触发原因为宿主机内核参数不匹配、共享内存分配不足、进程/文件句柄限制过低,以及Oracle安装目录权限异常,可按照以下步骤逐一排查修复:

1 调整宿主机内核参数

编辑宿主机/etc/sysctl.conf文件,添加以下配置:

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

保存后执行sysctl -p使配置立即生效。

2 调整容器启动参数

Docker默认给容器分配的共享内存仅为64M,远低于Oracle的最低运行要求,启动容器时必须添加对应资源限制参数,参考启动命令如下:

# 12c企业版启动命令
docker run -d \
--name oracle12c \
-p 1521:1521 \
*--shm-size 2g* \
--ulimit nofile=1024:65536 \
--ulimit nproc=2047:16384 \
store/oracle/database-enterprise:12.2.0.1

# 11g XE版启动命令
docker run -d \
--name oracle11g \
-p 1521:1521 \
*--shm-size 1g* \
--ulimit nofile=1024:65536 \
--ulimit nproc=2047:16384 \
epiclabs/docker-oracle-xe-11g

--shm-size参数建议至少分配1G以上,内存充足的环境可分配4G避免后续运行报错。

3 修复容器内权限配置

进入运行中的容器,执行以下命令修复Oracle目录权限:

# 进入容器
docker exec -it 容器ID /bin/bash

# 修复目录归属和权限
chown -R oracle:oinstall $ORACLE_HOME
chmod -R 755 $ORACLE_HOME/bin
chmod 6751 $ORACLE_HOME/bin/oracle

# 切换到oracle用户重启服务
su - oracle
lsnrctl stop
lsnrctl start
sqlplus / as sysdba
startup force

4 验证连接

本地连接容器内Oracle时,注意确认对应服务名配置:

  • 12c企业版默认服务名为ORCLCDB.localdomain,默认sys密码为Oradoc_db1
  • 11g XE版默认服务名为XE,默认sys密码为oracle
    本地操作系统认证登录无需输入密码,直接执行sqlplus / as sysdba即可登录,如果仍报错,执行strace sqlplus / as sysdba查看系统调用日志即可定位具体错误原因。

内容的提问来源于stack exchange,提问作者yogithesymbian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 07:24:02