我有一个使用JDBC(通过JPA)的Java应用程序,它使用主机名,端口和Oracle SID连接到开发数据库,如下所示:
JDBC:神谕:薄:@ oracle.hostserver1.mydomain.ca:1521:XYZ
XYZ是Oracle SID.现在我需要连接到不使用SID的不同Oracle数据库,而是使用Oracle"服务名称".
我试过这个,但它不起作用:
JDBC:神谕:薄:@ oracle.hostserver2.mydomain.ca:1522:ABCD
ABCD是另一个数据库的服务名称.
我究竟做错了什么?
如果你想在Java中使用加密强大的随机数,你可以使用SecureRandom.不幸的是,SecureRandom可能会很慢.如果它/dev/random在Linux上使用,它可以阻止等待足够的熵建立.你如何避免性能损失?
有没有人使用Uncommon Maths作为解决这个问题的方法?
任何人都可以确认JDK 6中已经解决了这个性能问题吗?
我遇到了一个非常奇怪的问题这是一个非常简单的JDBC连接到Oracle数据库的用法
OS: Ubuntu
Java Version: 1.5.0_16-b02
1.6.0_17-b04
Database: Oracle 11g Release 11.1.0.6.0
Run Code Online (Sandbox Code Playgroud)
当我使用jar文件时
OJDBC14.jar它每次都连接到数据库当我使用jar文件时
OJDBC5.jar它连接了一些时间,有时它会抛出一个错误(如下所示)如果我用Java 6重新编译并使用
OJDBC6.jar我获得相同的结果如OJDBC5.jar
我需要JODB5.jar中的特定功能,这些功能在OJDBC14.jar中不可用
有任何想法吗
错误
> Connecting to oracle
java.sql.SQLException: Io exception: Connection reset
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:494)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at TestConnect.main(TestConnect.java:13)
Run Code Online (Sandbox Code Playgroud)
码
以下是我正在使用的代码
import java.io.*;
import java.sql.*;
public class TestConnect {
public static void main(String[] args) {
try {
System.out.println("Connecting to oracle"); …Run Code Online (Sandbox Code Playgroud) 在Java项目中,我使用的是ojdbc6 jar
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
<scope>compile</scope>
</dependenc>
Run Code Online (Sandbox Code Playgroud)
我运行一天的第一次,dataSource.getConnection()很快.第二次通常没关系.接下来的几次大约需要45秒.之后,需要几分钟.一旦我有一个给定应用程序运行的FIRST连接,我得到的任何新连接都非常快.此延迟仅为给定运行获取FIRST连接.
是什么让我的第一次连接变得如此缓慢?
我正在观看netstat并且在成功运行后看不到任何连接.尝试了几个不同的连接池(DBCP,C3PO)没有运气.通过源代码调试,org.springframework.jdbc.datasource.DataSourceUtils的延迟是100%:
Connection con = dataSource.getConnection();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑了更多细节
1)我正在使用连接池(DBCP或C3PO),它可以保存连接以备将来使用.当我谈到获得新连接时,我的意思是在第一个连接正在使用时......我需要转到数据库并获得新连接.当然,我可以一遍又一遍地从连接池返回并获得相同的连接.但同时获得第二个也很快.
2)我不知道我的DB允许我登录多少个连接.知道这个属性在oracle中的位置吗?
java ×4
jdbc ×3
oracle ×3
datasource ×1
entropy ×1
performance ×1
random ×1
security ×1
service-name ×1