{"id":488,"date":"2021-12-29T21:13:27","date_gmt":"2021-12-29T20:13:27","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/2021\/12\/29\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/"},"modified":"2023-01-23T16:40:18","modified_gmt":"2023-01-23T15:40:18","slug":"script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/","title":{"rendered":"Script to calculate the network latency between the application and the Oracle DB-server"},"content":{"rendered":"<h2>By Clemens Bleile<\/h2>\n<p>Network latency is crucial for applications, especially if lots of &#8220;row by row&#8221;-processing (some call it &#8220;slow by slow&#8221;-processing) is used by the application or if lots of data is transported between the database and the application. If there&#8217;s lots of data to be transported between the database and the application then increasing the fetchsize may help to improve the performance and throughput. But this is not the aim of this blog. What I wanted to provide is a simple script on how to meassure the network latency (network-round-trip-time) when running SQL against your database.<\/p>\n<p>In today&#8217;s environment with the Cloud and Standby-DBs, it may easily happen that the application server suddenly is far away from the database server. This causes network latency to go up considerably. But what is the network latency exactly between my application server and my database server?<\/p>\n<p>There&#8217;s a very good <a href=\"https:\/\/fritshoogland.wordpress.com\/2017\/02\/14\/performing-in-the-cloud-network-latency\/\">blog from Frits Hoogland<\/a> describing network latency and how you may measure it in detail.<\/p>\n<p>What I wanted to achieve however, was to provide a simpler method to measure the network latency. The objective was to install sqlcl on the application server and run a SQL with around 5000 network round trips and measure the network latency by calculating<\/p>\n<p>(&#8220;Elapsed Time&#8221; &#8211; &#8220;DB Time&#8221;) \/ &#8220;network round trips&#8221; = Network Latency<\/p>\n<p>Using sqlcl provides the advantage that I just need to have Java on the application server as a prerequisite.<\/p>\n<p>So the first step is to install sqlcl by downloading it from <a href=\"https:\/\/www.oracle.com\/tools\/downloads\/sqlcl-downloads.html\">here<\/a> and unzip it on the Application Server:<\/p>\n<p>REMARK: Download a current version of sqlcl, becuase I&#8217;m using &#8220;set feedback only&#8221; (to hide the query output), which is not available in older versions.<\/p>\n<div>\n<div id=\"highlighter_423539\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ unzip sqlcl-21.4.0.348.1716.zip<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">$ <\/code><code class=\"bash functions\">alias<\/code> <code class=\"bash plain\">sqlcl=<\/code><code class=\"bash string\">\"$PWD\/sqlcl\/bin\/sql\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">$ sqlcl <\/code><code class=\"bash plain\">\/nolog<\/code><\/div>\n<div class=\"line number4 index3 alt1\">\u00a0<\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">SQLcl: Release 21.4 Production on Wed Dec 29 18:55:47 2021<\/code><\/div>\n<div class=\"line number6 index5 alt1\">\u00a0<\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Copyright (c) 1982, 2021, Oracle.\u00a0 All rights reserved.<\/code><\/div>\n<div class=\"line number8 index7 alt1\">\u00a0<\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">SQL&gt; quit<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">$ <\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Here the setup-script for my tests:<\/p>\n<div>\n<div id=\"highlighter_437196\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">$ cat setup_test_netlat_random.sql<\/code><\/div>\n<div class=\"line number2 index1 alt1\">\u00a0<\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql keyword\">connect<\/code> <code class=\"sql plain\">sys\/<\/code><code class=\"sql keyword\">password<\/code><code class=\"sql plain\">@clemens-oradb\/pdb1 <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">sysdba<\/code><\/div>\n<div class=\"line number4 index3 alt1\">\u00a0<\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">echo <\/code><code class=\"sql keyword\">on<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql keyword\">drop<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">test_netlat <\/code><code class=\"sql keyword\">cascade<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql keyword\">create<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">test_netlat identified <\/code><code class=\"sql keyword\">by<\/code> <code class=\"sql plain\">WElcome_netlat_01;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql keyword\">grant<\/code> <code class=\"sql plain\">dba <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql plain\">test_netlat;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql keyword\">grant<\/code> <code class=\"sql keyword\">select<\/code> <code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">v_$mystat <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql plain\">test_netlat;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql keyword\">grant<\/code> <code class=\"sql keyword\">select<\/code> <code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">v_$statname <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql plain\">test_netlat;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql keyword\">grant<\/code> <code class=\"sql keyword\">select<\/code> <code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">v_$SESS_TIME_MODEL <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql plain\">test_netlat;<\/code><\/div>\n<div class=\"line number12 index11 alt1\">\u00a0<\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql keyword\">connect<\/code> <code class=\"sql plain\">test_netlat\/WElcome_netlat_01@clemens-oradb\/pdb1<\/code><\/div>\n<div class=\"line number14 index13 alt1\">\u00a0<\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql keyword\">drop<\/code> <code class=\"sql keyword\">table<\/code> <code class=\"sql plain\">tlat purge;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql keyword\">create<\/code> <code class=\"sql keyword\">table<\/code> <code class=\"sql plain\">tlat (id number, filler varchar2(200));<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_random.seed(0);<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql keyword\">insert<\/code> <code class=\"sql keyword\">into<\/code> <code class=\"sql plain\">tlat <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">rownum,dbms_random.string(<\/code><code class=\"sql string\">'L'<\/code><code class=\"sql plain\">,dbms_random.value(100,100)) <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">all_objects <\/code><code class=\"sql keyword\">where<\/code> <code class=\"sql plain\">rownum &lt;= 5000;<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql keyword\">commit<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_stats.gather_table_stats(<\/code><code class=\"sql color2\">user<\/code><code class=\"sql plain\">,<\/code><code class=\"sql string\">'TLAT'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number21 index20 alt2\">\u00a0<\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql keyword\">create<\/code> <code class=\"sql color1\">or<\/code> <code class=\"sql color2\">replace<\/code> <code class=\"sql keyword\">function<\/code> <code class=\"sql plain\">net_roundtrips <\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">number <\/code><code class=\"sql keyword\">as<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql plain\">nrt number;<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">mystat.value <\/code><code class=\"sql keyword\">into<\/code> <code class=\"sql plain\">nrt <\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">v$mystat mystat, v$statname statname<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">where<\/code> <code class=\"sql plain\">mystat.statistic# = statname.statistic#<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql color1\">and<\/code> <code class=\"sql plain\">statname.display_name = <\/code><code class=\"sql string\">'SQL*Net roundtrips to\/from client'<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">nrt;<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql plain\">\/<\/code><\/div>\n<div class=\"line number32 index31 alt1\">\u00a0<\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql keyword\">create<\/code> <code class=\"sql color1\">or<\/code> <code class=\"sql color2\">replace<\/code> <code class=\"sql keyword\">function<\/code> <code class=\"sql plain\">my_db_time_microsecs <\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">number <\/code><code class=\"sql keyword\">as<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"sql plain\">mydbtime number;<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">value <\/code><code class=\"sql keyword\">into<\/code> <code class=\"sql plain\">mydbtime<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">V$SESS_TIME_MODEL <\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">where<\/code> <code class=\"sql plain\">sid=SYS_CONTEXT( <\/code><code class=\"sql string\">'USERENV'<\/code><code class=\"sql plain\">, <\/code><code class=\"sql string\">'SID'<\/code> <code class=\"sql plain\">) <\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql color1\">and<\/code> <code class=\"sql plain\">stat_name=<\/code><code class=\"sql string\">'DB time'<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">mydbtime;<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"sql plain\">\/<\/code><\/div>\n<div class=\"line number43 index42 alt2\">\u00a0<\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">echo <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Just run it after adjusting it to your needs:<\/p>\n<div>\n<div id=\"highlighter_215300\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<div class=\"line number49 index48 alt2\">49<\/div>\n<div class=\"line number50 index49 alt1\">50<\/div>\n<div class=\"line number51 index50 alt2\">51<\/div>\n<div class=\"line number52 index51 alt1\">52<\/div>\n<div class=\"line number53 index52 alt2\">53<\/div>\n<div class=\"line number54 index53 alt1\">54<\/div>\n<div class=\"line number55 index54 alt2\">55<\/div>\n<div class=\"line number56 index55 alt1\">56<\/div>\n<div class=\"line number57 index56 alt2\">57<\/div>\n<div class=\"line number58 index57 alt1\">58<\/div>\n<div class=\"line number59 index58 alt2\">59<\/div>\n<div class=\"line number60 index59 alt1\">60<\/div>\n<div class=\"line number61 index60 alt2\">61<\/div>\n<div class=\"line number62 index61 alt1\">62<\/div>\n<div class=\"line number63 index62 alt2\">63<\/div>\n<div class=\"line number64 index63 alt1\">64<\/div>\n<div class=\"line number65 index64 alt2\">65<\/div>\n<div class=\"line number66 index65 alt1\">66<\/div>\n<div class=\"line number67 index66 alt2\">67<\/div>\n<div class=\"line number68 index67 alt1\">68<\/div>\n<div class=\"line number69 index68 alt2\">69<\/div>\n<div class=\"line number70 index69 alt1\">70<\/div>\n<div class=\"line number71 index70 alt2\">71<\/div>\n<div class=\"line number72 index71 alt1\">72<\/div>\n<div class=\"line number73 index72 alt2\">73<\/div>\n<div class=\"line number74 index73 alt1\">74<\/div>\n<div class=\"line number75 index74 alt2\">75<\/div>\n<div class=\"line number76 index75 alt1\">76<\/div>\n<div class=\"line number77 index76 alt2\">77<\/div>\n<div class=\"line number78 index77 alt1\">78<\/div>\n<div class=\"line number79 index78 alt2\">79<\/div>\n<div class=\"line number80 index79 alt1\">80<\/div>\n<div class=\"line number81 index80 alt2\">81<\/div>\n<div class=\"line number82 index81 alt1\">82<\/div>\n<div class=\"line number83 index82 alt2\">83<\/div>\n<div class=\"line number84 index83 alt1\">84<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">$ sqlcl <\/code><code class=\"bash plain\">\/nolog<\/code><\/div>\n<div class=\"line number2 index1 alt1\">\u00a0<\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">SQLcl: Release 21.4 Production on Wed Dec 29 20:37:13 2021<\/code><\/div>\n<div class=\"line number4 index3 alt1\">\u00a0<\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">Copyright (c) 1982, 2021, Oracle.\u00a0 All rights reserved.<\/code><\/div>\n<div class=\"line number6 index5 alt1\">\u00a0<\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">SQL&gt; @setup_test_netlat_random.sql<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">Connected.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">SQL&gt; drop user test_netlat cascade;<\/code><\/div>\n<div class=\"line number10 index9 alt1\">\u00a0<\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">User TEST_NETLAT dropped.<\/code><\/div>\n<div class=\"line number12 index11 alt1\">\u00a0<\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">SQL&gt; create user test_netlat identified by WElcome_netlat_01;<\/code><\/div>\n<div class=\"line number14 index13 alt1\">\u00a0<\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">User TEST_NETLAT created.<\/code><\/div>\n<div class=\"line number16 index15 alt1\">\u00a0<\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">SQL&gt; grant dba to test_netlat;<\/code><\/div>\n<div class=\"line number18 index17 alt1\">\u00a0<\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">Grant succeeded.<\/code><\/div>\n<div class=\"line number20 index19 alt1\">\u00a0<\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">SQL&gt; grant <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">on v_$mystat to test_netlat;<\/code><\/div>\n<div class=\"line number22 index21 alt1\">\u00a0<\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash plain\">Grant succeeded.<\/code><\/div>\n<div class=\"line number24 index23 alt1\">\u00a0<\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"bash plain\">SQL&gt; grant <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">on v_$statname to test_netlat;<\/code><\/div>\n<div class=\"line number26 index25 alt1\">\u00a0<\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"bash plain\">Grant succeeded.<\/code><\/div>\n<div class=\"line number28 index27 alt1\">\u00a0<\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"bash plain\">SQL&gt; grant <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">on v_$SESS_TIME_MODEL to test_netlat;<\/code><\/div>\n<div class=\"line number30 index29 alt1\">\u00a0<\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"bash plain\">Grant succeeded.<\/code><\/div>\n<div class=\"line number32 index31 alt1\">\u00a0<\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"bash plain\">SQL&gt; connect test_netlat<\/code><code class=\"bash plain\">\/WElcome_netlat_01<\/code><code class=\"bash plain\">@clemens-oradb<\/code><code class=\"bash plain\">\/pdb1<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"bash plain\">Connected.<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"bash plain\">SQL&gt; -- drop table tlat purge;<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"bash plain\">SQL&gt; create table tlat (<\/code><code class=\"bash functions\">id<\/code> <code class=\"bash plain\">number, filler varchar2(200));<\/code><\/div>\n<div class=\"line number39 index38 alt2\">\u00a0<\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"bash plain\">Table TLAT created.<\/code><\/div>\n<div class=\"line number41 index40 alt2\">\u00a0<\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><code class=\"bash functions\">exec<\/code> <code class=\"bash plain\">dbms_random.seed(0);<\/code><\/div>\n<div class=\"line number43 index42 alt2\">\u00a0<\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"bash plain\">PL<\/code><code class=\"bash plain\">\/SQL<\/code> <code class=\"bash plain\">procedure successfully completed.<\/code><\/div>\n<div class=\"line number45 index44 alt2\">\u00a0<\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"bash plain\">SQL&gt; insert into tlat <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">rownum,dbms_random.string(<\/code><code class=\"bash string\">'L'<\/code><code class=\"bash plain\">,dbms_random.value(100,100)) from all_objects where rownum\u00a0 commit;<\/code><\/div>\n<div class=\"line number47 index46 alt2\">\u00a0<\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"bash plain\">Commit complete.<\/code><\/div>\n<div class=\"line number49 index48 alt2\">\u00a0<\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><code class=\"bash functions\">exec<\/code> <code class=\"bash plain\">dbms_stats.gather_table_stats(user,<\/code><code class=\"bash string\">'TLAT'<\/code><code class=\"bash plain\">);<\/code><\/div>\n<div class=\"line number51 index50 alt2\">\u00a0<\/div>\n<div class=\"line number52 index51 alt1\"><code class=\"bash plain\">PL<\/code><code class=\"bash plain\">\/SQL<\/code> <code class=\"bash plain\">procedure successfully completed.<\/code><\/div>\n<div class=\"line number53 index52 alt2\">\u00a0<\/div>\n<div class=\"line number54 index53 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number55 index54 alt2\"><code class=\"bash plain\">SQL&gt; create or replace <\/code><code class=\"bash keyword\">function<\/code> <code class=\"bash plain\">net_roundtrips <\/code><code class=\"bash keyword\">return<\/code> <code class=\"bash plain\">number as<\/code><\/div>\n<div class=\"line number56 index55 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">2\u00a0 nrt number;<\/code><\/div>\n<div class=\"line number57 index56 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">3\u00a0 begin<\/code><\/div>\n<div class=\"line number58 index57 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">4\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">mystat.value into nrt <\/code><\/div>\n<div class=\"line number59 index58 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">5\u00a0\u00a0\u00a0\u00a0 from <\/code><code class=\"bash functions\">v<\/code><code class=\"bash plain\">$mystat mystat, <\/code><code class=\"bash functions\">v<\/code><code class=\"bash plain\">$statname statname<\/code><\/div>\n<div class=\"line number60 index59 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">6\u00a0\u00a0\u00a0\u00a0 where mystat.statistic<\/code><code class=\"bash comments\"># = statname.statistic#<\/code><\/div>\n<div class=\"line number61 index60 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">7\u00a0\u00a0\u00a0\u00a0 and statname.display_name = <\/code><code class=\"bash string\">'SQL*Net roundtrips to\/from client'<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number62 index61 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">8\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash keyword\">return<\/code> <code class=\"bash plain\">nrt;<\/code><\/div>\n<div class=\"line number63 index62 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">9\u00a0 end;<\/code><\/div>\n<div class=\"line number64 index63 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">10\u00a0 \/<\/code><\/div>\n<div class=\"line number65 index64 alt2\">\u00a0<\/div>\n<div class=\"line number66 index65 alt1\"><code class=\"bash plain\">Function NET_ROUNDTRIPS compiled<\/code><\/div>\n<div class=\"line number67 index66 alt2\">\u00a0<\/div>\n<div class=\"line number68 index67 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number69 index68 alt2\"><code class=\"bash plain\">SQL&gt; create or replace <\/code><code class=\"bash keyword\">function<\/code> <code class=\"bash plain\">my_db_time_microsecs <\/code><code class=\"bash keyword\">return<\/code> <code class=\"bash plain\">number as<\/code><\/div>\n<div class=\"line number70 index69 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">2\u00a0 mydbtime number;<\/code><\/div>\n<div class=\"line number71 index70 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">3\u00a0 begin<\/code><\/div>\n<div class=\"line number72 index71 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">4\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">value into mydbtime<\/code><\/div>\n<div class=\"line number73 index72 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">5\u00a0\u00a0\u00a0\u00a0 from V$SESS_TIME_MODEL <\/code><\/div>\n<div class=\"line number74 index73 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">6\u00a0\u00a0\u00a0\u00a0 where sid=SYS_CONTEXT( <\/code><code class=\"bash string\">'USERENV'<\/code><code class=\"bash plain\">, <\/code><code class=\"bash string\">'SID'<\/code> <code class=\"bash plain\">) <\/code><\/div>\n<div class=\"line number75 index74 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">7\u00a0\u00a0\u00a0\u00a0 and stat_name=<\/code><code class=\"bash string\">'DB time'<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number76 index75 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">8\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash keyword\">return<\/code> <code class=\"bash plain\">mydbtime;<\/code><\/div>\n<div class=\"line number77 index76 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">9\u00a0 end;<\/code><\/div>\n<div class=\"line number78 index77 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">10\u00a0 \/<\/code><\/div>\n<div class=\"line number79 index78 alt2\">\u00a0<\/div>\n<div class=\"line number80 index79 alt1\"><code class=\"bash plain\">Function MY_DB_TIME_MICROSECS compiled<\/code><\/div>\n<div class=\"line number81 index80 alt2\">\u00a0<\/div>\n<div class=\"line number82 index81 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number83 index82 alt2\"><code class=\"bash plain\">SQL&gt; <\/code><code class=\"bash functions\">set<\/code> <code class=\"bash functions\">echo<\/code> <code class=\"bash plain\">off<\/code><\/div>\n<div class=\"line number84 index83 alt1\"><code class=\"bash plain\">SQL&gt; <\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I.e. I filled a table with 5000 rows. The filler column contains a 100 Bytes long random string. In addition I created 2 functions which return the current statistics for &#8216;SQL*Net roundtrips to\/from client&#8217; and &#8216;DB time&#8217; for my session.<\/p>\n<p>Below the script for the network latency test (adjust it to meet your needs as well):<\/p>\n<div>\n<div id=\"highlighter_152212\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">$ cat test_netlat.sql <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">connect<\/code> <code class=\"sql plain\">test_netlat\/WElcome_netlat_01@clemens-oradb\/pdb1<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">echo <\/code><code class=\"sql keyword\">on<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql plain\">var roundtrips_begin number;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">var roundtrips_end number;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">var time_begin number;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">var time_end number;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">var db_time_start number;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">var db_time_end number;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">feed <\/code><code class=\"sql keyword\">only<\/code> <code class=\"sql plain\">arraysize 15<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql comments\">-- select filler from tlat ;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql comments\">-- select filler from tlat ;<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">arraysize 1<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:roundtrips_begin := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:db_time_start := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:time_begin := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql plain\">\/<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0<\/code>\u00a0<\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">filler <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">tlat ;<\/code><\/div>\n<div class=\"line number22 index21 alt1\">\u00a0<\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:roundtrips_end := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:db_time_end := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">:time_end := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql plain\">\/<\/code><\/div>\n<div class=\"line number29 index28 alt2\">\u00a0<\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">serveroutput <\/code><code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">feed <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(:roundtrips_end - :roundtrips_begin)||<\/code><code class=\"sql string\">' network round trips.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:time_end - :time_begin)*10)||<\/code><code class=\"sql string\">' ms elapsed time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:db_time_end - :db_time_start)\/1000)||<\/code><code class=\"sql string\">' ms DB time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(round((((:time_end - :time_begin)*10)-((:db_time_end - :db_time_start)\/1000))\/(:roundtrips_end - :roundtrips_begin),3))||<\/code><code class=\"sql string\">' ms latency per round trip.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(<\/code><code class=\"sql string\">'--&gt; (Elapsed Time - DB Time) \/ network round trips'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">echo <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>What I&#8217;m basically doing is to get the number of &#8220;SQL*Net roundtrips to\/from client&#8221; and the &#8220;DB Time&#8221; of my session before the run. In addition I take the begin-time with the dbms_utility.get_time function. With &#8220;arraysize 1&#8221; (1 row per fetch) I run a full-table-scan to get the 5000 rows &#8211; one by one over the network. After taking statistcs after the run I do produce the output:<\/p>\n<p>&#8211; number of network round trips<br \/>&#8211; elapsed time of the query in ms<br \/>&#8211; DB time of the query in ms<br \/>&#8211; the calculated network latency: (Elapsed Time &#8211; DB Time) \/ network round trips<\/p>\n<p>Here an example output:<\/p>\n<div>\n<div id=\"highlighter_355318\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<div class=\"line number49 index48 alt2\">49<\/div>\n<div class=\"line number50 index49 alt1\">50<\/div>\n<div class=\"line number51 index50 alt2\">51<\/div>\n<div class=\"line number52 index51 alt1\">52<\/div>\n<div class=\"line number53 index52 alt2\">53<\/div>\n<div class=\"line number54 index53 alt1\">54<\/div>\n<div class=\"line number55 index54 alt2\">55<\/div>\n<div class=\"line number56 index55 alt1\">56<\/div>\n<div class=\"line number57 index56 alt2\">57<\/div>\n<div class=\"line number58 index57 alt1\">58<\/div>\n<div class=\"line number59 index58 alt2\">59<\/div>\n<div class=\"line number60 index59 alt1\">60<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">$ sqlcl \/nolog<\/code><\/div>\n<div class=\"line number2 index1 alt1\">\u00a0<\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">SQLcl: Release 21.4 Production <\/code><code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">Wed <\/code><code class=\"sql keyword\">Dec<\/code> <code class=\"sql plain\">29 20:41:26 2021<\/code><\/div>\n<div class=\"line number4 index3 alt1\">\u00a0<\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">Copyright (c) 1982, 2021, Oracle.\u00a0 <\/code><code class=\"sql color1\">All<\/code> <code class=\"sql plain\">rights reserved.<\/code><\/div>\n<div class=\"line number6 index5 alt1\">\u00a0<\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">SQL&gt; @test_netlat<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">Connected.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">SQL&gt; var roundtrips_begin number;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">SQL&gt; var roundtrips_end number;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql plain\">SQL&gt; var time_begin number;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">SQL&gt; var time_end number;<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql plain\">SQL&gt; var db_time_start number;<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql plain\">SQL&gt; var db_time_end number;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">feed <\/code><code class=\"sql keyword\">only<\/code> <code class=\"sql plain\">arraysize 15<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql comments\">-- select filler from tlat ;<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql comments\">-- select filler from tlat ;<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">arraysize 1<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">2\u00a0\u00a0\u00a0\u00a0 :roundtrips_begin := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">3\u00a0\u00a0\u00a0\u00a0 :db_time_start := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">4\u00a0\u00a0\u00a0\u00a0 :time_begin := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">5\u00a0 <\/code><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">6\u00a0 \/<\/code><\/div>\n<div class=\"line number25 index24 alt2\">\u00a0<\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql plain\">PL\/SQL <\/code><code class=\"sql keyword\">procedure<\/code> <code class=\"sql plain\">successfully completed.<\/code><\/div>\n<div class=\"line number27 index26 alt2\">\u00a0<\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">filler <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">tlat ;<\/code><\/div>\n<div class=\"line number30 index29 alt1\">\u00a0<\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql plain\">5,000 <\/code><code class=\"sql keyword\">rows<\/code> <code class=\"sql plain\">selected. <\/code><\/div>\n<div class=\"line number32 index31 alt1\">\u00a0<\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">2\u00a0\u00a0\u00a0\u00a0 :roundtrips_end := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">3\u00a0\u00a0\u00a0\u00a0 :db_time_end := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">4\u00a0\u00a0\u00a0\u00a0 :time_end := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">5\u00a0 <\/code><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">6\u00a0 \/<\/code><\/div>\n<div class=\"line number40 index39 alt1\">\u00a0<\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"sql plain\">PL\/SQL <\/code><code class=\"sql keyword\">procedure<\/code> <code class=\"sql plain\">successfully completed.<\/code><\/div>\n<div class=\"line number42 index41 alt1\">\u00a0<\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">serveroutput <\/code><code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">feed <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(:roundtrips_end - :roundtrips_begin)||<\/code><code class=\"sql string\">' network round trips.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"sql plain\">4953 network round trips.<\/code><\/div>\n<div class=\"line number46 index45 alt1\">\u00a0<\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:time_end - :time_begin)*10)||<\/code><code class=\"sql string\">' ms elapsed time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"sql plain\">18870 ms elapsed <\/code><code class=\"sql keyword\">time<\/code><code class=\"sql plain\">.<\/code><\/div>\n<div class=\"line number49 index48 alt2\">\u00a0<\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:db_time_end - :db_time_start)\/1000)||<\/code><code class=\"sql string\">' ms DB time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number51 index50 alt2\"><code class=\"sql plain\">876.625 ms DB <\/code><code class=\"sql keyword\">time<\/code><code class=\"sql plain\">.<\/code><\/div>\n<div class=\"line number52 index51 alt1\">\u00a0<\/div>\n<div class=\"line number53 index52 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(round((((:time_end - :time_begin)*10)-((:db_time_end - :db_time_start)\/1000))\/(:roundtrips_end - :roundtrips_begin),3))||<\/code><code class=\"sql string\">' ms latency per round trip.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number54 index53 alt1\"><code class=\"sql plain\">3.633 ms latency per round trip.<\/code><\/div>\n<div class=\"line number55 index54 alt2\">\u00a0<\/div>\n<div class=\"line number56 index55 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(<\/code><code class=\"sql string\">'--&gt; (Elapsed Time - DB Time) \/ network round trips'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number57 index56 alt2\"><code class=\"sql comments\">--&gt; (Elapsed Time - DB Time) \/ network round trips<\/code><\/div>\n<div class=\"line number58 index57 alt1\">\u00a0<\/div>\n<div class=\"line number59 index58 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">echo <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<div class=\"line number60 index59 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I.e. I do have an average network latency of 3.633 ms for my 100 Bytes of data.<\/p>\n<p>With the tc-utility I can add a 5ms delay for packets crossing my network interface wlxe84e063dd27f on my Linux-Server:<\/p>\n<div>\n<div id=\"highlighter_973264\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">% tc qdisc add dev wlxe84e063dd27f root netem delay 5ms<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Then repeat the test:<\/p>\n<div>\n<div id=\"highlighter_954304\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">arraysize 1<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">2\u00a0\u00a0\u00a0\u00a0 :roundtrips_begin := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">3\u00a0\u00a0\u00a0\u00a0 :db_time_start := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">4\u00a0\u00a0\u00a0\u00a0 :time_begin := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">5\u00a0 <\/code><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">6\u00a0 \/<\/code><\/div>\n<div class=\"line number8 index7 alt1\">\u00a0<\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">PL\/SQL <\/code><code class=\"sql keyword\">procedure<\/code> <code class=\"sql plain\">successfully completed.<\/code><\/div>\n<div class=\"line number10 index9 alt1\">\u00a0<\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">filler <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">tlat ;<\/code><\/div>\n<div class=\"line number13 index12 alt2\">\u00a0<\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql plain\">5,000 <\/code><code class=\"sql keyword\">rows<\/code> <code class=\"sql plain\">selected. <\/code><\/div>\n<div class=\"line number15 index14 alt2\">\u00a0<\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">begin<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">2\u00a0\u00a0\u00a0\u00a0 :roundtrips_end := NET_ROUNDTRIPS;<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">3\u00a0\u00a0\u00a0\u00a0 :db_time_end := MY_DB_TIME_MICROSECS;<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">4\u00a0\u00a0\u00a0\u00a0 :time_end := dbms_utility.get_time;<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">5\u00a0 <\/code><code class=\"sql keyword\">end<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">6\u00a0 \/<\/code><\/div>\n<div class=\"line number23 index22 alt2\">\u00a0<\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql plain\">PL\/SQL <\/code><code class=\"sql keyword\">procedure<\/code> <code class=\"sql plain\">successfully completed.<\/code><\/div>\n<div class=\"line number25 index24 alt2\">\u00a0<\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">serveroutput <\/code><code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">feed <\/code><code class=\"sql keyword\">off<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(:roundtrips_end - :roundtrips_begin)||<\/code><code class=\"sql string\">' network round trips.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql plain\">4953 network round trips.<\/code><\/div>\n<div class=\"line number29 index28 alt2\">\u00a0<\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:time_end - :time_begin)*10)||<\/code><code class=\"sql string\">' ms elapsed time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql plain\">45050 ms elapsed <\/code><code class=\"sql keyword\">time<\/code><code class=\"sql plain\">.<\/code><\/div>\n<div class=\"line number32 index31 alt1\">\u00a0<\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char((:db_time_end - :db_time_start)\/1000)||<\/code><code class=\"sql string\">' ms DB time.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"sql plain\">747.075 ms DB <\/code><code class=\"sql keyword\">time<\/code><code class=\"sql plain\">.<\/code><\/div>\n<div class=\"line number35 index34 alt2\">\u00a0<\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(to_char(round((((:time_end - :time_begin)*10)-((:db_time_end - :db_time_start)\/1000))\/(:roundtrips_end - :roundtrips_begin),3))||<\/code><code class=\"sql string\">' ms latency per round trip.'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"sql plain\">8.945 ms latency per round trip.<\/code><\/div>\n<div class=\"line number38 index37 alt1\">\u00a0<\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">exec<\/code> <code class=\"sql plain\">dbms_output.put_line(<\/code><code class=\"sql string\">'--&gt; (Elapsed Time - DB Time) \/ network round trips'<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"sql comments\">--&gt; (Elapsed Time - DB Time) \/ network round trips<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The latency went up from 3.633 ms on the first run to 8.945 ms on the second run.<\/p>\n<p>The results have been confirmed with the oratcptest-tool from MOS Note &#8220;Assessing and Tuning Network Performance for Data Guard and RMAN (Doc ID 2064368.1)&#8221;:<\/p>\n<div>\n<div id=\"highlighter_89349\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">$ java -jar oratcptest.jar clemens-oradb -mode=sync -length=100 -duration=20s -interval=20s -port=1550<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql plain\">[Requesting a test]<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Message payload\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 100 bytes<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Payload content type\u00a0\u00a0 = RANDOM<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Delay <\/code><code class=\"sql color1\">between<\/code> <code class=\"sql plain\">messages = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Number <\/code><code class=\"sql keyword\">of<\/code> <code class=\"sql plain\">connections\u00a0 = 1<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Socket send buffer\u00a0\u00a0\u00a0\u00a0 = (system <\/code><code class=\"sql keyword\">default<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Transport mode\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = SYNC<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Disk write\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">Statistics<\/code> <code class=\"sql plain\">interval\u00a0\u00a0\u00a0 = 20 seconds<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Test duration\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 20 seconds<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Test frequency\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Network Timeout\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">(1 Mbyte = 1024x1024 bytes)<\/code><\/div>\n<div class=\"line number15 index14 alt2\">\u00a0<\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">(21:00:52) The server <\/code><code class=\"sql keyword\">is<\/code> <code class=\"sql plain\">ready.<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Throughput\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Latency<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql plain\">(21:01:12)\u00a0\u00a0\u00a0\u00a0\u00a0 0.027 Mbytes\/s\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3.901 ms<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql plain\">(21:01:12) Test finished.<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Socket send buffer = 131768 bytes<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql color2\">Avg<\/code><code class=\"sql plain\">. throughput = 0.027 Mbytes\/s<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql color2\">Avg<\/code><code class=\"sql plain\">. latency = 3.901 ms<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>With the 5ms additional latency:<\/p>\n<div>\n<div id=\"highlighter_799300\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">$ java -jar oratcptest.jar clemens-oradb -mode=sync -length=100 -duration=20s -interval=20s -port=1550<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql plain\">[Requesting a test]<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Message payload\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 100 bytes<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Payload content type\u00a0\u00a0 = RANDOM<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Delay <\/code><code class=\"sql color1\">between<\/code> <code class=\"sql plain\">messages = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Number <\/code><code class=\"sql keyword\">of<\/code> <code class=\"sql plain\">connections\u00a0 = 1<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Socket send buffer\u00a0\u00a0\u00a0\u00a0 = (system <\/code><code class=\"sql keyword\">default<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Transport mode\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = SYNC<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Disk write\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">Statistics<\/code> <code class=\"sql plain\">interval\u00a0\u00a0\u00a0 = 20 seconds<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Test duration\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 20 seconds<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Test frequency\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Network Timeout\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">(1 Mbyte = 1024x1024 bytes)<\/code><\/div>\n<div class=\"line number15 index14 alt2\">\u00a0<\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">(21:02:05) The server <\/code><code class=\"sql keyword\">is<\/code> <code class=\"sql plain\">ready.<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Throughput\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Latency<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql plain\">(21:02:25)\u00a0\u00a0\u00a0\u00a0\u00a0 0.011 Mbytes\/s\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 9.293 ms<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql plain\">(21:02:25) Test finished.<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">Socket send buffer = 131768 bytes<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql color2\">Avg<\/code><code class=\"sql plain\">. throughput = 0.011 Mbytes\/s<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql color2\">Avg<\/code><code class=\"sql plain\">. latency = 9.293 ms<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>To cleanup just drop the DB-user test_netlat:<\/p>\n<div>\n<div id=\"highlighter_87865\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">drop<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">test_netlat <\/code><code class=\"sql keyword\">cascade<\/code><code class=\"sql plain\">;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>and (if set) remove the network delay on the network card:<\/p>\n<div>\n<div id=\"highlighter_416149\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">% tc qdisc del dev wlxe84e063dd27f root<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Summary: If you plan to have a longer distance between the application-server and the db-server (e.g. when going to the Cloud) then test the latency carefully. If there is a high number of network round trips between the application and the database then chances are high that the application becomes MUCH slower after moving the servers away from each other. Here the statistics about network round trips in your database since startup:<\/h3>\n<div>\n<div id=\"highlighter_510275\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">value <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">v$sysstat sysstat, v$statname statname<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">2\u00a0 <\/code><code class=\"sql keyword\">where<\/code> <code class=\"sql plain\">sysstat.statistic# = statname.statistic#<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">3\u00a0 <\/code><code class=\"sql color1\">and<\/code> <code class=\"sql plain\">statname.display_name = <\/code><code class=\"sql string\">'SQL*Net roundtrips to\/from client'<\/code><code class=\"sql plain\">;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n<p>REMARK 1: There&#8217;s a second Blog <a href=\"https:\/\/www.dbi-services.com\/blog\/latency-test-from-client-to-oracle-db-minimum-number-of-rows-fetched-in-sqlplus-and-sqlcl\/\" target=\"_blank\" rel=\"noreferrer noopener\">Latency test from Client to Oracle DB: Minimum number of rows fetched in sqlplus and sqlcl<\/a> explaining the difference of number of network round trips between sqlcl and sqlplus when running the script of this Blog.<\/p>\n\n\n\n<p>REMARK 2: Oracle&#8217;s &#8220;Realworld Performance Team&#8221; published a tool ociping to measure network latency as well. See <a href=\"https:\/\/github.com\/oracle\/rwloadsim\/wiki\/Measuring-Oracle-Net-Latency\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a> for details. Please consider that you need an Oracle Client installation for ociping to run.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Clemens Bleile Network latency is crucial for applications, especially if lots of &#8220;row by row&#8221;-processing (some call it &#8220;slow by slow&#8221;-processing) is used by the application or if lots of data is transported between the database and the application. If there&#8217;s lots of data to be transported between the database and the application then [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[106,107,108],"type_dbi":[],"class_list":["post-488","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-between-application-and-db-server","tag-network-latency","tag-roundtrip"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Script to calculate the network latency between the application and the Oracle DB-server - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Script to calculate the network latency between the application and the Oracle DB-server\" \/>\n<meta property=\"og:description\" content=\"By Clemens Bleile Network latency is crucial for applications, especially if lots of &#8220;row by row&#8221;-processing (some call it &#8220;slow by slow&#8221;-processing) is used by the application or if lots of data is transported between the database and the application. If there&#8217;s lots of data to be transported between the database and the application then [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-29T20:13:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-23T15:40:18+00:00\" \/>\n<meta name=\"author\" content=\"Clemens Bleile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ifgtxD2SrQ8r!YuXj\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Clemens Bleile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/\"},\"author\":{\"name\":\"Clemens Bleile\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0ac04011f60f2e93c115358d0789c2da\"},\"headline\":\"Script to calculate the network latency between the application and the Oracle DB-server\",\"datePublished\":\"2021-12-29T20:13:27+00:00\",\"dateModified\":\"2023-01-23T15:40:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/\"},\"wordCount\":731,\"commentCount\":0,\"keywords\":[\"between application and db-server\",\"network latency\",\"roundtrip\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/\",\"name\":\"Script to calculate the network latency between the application and the Oracle DB-server - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2021-12-29T20:13:27+00:00\",\"dateModified\":\"2023-01-23T15:40:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0ac04011f60f2e93c115358d0789c2da\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Script to calculate the network latency between the application and the Oracle DB-server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0ac04011f60f2e93c115358d0789c2da\",\"name\":\"Clemens Bleile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"caption\":\"Clemens Bleile\"},\"description\":\"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.\",\"sameAs\":[\"https:\\\/\\\/www.dbi-services.com\",\"https:\\\/\\\/x.com\\\/ifgtxD2SrQ8r!YuXj\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/clemens-bleile\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Script to calculate the network latency between the application and the Oracle DB-server - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/","og_locale":"en_US","og_type":"article","og_title":"Script to calculate the network latency between the application and the Oracle DB-server","og_description":"By Clemens Bleile Network latency is crucial for applications, especially if lots of &#8220;row by row&#8221;-processing (some call it &#8220;slow by slow&#8221;-processing) is used by the application or if lots of data is transported between the database and the application. If there&#8217;s lots of data to be transported between the database and the application then [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/","og_site_name":"dbi Blog","article_published_time":"2021-12-29T20:13:27+00:00","article_modified_time":"2023-01-23T15:40:18+00:00","author":"Clemens Bleile","twitter_card":"summary_large_image","twitter_creator":"@ifgtxD2SrQ8r!YuXj","twitter_misc":{"Written by":"Clemens Bleile","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/"},"author":{"name":"Clemens Bleile","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"headline":"Script to calculate the network latency between the application and the Oracle DB-server","datePublished":"2021-12-29T20:13:27+00:00","dateModified":"2023-01-23T15:40:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/"},"wordCount":731,"commentCount":0,"keywords":["between application and db-server","network latency","roundtrip"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/","url":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/","name":"Script to calculate the network latency between the application and the Oracle DB-server - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2021-12-29T20:13:27+00:00","dateModified":"2023-01-23T15:40:18+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/script-to-calculate-the-network-latency-between-the-application-and-the-oracle-db-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Script to calculate the network latency between the application and the Oracle DB-server"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da","name":"Clemens Bleile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","caption":"Clemens Bleile"},"description":"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.","sameAs":["https:\/\/www.dbi-services.com","https:\/\/x.com\/ifgtxD2SrQ8r!YuXj"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=488"}],"version-history":[{"count":3,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/488\/revisions"}],"predecessor-version":[{"id":21925,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/488\/revisions\/21925"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=488"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}