Oracle 12.x Docker容器启动卡在untarDB.log问题求助
Oracle 12.x Docker容器启动卡在
untarDB.log的解决方法 问题描述
启动Oracle 12.1.0.2/12.2.0.1版本Docker容器时,初始化流程卡在log file is : /home/oracle/setup/log/untarDB.log,无法完成数据库创建;但相同操作步骤可正常启动Oracle 19.3.0.0容器。
操作步骤:
- 登录Oracle镜像仓库:
docker login container-registry.oracle.com/database/enterprise:12.2.0.1 - 拉取镜像:
docker pull container-registry.oracle.com/database/enterprise:12.2.0.1 - 启动容器命令:
docker run -d --name DockerOra122 -p 1521:1521 -p 5500:5500 -e ORACLE_CHARACTERSET=AL32UTF8 -e ORACLE_SID=GENAL32UTF8 -e ORACLE_PDB=GENAL32UTF8PDB -e ORACLE_PWD=password123 container-registry.oracle.com/database/enterprise:12.2.0.1
容器日志输出:
2023-01-09 06:50:56 Setup Oracle Database 2023-01-09 06:50:56 Oracle Database 12.2.0.1 Setup 2023-01-09 06:50:56 Mon Jan 9 05:50:56 UTC 2023 2023-01-09 06:50:56 2023-01-09 06:50:56 Check parameters ...... 2023-01-09 06:50:56 log file is : /home/oracle/setup/log/paramChk.log 2023-01-09 06:50:56 paramChk.sh is done at 0 sec 2023-01-09 06:50:56 2023-01-09 06:50:56 untar DB bits ...... 2023-01-09 06:50:56 log file is : /home/oracle/setup/log/untarDB.log
排查步骤
- 进入运行中的容器(即使卡住,容器通常仍处于运行状态):
docker exec -it DockerOra122 bash
- 查看解压日志的具体错误信息:
cat /home/oracle/setup/log/untarDB.log
解决方案
1. 增加容器内存分配
Oracle 12.x初始化阶段需要足够内存,默认容器内存限制可能不足。启动时指定内存参数:
docker run -d --name DockerOra122 -p 1521:1521 -p 5500:5500 \ -m 4g --memory-swap 8g \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -e ORACLE_SID=GENAL32UTF8 \ -e ORACLE_PDB=GENAL32UTF8PDB \ -e ORACLE_PWD=password123 \ container-registry.oracle.com/database/enterprise:12.2.0.1
建议至少分配4GB内存,内存交换设置为8GB,保证初始化资源充足。
2. 修复文件权限问题
如果untarDB.log提示权限错误,执行以下操作:
- 进入容器后切换到oracle用户:
su - oracle
- 手动执行解压脚本:
cd /home/oracle/setup && ./untarDB.sh
- 若提示权限不足,修复脚本和日志目录权限:
chmod +x /home/oracle/setup/*.sh chmod 775 /home/oracle/setup/log
3. 挂载本地目录规避权限冲突
将Oracle数据目录挂载到本地,确保目录权限正确:
mkdir -p /local/oradata chmod 777 /local/oradata docker run -d --name DockerOra122 -p 1521:1521 -p 5500:5500 \ -v /local/oradata:/opt/oracle/oradata \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -e ORACLE_SID=GENAL32UTF8 \ -e ORACLE_PDB=GENAL32UTF8PDB \ -e ORACLE_PWD=password123 \ container-registry.oracle.com/database/enterprise:12.2.0.1
4. 重新拉取镜像(排除镜像损坏)
若镜像拉取过程中出现损坏,重新拉取:
docker rmi container-registry.oracle.com/database/enterprise:12.2.0.1 docker pull container-registry.oracle.com/database/enterprise:12.2.0.1
内容的提问来源于stack exchange,提问作者walter33
相关产品推荐
相关产品推荐

