Spring Boot本地开发使用Testcontainers的Oracle-xe作为数据库问题咨询
本地开发环境使用Testcontainers Oracle XE的落地实现方案
完全可落地,可按照以下逻辑调整配置:
- 脱离Spring Boot Test的Testcontainers生命周期绑定,单独编写仅在
developprofile生效的配置类,使用@Configuration+@Profile("develop")注解标注,手动声明OracleContainer的Bean实例 - 开启Testcontainers复用能力:首先在本地用户根目录下的
.testcontainers.properties配置文件中添加testcontainers.reuse.enable=true,之后在OracleContainer实例初始化时调用.withReuse(true)方法,应用重启时会自动复用正在运行的容器实例,不会重复创建销毁 - 如需数据持久化存储,可给容器添加本地目录挂载,调用
.withFileSystemBind("本地自定义存储路径", "/opt/oracle/oradata"),即使容器被删除,下次启动挂载同一目录即可恢复原有数据 - 开发场景下无需主动调用容器的stop方法,容器会在后台持续运行,供本地应用调用
表空间权限问题解决方案
报错原因是你创建的PM3用户没有分配SYSTEM表空间的使用配额,且Oracle不建议普通业务用户使用SYSTEM表空间存储业务数据,调整初始化脚本即可:
-- 创建用户时指定默认业务表空间为USERS,临时表空间为TEMP CREATE USER PM3 IDENTIFIED by PM3 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; -- 授予用户基础连接、资源操作权限 GRANT CONNECT, RESOURCE TO PM3; -- 授予用户USERS表空间的使用配额,可根据需要调整为固定大小如QUOTA 500M ON USERS ALTER USER PM3 QUOTA UNLIMITED ON USERS; CREATE TABLE PM3.JOBS ( JOB_ID NUMBER(3) NOT NULL, CUSTOMER_ID NUMBER(3) NOT NULL, DESCRIPTION VARCHAR(200), constraint PK_JOB_ID primary key (JOB_ID) );
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

