我正在使用带有苹果 M1 芯片的 MAC book,我正在使用 [Colima][1] 在 M1 芯片上运行 oracle 容器。
我需要在 oracle 容器上运行集成测试用例。我正在尝试使用 docker-compose.yaml 文件中定义的服务创建 oracle 容器。
我能够成功启动容器,但我无法从我机器上安装的 SQL Developer 工具登录。
我收到身份验证错误:
状态:失败-测试失败:ORA-01017:用户名/密码无效;登录被拒绝。
[![在此处输入图片描述][2]][2]
这个问题中令人惊讶的部分是,如果我使用以下
docker run
命令显式启动容器,则数据库登录可以使用 SQL Developer 工具正常工作,但在使用撰写文件和 docker compose up
命令运行容器时失败.
在我用来启动容器的 docker 命令下面,我可以使用用户名“SYS”和密码“secret”登录数据库。
docker run --name devdb -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=secret container-registry.oracle.com/database/express:21.3.0-xe
并且,在导致数据库登录问题的 docker-compose.yaml 文件下方。
version: '3'
services:
oracle:
image: container-registry.oracle.com/database/express:21.3.0-xe
hostname: oracle
container_name: oracle
ports:
- 1521:1521
- 5500:5500
environment:
- ORACLE_PWD:secret
volumes:
- ./scripts/startup:/opt/oracle/scripts/startup
下面是oracle服务器启动日志,可以看到数据库服务器启动成功,没有报错:
[+] Running 1/1
⠿ Container oracle Created 0.1s
Attaching to oracle
oracle | Starting Oracle Net Listener.
oracle | Oracle Net Listener started.
oracle | Starting Oracle Database instance XE.
oracle | Oracle Database instance XE started.
oracle |
oracle | The Oracle base remains unchanged with value /opt/oracle
oracle | #########################
oracle | DATABASE IS READY TO USE!
oracle | #########################
oracle |
oracle | Executing user defined scripts
oracle | /opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/startup/ddl.sql
oracle |
oracle | Table created.
oracle |
oracle |
oracle | 0 rows deleted.
oracle |
oracle |
oracle | 1 row created.
oracle |
oracle | DONE: Executing user defined scripts
oracle |
oracle | The following output is now a tail of the alert.log:
oracle | Starting background process CJQ0
oracle | 2023-04-03T19:29:19.672431+00:00
oracle | CJQ0 started with pid=63, OS id=424
oracle | Completed: ALTER DATABASE OPEN
oracle | 2023-04-03T19:29:21.170374+00:00
oracle | ===========================================================
oracle | Dumping current patch information
oracle | ===========================================================
oracle | No patches have been applied
oracle | ===========================================================
oracle | 2023-04-03T19:29:36.087762+00:00
oracle | System State dumped to trace file /opt/oracle/diag/rdbms/xe/XE/trace/XE_cjq0_424.trc
oracle | 2023-04-03T19:30:03.688697+00:00
oracle | XEPDB1(3):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P360 (3199) VALUES LESS THAN (TIMESTAMP' 2023-04-04 00:00:00')
我尝试删除主机名、容器名称和自定义启动脚本配置,但没有帮助。我还尝试使用 SYS 用户名的默认密码“CHANGE_ON_INSTALL”,但它没有用。
认证失败的原因是什么?
使用 docker-compose 命令时是否需要明确提供 tnsnames.ora 或任何其他配置?