gpt4 book ai didi

oracle - 同一数据库上的同一查询在 OAS 10.1.3 上给出不同的结果

转载 作者:行者123 更新时间:2023-12-04 21:43:50 24 4
gpt4 key购买 nike

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

当我直接对数据库运行一条语句时(例如,一个独立的应用程序,它调用了一个用 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 管理中看不到任何显示等效值的地方。

最佳答案

请看 this article

看起来,出于某种原因,OAS 只返回 BLOB 值的 86 个字节,除非您在配置中指定了一个 Lob 处理程序。

您也可以在 this thread of CodeRanch 上获得更多信息描述相同的问题

希望这可以帮助!

关于oracle - 同一数据库上的同一查询在 OAS 10.1.3 上给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com