Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> RE: Performance Conundrum Selecting varchar2(2000) Column

RE: Performance Conundrum Selecting varchar2(2000) Column

From: <Jared.Still_at_radisys.com>
Date: Wed, 30 Jan 2002 15:24:04 -0800
Message-ID: <F001.0040140E.20020130152537@fatcity.com>

Sam,

33 seconds of wait time and 533 waits on 10k of data seems very slow to me.

Jared

SID: 14 User: CPAS_ADMIN on UNIX

                 client bytes          : 10590

                 client round trips    : 169

                 client avg packet size: 63 


                          TOTAL_WAITS    TOTAL_TIMEOUTS TIME_WAITED
AVERAGE_WAIT CPAS_ADMIN on UNIX
SQL*Net message to client   169                0             0           0 

SQL*Net more data to client 533                0            33.21
6.23
SQL*Net Msg from client     168                0            37.06





Sam Bootsma <SamB_at_cpas.com>
Sent by: root_at_fatcity.com
01/30/02 02:25 PM
Please respond to ORACLE-L  

        To:     Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>
        cc: 
        Subject:        RE: Performance Conundrum Selecting varchar2(2000) Column


Hello,

Thanks very much for your help Jared. I have included a summary of the results below. I believe that SQL*Net Msg from client means that Oracle is
waiting for more work from the client (but I stand to be corrected). I think the other two events are similar in nature. If anybody can clarify these waits for me, I'd appreciate it. I wasn't able to get information on
SDU and TDU settings (Metalink was down).

It looks to me that the network is fine (because there are no waits on the NT box). I figure either UNIX is forming packets inefficiently, or UNIX is
on another subnet that is causing delays in the network. I appreciate any feedback the list can provide.

Here is a summary of the relevant results:

SID: 9 User: CPAS_ADMIN on NT

                 client bytes          : 15485

                 client round trips    : 169

                 client avg packet size: 92


SID: 14 User: CPAS_ADMIN on UNIX

                 client bytes          : 10590

                 client round trips    : 169

                 client avg packet size: 63 


                           TOTAL_WAITS    TOTAL_TIMEOUTS TIME_WAITED
AVERAGE_WAIT
CPAS_ADMIN on NT
SQL*Net message to client   169                0             0           0
SQL*Net more data to client 539                0             0           0 

SQL*Net Msg from client     168                0             0           0 

 

CPAS_ADMIN on UNIX
SQL*Net message to client   169                0             0           0 

SQL*Net more data to client 533                0            33.21
6.23
SQL*Net Msg from client     168                0            37.06
22.06

Thanks for any responses!

Sam.

-----Original Message-----
Sent: January 29, 2002 7:50 PM
To: Multiple recipients of list ORACLE-L

On Tuesday 29 January 2002 15:32, Sam Bootsma wrote:
> Hello,
>
> Most of our clients can run our application with very good performance,
on
> both UNIX and Windows platforms. However, ...
>

here are some scripts to investigate packet sizes being transmitted through oracle and sqlnet waits:

Jared

select

   sess.username,
   sess.sid,

   se.event,
   se.total_waits,
   se.total_timeouts,
   se.time_waited/100 time_waited,
   se.average_wait

from v$session_event se, v$session sess
where event like '&uevent%'
and sess.sid = se.sid
and sess.username is not null
order by username, sid;

set serveroutput on size 1000000

declare

                 cursor c_client_bytes ( sid_in number )
                 is
                 --select decode(sum(value),0,1, sum(value)) value
                 select decode(value ,0,1,value)
                 from v$sesstat stat, v$statname name
                 where
                                 stat.sid = sid_in
                                 and stat.statistic# = name.statistic#
                                 and name.name like '%bytes%client'
                 order by stat.sid, name.name;
                 cursor c_client_roundtrips ( sid_in number )
                 is
                 select decode(value ,0,1,value)
                 from v$sesstat stat, v$statname name
                 where
                                 stat.sid = sid_in
                                 and stat.statistic# = name.statistic#
                                 and  name.name like '%%roundtrip%client'
                 order by stat.sid, name.name;
                 cursor c_dblink_bytes ( sid_in number )
                 is
                 --select sum(value) value
                 select decode(value ,0,1,value)
                 from v$sesstat stat, v$statname name
                 where
                                 stat.sid = sid_in
                                 and stat.statistic# = name.statistic#
                                 and name.name like '%bytes%dblink'
                 order by stat.sid, name.name;
                 cursor c_dblink_roundtrips ( sid_in number )
                 is
                 --select value
                 select decode(value ,0,1,value)
                 from v$sesstat stat, v$statname name
                 where
                                 stat.sid = sid_in
                                 and stat.statistic# = name.statistic#
                                 and  name.name like '%%roundtrip%dblink'
                 order by stat.sid, name.name;
                 cursor c_session is
                 select sid, username
                 from v$session
                 order by sid;
                 client_packet_size number(7,2);
                 dblink_packet_size number(7,2);
                 dblink_bytes number;
                 client_bytes number;
                 dblink_roundtrips number;
                 client_roundtrips number;
begin
                 for sess_rec in c_session
                 loop
                                 open c_client_bytes(sess_rec.sid);
                                 fetch c_client_bytes into client_bytes;
                                 if c_client_bytes%notfound then
                                                 client_bytes := 1;
                                 end if;
                                 close c_client_bytes;
                                 open c_client_roundtrips(sess_rec.sid);
                                 fetch c_client_roundtrips into 
client_roundtrips;
                                 if c_client_roundtrips%notfound then
                                                 client_roundtrips := 1;
                                 end if;
                                 close c_client_roundtrips;
                                 open c_dblink_bytes(sess_rec.sid);
                                 fetch c_dblink_bytes into dblink_bytes;
                                 if c_dblink_bytes%notfound then
                                                 dblink_bytes := 1;
                                 end if;
                                 close c_dblink_bytes;
                                 open c_dblink_roundtrips(sess_rec.sid);
                                 fetch c_dblink_roundtrips into 
dblink_roundtrips;
                                 if c_dblink_roundtrips%notfound then
                                                 dblink_roundtrips := 1;
                                 end if;
                                 close c_dblink_roundtrips;
                                 --dbms_output.put_line( ' client bytes: ' 
||
to_char(client_bytes) || '
client roundtrips: ' || to_char(client_roundtrips));
                                 --dbms_output.put_line( ' dblink bytes: ' 
||
to_char(dblink_bytes) || '
dblink roundtrips: ' || to_char(dblink_roundtrips));
                                 client_packet_size := round( client_bytes 
/
client_roundtrips );
                                 dblink_packet_size := round( dblink_bytes 
/
dblink_roundtrips );
                                 dbms_output.put_line( 'SID: ' || to_char( 
sess_rec.sid ) ||
' User: ' ||
sess_rec.username );
                                 dbms_output.put( '              client 
bytes          : ' );
                                 if client_bytes > 1 then
                                                 dbms_output.put_line( 
to_char( client_bytes ));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put( '              client 
round trips    : ' );
                                 if client_roundtrips > 1 then
                                                 dbms_output.put_line( 
to_char( client_roundtrips ));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put( '              client 
avg packet size: ' );
                                 if client_packet_size > 1 then
                                                 dbms_output.put_line( 
to_char( client_packet_size
));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put( '              dblink 
bytes          : ' );
                                 if dblink_bytes > 1 then
                                                 dbms_output.put_line( 
to_char( dblink_bytes ));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put( '              dblink 
round trips    : ' );
                                 if dblink_roundtrips > 1 then
                                                 dbms_output.put_line( 
to_char( dblink_roundtrips ));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put( '              dblink 
avg packet size: ' );
                                 if dblink_packet_size > 1 then
                                                 dbms_output.put_line( 
to_char( dblink_packet_size
));
                                 else
                                                 dbms_output.put_line( 'NO 
PACKETS');
                                 end if;
                                 dbms_output.put_line( chr(10) );
                 end loop;

end;
/

Ó

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Jared Still
  INET: jkstill_at_cybcon.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Sam Bootsma
  INET: SamB_at_cpas.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).



--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author:
  INET: Jared.Still_at_radisys.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Wed Jan 30 2002 - 17:24:04 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US