如何获取Docker中Oracle Database 21c官方镜像的默认密码?
解决Oracle 21c Docker镜像密码问题及报错处理
先处理setPassword.sh执行报错问题
出现ORA-01109(数据库未打开)、ORA-65011(可插拔数据库ORCLPDB1不存在)的核心原因是容器启动后数据库还未完成初始化。Oracle 21c企业版镜像的初始化过程需要几分钟到十几分钟(取决于主机性能),此时数据库实例和PDB都未就绪,直接执行密码修改脚本必然报错。
解决步骤:
- 等待初始化完成:执行
docker logs -f oracle-db实时追踪日志,直到出现DATABASE IS READY TO USE!的提示,或者看到包含默认密码的输出行,说明初始化完成。 - 若仍有问题,手动检查并修复PDB状态:
- 进入容器SQLPlus:
docker exec -it oracle-db sqlplus / as sysdba - 检查数据库状态:
select open_mode from v$database;,确认结果为READ WRITE - 检查PDB状态:
select name, open_mode from v$pdbs;,若ORCLPDB1状态不是READ WRITE,执行alter pluggable database ORCLPDB1 open; - 退出SQLPlus后重新执行
docker exec oracle-db ./setPassword.sh 12345678即可。
- 进入容器SQLPlus:
查找Oracle 21c Docker镜像的默认密码
官方镜像的默认密码是初始化完成后随机生成并输出到容器日志的,具体获取方式:
- 直接查看容器日志:
docker logs oracle-db,搜索关键字(如SYS、password),会找到类似以下的行:
The default password for SYS, SYSTEM and PDBADMIN is <随机字符串>.
- 用过滤命令快速定位:
docker logs oracle-db | grep -i "password"
额外优化建议
启动容器时直接通过环境变量指定密码,避免后续操作:
docker run -d --name oracle-db -e ORACLE_PASSWORD=12345678 container-registry.oracle.com/database/enterprise:21.3.0.0
这样容器初始化时会直接将SYS、SYSTEM、PDBADMIN的密码设为指定值,无需再执行setPassword.sh。
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

