Oracle 数据库连接时间过长的 Spring Boot

Posted

技术标签:

【中文标题】Oracle 数据库连接时间过长的 Spring Boot【英文标题】:Spring Boot with Oracle Database Connection Taking Too Long 【发布时间】:2021-10-16 04:20:59 【问题描述】:

我有一个连接到 Oracle 数据库的 Spring Boot 应用程序。每当我启动应用程序时都会建立连接:

Started KanbanApplication in 8.487 seconds (JVM running for 11.153)

不错...我可以忍受这么长时间的创业。但是当我想连接到我拥有的其他 Oracle 用户时,启动时间会急剧增加:

Started KanbanApplication in 67.124 seconds (JVM running for 68.904)

加载时间最长的部分在这两个加载区域之间:

HHH000400: Using dialect: org.hibernate.dialect.Oracle12cDialect

大约过了一分钟,终于加载完成了:

HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Initialized JPA EntityManagerFactory for persistence unit 'default'
spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
Tomcat started on port(s): 8080 (http) with context path ''
Started KanbanApplication in 67.124 seconds (JVM running for 68.904)

我希望我能给你更多关于用户连接组成的细节,但在我看来这两种模式是完全一样的。相同的表,基本上没有数据,等等。如何提高 Spring Boot 应用程序连接到 Oracle 数据库用户的速度?每次我需要重新编译我的应用程序时,我都等不及了。

【问题讨论】:

请您的 DBA 跟踪您的会话 【参考方案1】:

我猜其他用户只能访问太多对象。 Oracle 驱动程序中的许多 JDBC 元数据实现对于某些不受限制的用户来说需要相当长的时间,因为所有系统模式都会返回。我建议您限制该用户仅查看与应用程序相关的对象以加快速度。除此之外,您还可以尝试通过将hibernate.hbm2ddl.auto 属性设置为none 来禁用架构验证。

【讨论】:

【参考方案2】:

您需要使用会话创建权限来创建用户。

CREATE USER hr IDENTIFIED BY welcome1; 
ALTER USER hr DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;  
ALTER USER hr TEMPORARY TABLESPACE temp;  
GRANT CREATE SESSION, CREATE VIEW, ALTER SESSION, CREATE SEQUENCE TO hr;  
GRANT CREATE SYNONYM, CREATE DATABASE LINK, RESOURCE, UNLIMITED TABLESPACE TO hr;

请参考此链接创建用户: 我能够解决问题。

https://www.oracle.com/technical-resources/articles/cloud/load-db-container-sql-developer.html

【讨论】:

以上是关于Oracle 数据库连接时间过长的 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

oracle 字符串连接的结果过长的问题怎么解决

oracle listagg 拼接的字符串给多少长度

C#连接oracle连接字符串怎么写啊?

C#连接oracle连接字符串怎么写啊?

Spring Data JPA闭合连接

docker安装oracle