oracle 查询1-10,oracle – 对同一数据库的相同查询在OAS 10.1.3上给出了不同的结果...

博主在Oracle应用服务器10.1.3中遇到一个问题,当使用Oracle10g部署的应用程序执行查询时,结果与直接通过数据库运行相同查询时的返回内容不一致。主要差异在于`CONTENT`字段的Blob数据大小不同,导致360字节与86字节的差异。博主检查了数据源配置,包括JDBCURL、凭证和JDBC驱动,但没有找到明显的解释。问题可能涉及到连接池配置、JDBC驱动版本或服务器环境因素。
摘要由CSDN通过智能技术生成

当我在Oracle应用服务器10.1.3中使用Oracle10g部署的应用程序中运行查询时,我看到了一些奇怪的东西.

当我直接对数据库运行一个语句时(例如一个调用用hibernate实现的DAO的独立应用程序),我看到以下内容:

select

documentco0_.CONTENT_ID as CONTENT1_63_0_,

documentco0_.TSTAMP as TSTAMP63_0_,

documentco0_.CONTENT as CONTENT63_0_

from

MySchema.MyTable documentco0_

where

documentco0_.CONTENT_ID=?

[main] TRACE org.hibernate.type.LongType - binding '1768334' to parameter: 1

[main] TRACE org.hibernate.type.TimestampType - returning '2013-08-05 17:31:32' as column: TSTAMP63_0_

[main] TRACE org.hibernate.type.BinaryType - returning '7f587f608090cac6c9c68081818180b380b380807f5b80c3807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f40808b8880918091818191807f44809f8080818581818181818180808080808080808182838485868788898a8b7f44803590808281838382848385858484808081fd8182838084918592a1b1c18693d1e187a2f194b201112188a3c2314195d25170a4b3e2f202898a969798999aa5a6a7a8a9aab4b5b6b7b8b9bac3c4c5c6c7c8c9cad3d4d5d6d7d8d9dae3e4e5e6e7e8e9eaf3f4f5f6f7f8f9fa030405060708090a12131415161718191a22232425262728292a32333435363738393a42434445464748494a52535455565758595a6162636465666768696a7172737475767778797a7f5a808881818080bf80fef947bf520c730eff25ada7bd007c7f807a460efd87677f805625220aab7f59' as column: CONTENT63_0_

在应用程序服务器中运行时,相同的DAO操作会返回以下内容:

select

documentco0_.CONTENT_ID as CONTENT1_63_0_,

documentco0_.TSTAMP as TSTAMP63_0_,

documentco0_.CONTENT as CONTENT63_0_

from

MySchema.MyTable documentco0_

where

documentco0_.CONTENT_ID=?

2013-08-06 12:49:46,484 TRACE [AJPRequestHandler-RMICallHandler-12] myuser:4 (NullableType.java:133 nullSafeSet()) - binding '1768334' to parameter: 1

2013-08-06 12:49:46,500 TRACE [AJPRequestHandler-RMICallHandler-12] myuser:4 (NullableType.java:172 nullSafeGet()) - returning '2013-08-05 17:31:32' as column: TSTAMP63_0_

2013-08-06 12:49:46,500 TRACE [AJPRequestHandler-RMICallHandler-12] myuser:4 (NullableType.java:172 nullSafeGet()) - returning '80d48081818c808080818080808180808099ff0c809a5c9d809a5c9c80828082808080817f587f608090cac6c9c68081808080804818f7ef8081808080808080808080808080808080808080809a5c9c83408c508081' as column: CONTENT63_0_

您可以看到标识符和时间戳在两种情况下都相同,但内容blob不同:第一种情况下为360字节,第二种情况下为86字节.

独立应用程序使用BasicDataSource,而服务器上的应用程序使用JNDI数据源.我已经验证BasicDataSource包含在JNDI数据源中使用的相同JDBC URL.两个数据源都使用相同的凭据.

应用程序服务器中的数据库操作具有不同的跟踪输出,使用NullableType :: nullSafeGet()来显示信息而不是org.hibernate.type跟踪.我不确定这是否相关.

有什么明显的东西我在这里俯瞰吗?在同一个数据库上运行相同的查询时,我无法理解为什么会得到不同的结果.

编辑:在OAS上我已经配置了一个JDBC ConnectionPool,它使用连接工厂类oracle.jdbc.pool.OracleDataSource,而JDBC数据源是指向该连接池的托管数据源.

我想不同的Oracle JDBC驱动程序可能存在问题?独立应用程序的BasicDataSource使用JDBC驱动程序oracle.jdbc.driver.OracleDriver和方言org.hibernate.dialect.Oracle10gDialect.我看不到OAS管理中显示等效值的任何地方.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值