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

Oracle 23ai Free容器启动失败:设密码报su -t错误,不设提示密码为空

解决Oracle 23ai Free容器启动失败的问题

问题原因分析

  1. 设置ORACLE_PASSWORD时出现/bin/su: invalid option -- 't'错误:
    密码中的!属于shell特殊字符,会被bash当作历史命令扩展符解析,导致容器启动脚本参数处理出错。
  2. 不设置ORACLE_PASSWORD时容器卡住:
    Oracle 23ai Free容器启动必须初始化密码,未通过环境变量提供时会进入交互式输入流程,后台启动(-d参数)下无法响应输入,导致容器无法正常启动。

正确启动方法

方式1:正确处理密码中的特殊字符

用单引号包裹密码(单引号在shell中不会解析特殊字符),命令如下:

docker run -d --privileged --name oracle-db \
  -e ORACLE_PASSWORD='MyPass123!' \
  -v /data/oracle/data:/opt/oracle/oradata \
  -e INIT_SGA_SIZE=800 -e INIT_PGA_SIZE=400 \
  container-registry.oracle.com/database/free:latest

或者对特殊字符进行转义:

docker run -d --privileged --name oracle-db \
  -e ORACLE_PASSWORD="MyPass123\!" \
  -v /data/oracle/data:/opt/oracle/oradata \
  -e INIT_SGA_SIZE=800 -e INIT_PGA_SIZE=400 \
  container-registry.oracle.com/database/free:latest

方式2:更换不含shell特殊字符的密码

选择不触发shell解析的特殊字符(如#、@),只要满足Oracle密码复杂度要求(至少8位,包含大写字母、小写字母、数字、特殊字符中的三种以上)即可,示例命令:

docker run -d --privileged --name oracle-db \
  -e ORACLE_PASSWORD="MyPass123#" \
  -v /data/oracle/data:/opt/oracle/oradata \
  -e INIT_SGA_SIZE=800 -e INIT_PGA_SIZE=400 \
  container-registry.oracle.com/database/free:latest

额外排查步骤

  • 确保宿主机挂载目录权限正确:
    mkdir -p /data/oracle/data && chmod 777 /data/oracle/data
    
  • 清理之前失败的容器和残留数据(如果有):
    docker stop oracle-db && docker rm oracle-db
    rm -rf /data/oracle/data/*
    
    执行完成后再重新启动容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:05:10