I have a Pro*C application (multi-threaded) which calls PL/SQL procedures.
One of the procedure topped in 'SQL*Net more data from client' wait time. What application design problem can cause this? There are other procedures in the application which pass in and pass out more data to and from the PL/SQL procedure. And these procedures are called more number of times than the troubling PL/SQL procedure.
Since other complex PL/SQL procedure calls are not showing the event, we are assuming that there is no network problem associated. When a Pro*C application is calling a PL/SQL procedure, it passes all the arguments in a single statement. So, the server should get everything at once. Why should the server wait for more data when the client is just calling a simple PL/SQL procedure?
It may just be whatever the PL/SQL is doing (inserting data?). In the case of these wait events, PL/SQL is a client as well. You could show this by calling your PL/SQL from sqlplus. More generally you may get more focused information by doing an Oracle trace rather than using AWR.