X-Received: by 10.66.155.226 with SMTP id vz2mr3575630pab.47.1404899536571; Wed, 09 Jul 2014 02:52:16 -0700 (PDT) X-Received: by 10.182.61.9 with SMTP id l9mr206643obr.1.1404899536421; Wed, 09 Jul 2014 02:52:16 -0700 (PDT) Path: news.cambrium.nl!textnews.cambrium.nl!feeder3.cambriumusenet.nl!feed.tweaknews.nl!193.141.40.65.MISMATCH!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!news.glorb.com!r10no147224igi.0!news-out.google.com!gf2ni3igb.0!nntp.google.com!r10no147214igi.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.databases.oracle.server Date: Wed, 9 Jul 2014 02:52:16 -0700 (PDT) In-Reply-To: <1a5390e9-0edd-4d2f-9e14-af4e221bb161@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=79.65.1.147; posting-account=49iE_goAAACjdRNLRieMP9VYsrRF5BOz NNTP-Posting-Host: 79.65.1.147 References: <6e295b57-f22d-4138-805f-f208e741c5f1@googlegroups.com> <1a5390e9-0edd-4d2f-9e14-af4e221bb161@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <276ca6b5-9596-4108-82e7-48d82423888a@googlegroups.com> Subject: Re: Apex performance From: rl@neurozoid.com Injection-Date: Wed, 09 Jul 2014 09:52:16 +0000 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Xref: news.cambrium.nl On Tuesday, July 8, 2014 6:45:35 PM UTC+1, joel garry wrote: > On Tuesday, July 8, 2014 10:28:33 AM UTC-7, r...@neurozoid.com wrote: >=20 >=20 >=20 > >=20 >=20 > > Hi, nah got rid of the hint. No difference, its not locking anything, j= ust smashing the IO subsystem with those direct reads...weird stuff... >=20 >=20 >=20 > No idea, but see http://www.freelists.org/post/oracle-l/READ-wait-events-= when-inserting-data-into-a-CLOB and I have a vague memory of Tanel or Jonat= han or someone posting something more on a blog about this type of issue. = You may have to delve into tracing to see what apex is doing different.=20 >=20 >=20 >=20 > jg >=20 > --=20 >=20 > @home.com is bogus. >=20 > http://www.informationweek.in/informationweek/interviews/296936/oracle-sr= inivasan-rangaswami-importance-bi-analytics-commerce-players Ran the trace. Just loads of direct read events against the LOB. I never le= t it finish (because I suspect it never would...) OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current = rows ------- ------ -------- ---------- ---------- ---------- ---------- -----= ----- Parse 397 0.05 0.00 0 0 0 = 0 Execute 658 0.14 0.09 142 235 188 = 26 Fetch 759 0.18 0.90 49 2661 520 = 705 ------- ------ -------- ---------- ---------- ---------- ---------- -----= ----- total 1814 0.38 0.99 191 2896 708 = 731 Misses in library cache during parse: 9 Misses in library cache during execute: 7 Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Wait= ed ---------------------------------------- Waited ---------- ----------= -- Disk file operations I/O 4 0.00 0.= 00 db file sequential read 44 0.90 0.= 90 db file scattered read 19 0.00 0.= 00 asynch descriptor resize 3 0.00 0.= 00 utl_file I/O 56 0.00 0.= 00 direct path read 13000 1.14 177.= 98 Looks like a ghastly bug to me. I'm going to do an even more ghastly work a= round...actually it will be a work around a work around...brilliant. Just for laughs, here is oracle's apex code that is "executing" whilst all = this is happening: DECLARE rc__ NUMBER; simple_list__ OWA_UTIL.vc_arr; complex_list__ OWA_UTIL.vc_arr; BEGIN OWA.init_cgi_env (:n__, :nm__, :v__); HTP.htbuf_len :=3D 63; NULL; NULL; simple_list__ (1) :=3D 'sys.%'; simple_list__ (2) :=3D 'dbms\_%'; simple_list__ (3) :=3D 'utl\_%'; simple_list__ (4) :=3D 'owa\_%'; simple_list__ (5) :=3D 'owa.%'; simple_list__ (6) :=3D 'htp.%'; simple_list__ (7) :=3D 'htf.%'; IF ( (wwv_flow_epg_include_modules.authorize ('f') =3D FALSE) OR (owa_match.match_pattern (p_string =3D> 'f' /* */ , p_simple_pattern =3D> simple_li= st__, p_complex_pattern =3D> complex_l= ist__, p_use_special_chars =3D> FALSE ) ) ) THEN rc__ :=3D 2; ELSE NULL; NULL; f (p =3D> :p); IF (WPG_DOCLOAD.is_file_download) THEN rc__ :=3D 1; WPG_DOCLOAD.get_download_file (:doc_info); NULL; NULL; NULL; COMMIT; ELSE rc__ :=3D 0; NULL; NULL; NULL; COMMIT; OWA.get_page (:data__, :ndata__); END IF; END IF; :rc__ :=3D rc__; END; Loving: 1) variable names 2) null commands everywhere and 3) the penultimat= e line!