JDBC Blob reading "hang" every 32ko

  • From: ææ çé <kuon@xxxxxxxxxx>
  • To: Oracle Mailing List <oracle-l@xxxxxxxxxxxxx>
  • Date: Fri, 11 Nov 2005 11:11:47 +0100


I'm currently developing a JDBC program on Oracle and I have the following problem.

I use the BLOB.getBinaryStream() method, it works fine, I got the stream and I can read it.

My problem is slow performances, when I call stream.read():

The first call takes 10 seconds.
Then 32*1024 next calls are very fast.
Then hang for 10 seconds
Then 32ko readed fast, hang....

Do you have any idea if this is Database or JDBC problem?

The network is fine.

I think it's a SQL Net problem, because when I SQL plus to the db on the local computer, the connection is immediate, but if I sqlPlus from remote computer, the connection hang for 5 seconds before showing me the sqlPlus prompt. And 32ko seems to be the net packet size, but I'm not sure of this.

So, my questions are:

- How can I use SQLPlus to select a blob (without printing it) with set autot on so I can benchmark and be sure it's not my JDBC? (I tried column binaryData noprint, select binaryData, id from akData where id = 1, but I still got the "SQLPlus cannot print this kind of data" error).
- How can I tune the SQLNet configuration?
- I use ASM, can this be a problem?
- Should I move the BLOB to a different tablespace? If yes, how?
- Any other settings to tune my db?

I use oracle 10g on Solaris 10.
Last JDBC (thin) driver.

Best regards


Other related posts: