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

Docker中自动执行Oracle SQL脚本失败及容器配置异常求助

问题排查与解决方案

一、解决"Database is not configured"报错

这个问题源于旧容器的数据卷残留了不完整的配置信息,导致镜像初始化流程异常,处理步骤如下:

  • 彻底清理旧容器:
    docker stop oracle-xe && docker rm oracle-xe
    
  • 清理未使用的数据卷(彻底清除Oracle配置残留):
    docker volume prune -f
    
  • 重新拉取镜像(可选,避免镜像文件损坏):
    docker pull jaspeen/oracle-xe-11g
    
  • 启动容器时不要修改默认启动命令,让镜像自动完成配置流程:
    docker run -d --name oracle-xe -p 1521:1521 jaspeen/oracle-xe-11g
    

二、解决setup.sql未执行的问题

jaspeen/oracle-xe-11g镜像支持将初始化脚本挂载到/docker-entrypoint-initdb.d/目录自动执行,需确保以下几点:

1. 修正setup.sql内容

脚本必须先以SYSDBA身份连接才能创建用户,示例如下:

-- 以sys用户登录(默认密码oracle)
CONNECT sys/oracle AS SYSDBA;

-- 创建open_dn用户并授权
CREATE USER open_dn IDENTIFIED BY your_password;
GRANT CONNECT, RESOURCE, CREATE SESSION TO open_dn;

-- 切换到open_dn用户创建表和插入数据
CONNECT open_dn/your_password;

CREATE TABLE your_table (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(50)
);

INSERT INTO your_table VALUES (1, 'test_data');
COMMIT;

2. 正确挂载脚本启动容器

启动时将本地脚本挂载到镜像指定目录:

docker run -d --name oracle-xe \
  -v $(pwd)/setup.sql:/docker-entrypoint-initdb.d/setup.sql:ro \
  -p 1521:1521 \
  jaspeen/oracle-xe-11g

3. 验证脚本执行状态

查看容器日志确认脚本是否执行:

docker logs -f oracle-xe

搜索日志中是否有Executing /docker-entrypoint-initdb.d/setup.sql字样,若有错误信息(比如语法错误、密码不匹配),根据提示修正脚本或参数。

4. 排查脚本权限问题

若日志中无脚本执行记录,进入容器检查脚本权限:

docker exec -it oracle-xe bash
ls -l /docker-entrypoint-initdb.d/setup.sql

确保脚本权限为644或可读,若权限不足,可先修改本地脚本权限再挂载:

chmod 644 setup.sql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:45