Tag: oracle

SQLException:违反协议。 Oracle JDBC驱动程序问题

我得到以下的赘言: java.sql.SQLException: Protocol violation at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:286) at oracle.jdbc.driver.T4C80all.receive(T4C80all.java:766) at oracle.jdbc.driver.T4CPreparedStatement.do0all8(T4CPreparedStatement.java:216) at oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1225) at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:373) at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:284) Oracle系统在Solaris 5.10上运行10.2.0.3.0。 jdbc驱动程序在JDK 1.6.0_21上运行(如果它是导入的,则java也在Solaris 5.10机器上运行)。 我尝试了几种不同的oracle瘦驱动程序,包括最新的和看起来与oracle版本完全匹配的驱动程序。 我正在运行的查询非常简单:“按key1,key2,key3从some_table顺序中选择*”然后迭代结果集并写入文件。 该表有大约1200万行,所以我希望这个过程运行时间很长,但它似乎在5到15分钟内就会死掉。 每次我运行它,它会在另一行上爆炸,所以我认为问题不在于数据。 我找到了oracle警报日志,但我无法分辨出那里的任何内容与我的进程有关。 不过,我不是oracle专家,也许我需要看一下oracle设置。 奇怪的是,我在不同的连接上运行了大约五种类型的查询(一对比较复杂),只有两个最简单的查询得到了这个问题。 任何有关如何缩小问题的帮助或想法将不胜感激。

在一个Java应用程序中使用多个Oracle JDBC驱动程序?

我想通过JDBC连接到两个不同的Oracle数据库(一个8.0.5.0.0和一个12c)。 我有两个JDBC驱动程序,可以通过简单的“hello world”应用程序单独成功连接到相应的DB。 下面,我将它们放在一个Java应用程序中,遗憾的是它不再起作用(两个驱动程序都被加载)。 我已经阅读过这篇文章: 处理来自SAME VENDOR的多个JDBC驱动程序 。 提到的选项1可能有办法,但似乎有一个主要问题: 似乎OracleDataSource在旧版本8驱动程序中尚不存在,并且仅在更高版本中引入(在12c版本驱动程序中存在)。 关于如何使用一个Java应用程序和两个JDBC驱动程序连接这两个Oracle数据库的任何提示? import java.sql.*; class db { public static void main (String args []) throws SQLException { // Oracle 8 connection DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection c1 = DriverManager.getConnection( “jdbc:oracle:thin:@some-oracle-8-server:port:sid”, “my-user”, “my-password”); Statement s1 = c1.createStatement (); ResultSet r1 = s1.executeQuery (“SELECT banner FROM V$VERSION WHERE banner LIKE […]

我们可以重新分发Oracle tools.jar吗?

Oracle JDK附带的tools.jar是否可以与依赖它的商业产品一起分发(即,根据Oracle许可证的条款,合法地)? 无论是或否,请提供证据certificate您的答案。

使用Oracle Date with Hibernate时的日期/时间的Java类型

我们有一个Oracle Date列。 首先在我们的Java / Hibernate类中,我们使用java.sql.Date 。 这有效,但是当我们保存时它似乎没有在数据库中存储任何时间信息所以我将Java数据类型更改为Timestamp。 现在我们得到这个错误: springframework.beans.factory.BeanCreationException:在类路径资源[margin-service-domain -config.xml]中定义名称为’org.springframework.dao.an notation.PersistenceExceptionTranslationPostProcessor#0’的bean创建错误:bean的初始化失败; 嵌套exception是org.springframework.beans.factory.BeanCreatio nException:创建类路径资源[m-service-doma in-config.xml]中定义的名为’sessionFactory’的bean时出错:init方法的调用失败; 嵌套exception是org.hibernate.HibernateException:错误的列类型:CREATE_TS,expected:timestamp 关于如何在保留时间部分的同时映射Oracle Date任何想法? 更新:如果我使用Oracle Timestamp数据类型,我可以使它工作,但我不希望理想的精度水平。 只想要基本的Oracle Date 。

在同一语句中获取插入的id

有没有办法在一个表中插入一行并获得新生成的ID,只在一个语句中? 我想使用JDBC,ID将由序列生成,或者是自动增量字段。 谢谢你的帮助。 约翰波兰克雷

将国家字符插入oracle NCHAR或NVARCHAR列不起作用

在oracle数据库中插入字符串时,某些国家字符将替换为问号,即使它们插入NCHAR或NVARCHAR列中 – 应该能够处理所有Unicode字符。 使用Oracle的SQL Developer,sqlplus或使用JDBC驱动程序会发生这种情况。 数据库NLS_CHARACTERSET设置为WE8ISO8859P1(西欧iso-8859-1)。用于NCHAR列的NLS_NCHAR_CHARACTERSET设置为AL16UTF16。 (UTF-16) 任何不在NLS_CHARACTERSET中的字符似乎都被替换为反转的问号。

使用JDBC从dbms_output.get_lines获取输出

如何在不使用数据库创建其他对象的情况下使用JDBC从Java应用程序中获取Oracle dbms_output.get_lines的输出?

什么时候应该指定setFetchSize()?

我看到很多JDBC / MySQL的“最佳实践”指南告诉我指定setFetchSize()。 但是,我不知道何时指定,以及要指定的内容(语句,结果集)。 Statement.setFetchSize() or PreparedStatement.setFetchSize() ResultSet.setFetchSize() 在这两个中,我应该指定什么? 从javadoc和oracle文档中 ,这是我对“何时”感到困惑的地方 的Javadoc 默认值由创建结果集的Statement对象设置。 可以随时更改提取大小。 Oracle Doc 生成结果集后对语句对象的提取大小所做的更改将不会影响该结果集。 如果我错了,请纠正我。 这是否意味着setFetchSize在执行查询之前只是Affective?(因此,ResultSet上的setFetchSize是无用的?但是恰好“可以随时更改获取大小”?)

如何在java中进行连接池?

我试图理解connection pooling in java ,我在我的应用程序中使用jsp, servlet and tomcat 6 server 。 我在java class dbconnection.java编写了以下代码: 我在windows Xp OS中使用类型4 jdbc连接与oracle 10g EE import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class dbconnection { public Connection con = null; public Connection getConnection() throws Exception, SQLException { try { Class.forName(“oracle.jdbc.driver.OracleDriver”); con=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:abc”,”abc”, “abc”); } catch(Exception e) { } return con; } […]

JDBC ResultSet getDate丢失精度

我在ResultSet.getDate(x)调用中失去了精度。 基本上: rs = ps.executeQuery(); rs.getDate(“MODIFIED”); 返回截断日期,其中MODIFIED是默认精度的Oracle TIMESTAMP字段。 我想可能会有一些我不知道的JDBC调整; 通常TIMESTAMP与DATE兼容,但我希望我不必重新定义整个表。