oracle -01017: oracle express:21.3.0-xe容器的用户名/密码错误



我使用的是带有apple M1芯片的MAC book,我使用[Colima][1]在M1芯片上运行oracle容器

我需要在oracle容器上运行集成测试用例。我试图创建oracle容器使用在docker-compose定义的服务。yaml文件。

我能够成功启动容器,但我无法从安装在我机器上的SQL Developer工具登录。

我得到认证错误:

状态:失败-测试失败:ORA-01017:无效的用户名/密码;登录否认。

[![2]][2]

这个问题中令人惊讶的部分是,如果我使用以下docker run命令显式地启动容器,那么DB登录与SQL Developer工具一起正常工作,但在使用compose文件和docker compose up命令运行容器时失败。

在我用来启动容器的docker命令下面,我可以使用用户名"SYS"登录到DB。密码"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')

我尝试删除主机名,containerName和自定义启动脚本配置,但它没有帮助。我还尝试了默认密码">CHANGE_ON_INSTALL";

是什么导致认证失败?

我需要显式地提供tnsnames吗?Ora或任何其他配置,而使用docker-compose命令?

因为我能够在运行docker run命令的容器时登录到数据库,而不提供SID名称。因此,我认为不需要为docker-compose也提供SID名称。

但是,这是登录问题背后的主要根源。我在docker-compose文件中提供了如下所述的SID名称,并且我能够使用用户名登录数据库:SYSpassword: secretandSID: XE.

请参考下面的docker撰写文件。

oracle:
image: container-registry.oracle.com/database/express:21.3.0-xe
hostname: oracle
container_name: oracle
environment:
- ORACLE_SID=XE
- ORACLE_PWD=secret
ports:
- "1521:1521"
- "5500:5500"
volumes:
- ./scripts/startup:/opt/oracle/scripts/startup

相关内容

  • 没有找到相关文章

最新更新