<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Doug's Oracle Blog (Entries tagged as Parallel)</title>
    <link>http://oracledoug.com/serendipity/</link>
    <description></description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:doug@oracledoug.com" />
    <generator>Serendipity 1.5.2 - http://www.s9y.org/</generator>
    <managingEditor>Doug Burns</managingEditor>
<webMaster>Doug Burns</webMaster>
<pubDate>Thu, 11 Jun 2009 02:58:34 GMT</pubDate>

    <image>
        <url>http://oracledoug.com/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Doug's Oracle Blog - </title>
        <link>http://oracledoug.com/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Parallel Tidbits</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1333-Parallel-Tidbits.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1333-Parallel-Tidbits.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1333</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1333</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    A couple of small things I noticed recently. The first was a mention of the presence of &lt;a href=&quot;http://structureddata.org/2007/10/23/bloom-filters/&quot;&gt;Bloom Filters in PX plans&lt;/a&gt; over on &lt;a href=&quot;http://structureddata.org/&quot;&gt;Greg Rahn&#039;s blog&lt;/a&gt;, another one that I picked up through OraNA which looks very interesting. Greg&#039;s &lt;a href=&quot;http://structureddata.org/2007/10/26/ideas-for-oracle-performance-topics/&quot;&gt;looking for ideas&lt;/a&gt; for performance related blogs at the moment, so you might have some suggestions.&lt;br /&gt;&lt;br /&gt;The other I noticed via the &lt;a href=&quot;http://www.freelists.org/archives/oracle-l/&quot;&gt;Oracle-L&lt;/a&gt; digest email. I don&#039;t always read this as well as I should because of all those damn email .sigs that clutter it up! Anyway, when I saw this comment from &lt;a href=&quot;http://jonathanlewis.wordpress.com/all-postings/&quot;&gt;Jonathan Lewis&lt;/a&gt;, it prompted a minor concern.&lt;br /&gt;
&lt;blockquote&gt;&lt;em&gt;To the best of my knowledge the /*+ parallel(alias, degree) */ hint does NOT tell the optimizer to use parallel execution, it merely tells the optimizer to divide the cost of a tablescan on &#039;alias&#039; by &#039;degree&#039; (allowing for the effect of the _optimizer_percent_parallel in general and a fixed 0.9 scaling factor in 10g specifically) and then follow the consequences.&lt;br /&gt;&lt;br /&gt;It is perfectly feasible that the optimizer found a serial index access path that was cheaper than the &#039;tablescan cost / 4&#039; dictated by the hint.&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;He makes a wider-ranging point in a later reply.&lt;br /&gt;
&lt;blockquote&gt;&lt;em&gt;Under ANY circumstances, what you are trying to do with hints is to restrict the optimizer to having just ONE possible path through its own codebase.  If you don&#039;t use enough hints, or don&#039;t use the hints properly, then the optimizer may find a way of doing something you didn&#039;t want, despite obeying all your hints at the appropriate
 points in its working.&lt;br /&gt;&lt;br /&gt;So, if you use the PARALLEL(XXX) hint, think about ANY executions that might NOT do a parallel tablescan on table XXX and make it impossible
 for them to happen.&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;It&#039;s very similar to things I&#039;ve heard Jonathan say on other occasions, so why just parrot his words here?&lt;br /&gt;&lt;br /&gt;To provide a balance to my constant use of very simple hints in the various PX papers. In most cases, the queries and objects I&#039;m using are so simple that the hints are almost certain to give me what I&#039;m looking for but, for more complex statements, you might need to be more careful to include &lt;em&gt;a full set of hints&lt;/em&gt; to persuade Oracle to follow your intentions. &lt;br /&gt;&lt;br /&gt;My minor concern was that in keeping things simple, people might believe things are always that simple! Which, as usual, they&#039;re not &lt;img src=&quot;http://oracledoug.com/serendipity/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Oct 2007 00:05:00 +0000</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1333-guid.html</guid>
    <category>Parallel</category>

</item>
<item>
    <title>Parallel Query and 11g - Part 2</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1320-Parallel-Query-and-11g-Part-2.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1320-Parallel-Query-and-11g-Part-2.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1320</wfw:comment>

    <slash:comments>10</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1320</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    Now, &lt;em&gt;that&#039;s&lt;/em&gt; weird. &lt;br /&gt;&lt;br /&gt;A little surprising might be more accurate and maybe I&#039;m missing something.&lt;br /&gt;&lt;br /&gt;During the various tests with and without parallel hints and different parallel_io_cap_enabled settings, I expected the runs that didn&#039;t use parallelism to show up &amp;quot;db file scattered read&amp;quot; events in the trace files. For example, here&#039;s the explain plan and wait event summary generated by tkprof from a test on version 10.2.0.2&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;Rows     Row Source Operation
-------  ---------------------------------------------------
      0  SORT GROUP BY (cr=0 pr=0 pw=0 time=64 us)
      0   HASH JOIN  (cr=0 pr=0 pw=0 time=15 us)
65536000    TABLE ACCESS FULL TEST_TAB2 (cr=1118253 pr=1052301 pw=0 time=1441796425 us)
47535880    TABLE ACCESS FULL TEST_TAB1 (cr=832521 pr=832491 pw=0 time=1378575273 us)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  db file scattered read                     135042        0.16        983.67    
  direct path write temp                       5961        6.05        833.35
  db file sequential read                     15370        0.04         17.56
  local write wait                             4482        0.39        479.14
  SQL*Net break/reset to client                   2        0.01          0.01&lt;/pre&gt;&lt;br /&gt;and here&#039;s the same section from an 11.1.0.6 trace file. The test isn&#039;t quite identical - I don&#039;t have the 10g database around any more - but I suppose I could try it later.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;Rows     Row Source Operation
-------  ---------------------------------------------------
    113  SORT GROUP BY (cr=2265134 pr=2479358 pw=2479358 time=0 us cost=945776 
         size=787633200 card=65636100)
65529137   HASH JOIN  (cr=2265134 pr=2479358 pw=2479358 time=2198939 us cost=647314 
           size=787633200 card=65636100)
65536000    TABLE ACCESS FULL TEST_TAB2 (cr=1130519 pr=1130495 pw=1130495 time=8362747 us 
            cost=267173 size=393816600 card=65636100)
65536000    TABLE ACCESS FULL TEST_TAB1 (cr=1134615 pr=1134591 pw=1134591 time=9715954 us 
            cost=268141 size=393880800 card=65646800)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       9        0.00          0.00
  direct path read                            27807        0.90        260.40  
  direct path write temp                       6912        0.71         38.93
  direct path read temp                        6912        0.04         18.31
  SQL*Net message from client                     9        0.00          0.00&lt;/pre&gt;&lt;br /&gt;It looks to me like Oracle is using Direct Path Reads where it would previously have used Multiblock Reads. Let me try another simple test to see.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; exec dbms_session.set_identifier(&#039;FTS&#039;);

PL/SQL procedure successfully completed.

SQL&amp;gt; alter session set tracefile_identifier=&#039;FTS&#039;;

Session altered.

SQL&amp;gt; exec dbms_monitor.client_id_trace_enable(client_id =&amp;gt; &#039;FTS&#039;);

PL/SQL procedure successfully completed.

SQL&amp;gt; set autotrace on

SQL&amp;gt; select count(*) from testuser.test_tab1;

  COUNT(*)
----------
  65536000

Execution Plan
----------------------------------------------------------
Plan hash value: 1745491793

------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Cost (%CPU)| Time     |
------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1407K  (1)| 01:57:17 |
|   1 |  SORT AGGREGATE    |           |     1 |            |          |
|   2 |   TABLE ACCESS FULL| TEST_TAB1 |    65M|  1407K  (1)| 01:57:17 |
------------------------------------------------------------------------

Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
    1134615  consistent gets
    1134591  physical reads
          0  redo size
        420  bytes sent via SQL*Net to client
        420  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL&amp;gt; exec dbms_monitor.client_id_trace_disable(client_id =&amp;gt; &#039;FTS&#039;);

PL/SQL procedure successfully completed.&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;So I expect to see a single trace file in the user_dump_dest directory&lt;/p&gt;
&lt;pre&gt;[oracle@ISP4400 PX]$ cd /u01/app/oracle/diag/rdbms/test11/TEST11/trace
[oracle@ISP4400 trace]$ ls -ltra
total 9128
drwxr-x---  13 oracle oracle    4096 Sep 16 11:33 ..
-rw-rw-r--   1 oracle oracle    6725 Sep 19 20:49 ccf.sql
-rw-rw-r--   1 oracle oracle    1650 Sep 19 20:50 ccf2.sql
drwxrwxr-x   2 oracle oracle    4096 Sep 22 00:32 cdmp_20070922003230
-rw-rw----   1 oracle oracle  298602 Sep 23 12:52 TEST11_ora_9977_default.trm
-rw-rw----   1 oracle oracle 5085019 Sep 23 12:52 TEST11_ora_9977_default.trc
-rw-rw----   1 oracle oracle      59 Sep 23 13:01 TEST11_m000_10050.trm
-rw-rw----   1 oracle oracle     882 Sep 23 13:01 TEST11_m000_10050.trc
&lt;strong&gt;-rw-rw----   1 oracle oracle  113602 Sep 23 13:23 TEST11_ora_10100_FTS.trm&lt;/strong&gt;
-rw-r-----   1 oracle oracle  196158 Sep 23 13:24 alert_TEST11.log
&lt;strong&gt;-rw-rw----   1 oracle oracle 1696437 Sep 23 13:24 TEST11_ora_10100_FTS.trc&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;(Note the new *.trm Trace Mapping file.)&lt;br /&gt;&lt;br /&gt;When I look at the contents of the trace file, sure enough, all of the i/o wait events are direct path reads.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;PARSING IN CURSOR #1 len=39 dep=0 uid=0 oct=3 lid=0 tim=1190549917314881 
     hv=1002667060 ad=&#039;6d964890&#039; sqlid=&#039;0quzqwnxw6z1n&#039;
select count(*) from testuser.test_tab1
END OF STMT
PARSE #1:c=2999,e=2606,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1190549917314863
EXEC #1:c=0,e=131,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1190549917315423
WAIT #1: nam=&#039;SQL*Net message to client&#039; ela= 20 driver id=1650815232 
     #bytes=1 p3=0 obj#=-1 tim=1190549917315531
WAIT #1: nam=&#039;direct path read&#039; ela= 12764 file number=6 first dba=10 
     block cnt=15 obj#=70940 tim=1190549917337012
WAIT #1: nam=&#039;direct path read&#039; ela= 18221 file number=6 first dba=25 
     block cnt=83 obj#=70940 tim=1190549917359346&lt;/pre&gt;&lt;br /&gt;I had a quick look at &lt;a href=&quot;http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/instance_tune.htm#sthref700&quot;&gt;this page&lt;/a&gt; in the documentation and it implies that direct path reads would be associated with parallelism.&lt;br /&gt;&lt;em&gt;&lt;/em&gt;
&lt;blockquote&gt;&lt;em&gt;On a healthy system, physical read waits should be the biggest waits
after the idle waits. However, also consider whether there are direct
read waits (signifying full table scans with parallel query) or db file scattered read waits on an operational (OLTP) system that should be doing small indexed accesses.&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;but these statements aren&#039;t using PX. I probably am missing something. &lt;br /&gt;&lt;br /&gt;Any ideas? 
    </content:encoded>

    <pubDate>Sun, 23 Sep 2007 20:30:00 +0100</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1320-guid.html</guid>
    <category>11g</category>
<category>Direct Path Reads</category>
<category>Parallel</category>

</item>
<item>
    <title>Parallel Query and 11g</title>
    <link>http://oracledoug.com/serendipity/index.php?/archives/1319-Parallel-Query-and-11g.html</link>
    
    <comments>http://oracledoug.com/serendipity/index.php?/archives/1319-Parallel-Query-and-11g.html#comments</comments>
    <wfw:comment>http://oracledoug.com/serendipity/wfwcomment.php?cid=1319</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://oracledoug.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=1319</wfw:commentRss>
    

    <author>dougburns@yahoo.com (Doug Burns)</author>
    <content:encoded>
    I&#039;ve been playing around with 11g on and off this week, re-running some of the tests in &lt;a href=&quot;/px_slaves.pdf&quot;&gt;this document&lt;/a&gt; (PDF file).&lt;br /&gt;&lt;br /&gt;The main edits required to the scripts were simple ones to correct the locations of trace files, for example (where $ORACLE_BASE is /ora on the 10g system)&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;rm /ora/&lt;strong&gt;admin/TEST1020/udump/*.trc&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;and $ORACLE_BASE is /u01/app/oracle on the 11g system&lt;/p&gt;
&lt;pre&gt;rm /u01/app/oracle/&lt;strong&gt;diag/rdbms/test11/TEST11/trace/*.trc&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;
They were always hard-coded because I never planned to re-run the tests much but, even if I had used &lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ORACLE_BASE/admin/$ORACLE_SID/udump &lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;(and &lt;/font&gt;bdump&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;)&lt;/font&gt;&lt;/font&gt;, which would have been the correct approach, the scripts still wouldn&#039;t have worked because of Oracle&#039;s decision to play around with OFA directory structures yet again! I can&#039;t help feeling this is going to cause more problems than expected because there are a lot of scripts on systems out there that depend on the existing locations.&lt;br /&gt;&lt;br /&gt;Anyway, on to the tests themselves. I was keen to try out the &lt;a href=&quot;http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/initparams172.htm&quot;&gt;PARALLEL_IO_CAP_ENABLED parameter&lt;/a&gt;. The first step was to use the new I/O calibration tool. I simply lifted the example straight out of the documentation and amended the number of available disks.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; @io
SQL&amp;gt; SET SERVEROUTPUT ON
SQL&amp;gt; DECLARE
  2    lat  INTEGER;
  3    iops INTEGER;
  4    mbps INTEGER;
  5  BEGIN
  6  -- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (&amp;lt;DISKS&amp;gt;, &amp;lt;MAX_LATENCY&amp;gt;, iops, mbps, lat);
  7     DBMS_RESOURCE_MANAGER.CALIBRATE_IO (5, 10, iops, mbps, lat);
  8
  9    DBMS_OUTPUT.PUT_LINE (&#039;max_iops = &#039; || iops);
 10    DBMS_OUTPUT.PUT_LINE (&#039;latency  = &#039; || lat);
 11    dbms_output.put_line(&#039;max_mbps = &#039; || mbps);
 12  end;
 13  /

max_iops = 112
latency  = 8
max_mbps = 32

PL/SQL procedure successfully completed.&lt;/pre&gt;&lt;br /&gt;Well, it&#039;s certainly recognised how pathetic my i/o infrastructure is, as I&#039;ve mentioned in the past. Oh, and I should mention that this is a 5-disk stripe set with a stripe width of 256KB. That&#039;s too small, but was the one the Linux installation decided on and matched the one I used in the original paper, so I&#039;ve left it as it is for now.&lt;br /&gt;&lt;br /&gt;Now to see how this impacts the decision to use PX for a query. The problem is that the existing scripts use hints to request a specific degree of parallelism (DOP), e.g.&lt;br /&gt;&lt;br /&gt; 
&lt;pre&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-GB&quot;&gt;SELECT /*+ parallel(tt1,$DOP) parallel(tt2, $DOP) */ MOD(tt1.pk_id + tt2.pk_id, 113), COUNT(*)&lt;o:p&gt;
FROM test_tab1 tt1, test_tab2 tt2&lt;o:p&gt;
WHERE tt1.pk_id = tt2.pk_id&lt;o:p&gt;
GROUP BY MOD(tt1.pk_id + tt2.pk_id ,113)&lt;o:p&gt;
ORDER BY MOD(tt1.pk_id + tt2.pk_id ,113);&lt;o:p&gt;&lt;/o:p&gt;&lt;/o:p&gt;&lt;/o:p&gt;&lt;/o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;So I threw together a slightly modified script that requests PX but doesn&#039;t specify the DOP in the hint, leaving it to Oracle to decide :-&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-GB&quot;&gt;SELECT /*+ parallel(tt1) parallel(tt2) */ MOD(tt1.pk_id + tt2.pk_id, 113), COUNT(*)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt; 
&lt;p class=&quot;ComputerCode&quot;&gt;&lt;span lang=&quot;EN-GB&quot; style=&quot;font-size: 9pt;&quot;&gt;&lt;strong&gt;&lt;br /&gt;Without parallel_io_cap_enabled&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;First I&#039;ll check the behaviour without enabling i/o capping, which should be similar to 10g.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; show parameter parallel_io

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
parallel_io_cap_enabled              boolean     FALSE&lt;/pre&gt;&lt;br /&gt;Next I&#039;ll run the test and then check the contents of v$pq_tqstat to see if parallelism was used (note - this is only enough of the output to illustrate my point).&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; SELECT dfo_number, tq_id, server_type, process, num_rows, bytes
  2  FROM v$pq_tqstat
  3  ORDER BY dfo_number DESC, tq_id, server_type DESC , process;

DFO_NUMBER      TQ_ID SERVER_TYP PROCESS      NUM_ROWS      BYTES
---------- ---------- ---------- ---------- ---------- ----------
         1          0 Producer   P000          8220476   58056397
                      Producer   P001          8104871   57233905
                      Producer   P002          8075353   57029517
                      Producer   P003          7816421   55186002
                      Producer   P004          8088829   57061516
                      Producer   P005          8008482   56470221
                      Producer   P006          8491092   59649083
                      Producer   P007          8730476   61174367
                      Consumer   P008          8189988   57718569
                      Consumer   P009          8196864   57766896
                      Consumer   P010          8192339   57734621
                      Consumer   P011          8189512   57715446
                      Consumer   P012          8192294   57734372
                      Consumer   P013          8192216   57734131
                      Consumer   P014          8193654   57745093
                      Consumer   P015          8189133   57711880&lt;/pre&gt;&lt;br /&gt;So the DOP is cpu_count (4) * parallel_threads_per_cpu (2) = 8 px slaves per slave set, with two slave sets used. That&#039;s what I expected.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;With parallel_io_cap_enabled&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now I&#039;ll look at the effect of the new parameter.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; alter system set PARALLEL_IO_CAP_ENABLED=true;

System altered.&lt;/pre&gt;&lt;br /&gt;This time, the contents of v$pq_tqstat were&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; SELECT dfo_number, tq_id, server_type, process, num_rows, bytes
  2  FROM v$pq_tqstat
  3  ORDER BY dfo_number DESC, tq_id, server_type DESC , process;

no rows selected&lt;/pre&gt;&lt;br /&gt;So, because of the limited i/o resources, Oracle&#039;s decided not to use PX for the same query, with the same hints. What I found interesting was that the execution plan still looks like PX is used. (Just a snippet of output again.)&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;| Id  | Operation                  | Name      | Rows  | Bytes |TempSpc| Cost (%
CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------
---------------------------------------------
|   0 | SELECT STATEMENT           |           |    65M|   751M|       |   585K
(13)| 03:22:10 |        |      |            |
|   1 |  PX COORDINATOR            |           |       |       |       |
    |          |        |      |            |
|   2 |   PX SEND QC (ORDER)       | :TQ10002  |    65M|   751M|       |   585K
(13)| 03:22:10 |  Q1,02 | P-&amp;gt;S | QC (ORDER) |
|   3 |    SORT GROUP BY           |           |    65M|   751M|  2513M|   585K
(13)| 03:22:10 |  Q1,02 | PCWP |            |
|   4 |     PX RECEIVE             |           |    65M|   751M|       |   285K
(11)| 01:38:33 |  Q1,02 | PCWP |            |
|   5 |      PX SEND RANGE         | :TQ10001  |    65M|   751M|       |   285K
(11)| 01:38:33 |  Q1,01 | P-&amp;gt;P | RANGE      |
|*  6 |       HASH JOIN            |           |    65M|   751M|  1126M|   285K
(11)| 01:38:33 |  Q1,01 | PCWP |            |
|   7 |        PX RECEIVE          |           |    65M|   375M|       |   112K
 (9)| 00:38:52 |  Q1,01 | PCWP |            |
|   8 |         PX SEND BROADCAST  | :TQ10000  |    65M|   375M|       |   112K
 (9)| 00:38:52 |  Q1,00 | P-&amp;gt;P | BROADCAST  |
|   9 |          PX BLOCK ITERATOR |           |    65M|   375M|       |   112K
 (9)| 00:38:52 |  Q1,00 | PCWC |            |
|  10 |           TABLE ACCESS FULL| TEST_TAB2 |    65M|   375M|       |   112K
 (9)| 00:38:52 |  Q1,00 | PCWP |            |
|  11 |        PX BLOCK ITERATOR   |           |    65M|   375M|       |   112K
 (9)| 00:39:00 |  Q1,01 | PCWC |            |
|  12 |         TABLE ACCESS FULL  | TEST_TAB1 |    65M|   375M|       |   112K
 (9)| 00:39:00 |  Q1,01 | PCWP |            |&lt;/pre&gt;&lt;br /&gt;There&#039;ll be more to say later, no doubt, but that&#039;s all for now. 
    </content:encoded>

    <pubDate>Sun, 23 Sep 2007 12:22:00 +0100</pubDate>
    <guid isPermaLink="false">http://oracledoug.com/serendipity/index.php?/archives/1319-guid.html</guid>
    <category>11g</category>
<category>Direct Path Reads</category>
<category>Parallel</category>

</item>

</channel>
</rss>