Huge network traffic when ODAC reads Oracle metadata

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Dmlvc
Posts: 17
Joined: Tue 27 Jun 2006 13:28

Huge network traffic when ODAC reads Oracle metadata

Post by Dmlvc » Tue 19 Apr 2011 15:32

Hello!

We use ODAC 6.90 for Delphi 2010 with Oracle 10.2 client. Some of our forms use TOraQuery with cached updates for reading and TOraStoredProc for saving. We have measured incoming traffic for some of the forms and result was awful! About 2 Mb for just one saved record! And nothing suspicious in DBMonitor log.

We have analyzed incoming packets from 1521 port. Most of the data received looks like Oracle metadata - fields description, types etc.

The question is: how can we forbid ODAC to read such a metadata and reduce our network traffic?

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Wed 20 Apr 2011 10:10

Hello,

Please send a complete small sample to alexp*devart*com to demonstrate the problem including a script to create stored procedures and tables.
And we will try to reproduce and fix the problem.

Also please check that the ExtendedFieldsInfo option is set to false.

Dmlvc
Posts: 17
Joined: Tue 27 Jun 2006 13:28

Post by Dmlvc » Fri 22 Apr 2011 13:43

Hi!

I've sent example. The problem arises when:

1. We call procedure from a big package
2. We don't generate SQL at design time and we don't fill parameter list (we have to do like this for the sake of backward compatibility)

When Prepare method describes any packaged procedure it receives description of whole package. I believe it's standard OCI behaviour but it's wrong.

Can you fix it?

Thanks!

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Wed 27 Apr 2011 08:28

Hello,

Thank you for the information.
We have reproduced the problem.
This problem is connected with the fact that we should get all of procedures and functions from a package to get a description of a procedure or function declared in a packageю
We will try to change this behaviour in the next version.

Now you can use the TOraQuery component with the following SQL text as a workaround:

Code: Select all

OraQuery.SQL.Text := ' begin '+#13+
' pk_your_package.sp_your_procedure; '+#13+
' end; ';
it'll reduce the network traffic, so you will get the description of the needed procedure or function only.

Post Reply