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

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Never ending activity in temp file

Re: Never ending activity in temp file

From: Gints Plivna <gints.plivna_at_gmail.com>
Date: Tue, 12 Apr 2005 15:33:37 +0300
Message-ID: <6e49b6d00504120533155f751f@mail.gmail.com>


On Apr 12, 2005 2:33 PM, Stephane Faroult <sfaroult_at_roughsea.com> wrote:
> If I were you I would rework the inner query. I am always uncomfortable at
> long lists of hints, and even if my not understanding what column and table
> names are about doesn't help :-)

Oh yea but the reason for hints was only to ensure that DB read all table with full table scan or probably only index (for some others) and to prevent sing nested loops, because it really needs to scan all tables to get the result of join. Plan shows that generaly Oracle reads tale one by one and performs ash joins, v$session_longops shows the same thing.
BUT innrmost query isn't the bad one, the problem seems to be in some sorting or temp space assignment or deficiency, because as you can see below I created table innermost_join containing the result of join. Then doing my superselect and increasing volume using rownum show that time consumption isn't linear:
For 40k rows 0:54

50k 1:27
60k 2:19
70k 2:52

100k 5:57
120k 8:39
140k 11:55

Who knows how much for 3M...
See below for details:

SQL> ed
Wrote file afiedt.buf

  1 CREATE TABLE innermost_join as
  2 SELECT /*+ FULL (rpst1) FULL(rpst2) FULL(krfk) FULL(kvls) FULL(rvpd)

  3                     INDEX_FFS(rdad) INDEX_FFS(rdzv) FULL(kadr)*/
  4            rvpd_rrpr_id,
  5            kvls.kvls_kods,
  6            kvls.kvls_vp_nosaukums||' '||krfk_nozime_viriesiem valsts,
  7            row_number() OVER (PARTITION BY rvpd_rrpr_id ORDER BY
decode(kvls.kvls_kods, 'LVA', 0, 1)
  8          FROM ira_valst_piederibas rvpd
  9            ,kls_valstis kvls
 10            ,kls_ref_kodi krfk
 11            ,ira_pers_statusi rpst1
 12            ,ira_pers_statusi rpst2
 13            ,ira_dzivesvietas rdzv
 14            ,ira_dzv_adreses rdad
 15            ,kls_adreses kadr
 16            ,kls_valstis kvls1
 17          WHERE krfk_nosaukums = 'VALSTISKAS_PIEDERIBAS_VEIDS'
 18            AND krfk_min_vertiba = rvpd_krfk_min_vertiba
 19            AND kvls.kvls_id = rvpd_kvls_id
 20            AND rpst1.rpst_rrpr_id = rvpd_rrpr_id
 21            AND rpst1.rpst_veids = 2 AND rpst1.rpst_vertiba = 1
 22            AND rpst1.rpst_sakuma_datums <= sysdate AND
rpst1.rpst_beigu_datums >= sysdate
 23            AND rpst2.rpst_rrpr_id = rvpd_rrpr_id
 24            AND rpst2.rpst_veids = 3 AND rpst2.rpst_vertiba = 1
 25            AND rpst2.rpst_sakuma_datums <= sysdate AND
rpst2.rpst_beigu_datums >= sysdate
 26            AND rvpd_beigu_datums > sysdate
 27            AND rvpd_sakuma_datums <= sysdate
 28            AND rvpd_ir_nosledzoss = 0
 29            AND rdzv_rrpr_id = rvpd_rrpr_id
 30            AND rdzv_id = rdad_rdzv_id
 31            AND kadr_id = rdad_kadr_id
 32            AND kvls1.kvls_id = kadr_kvls_id
 33            AND rdzv_sakuma_datums <= sysdate
 34            AND rdzv_beigu_datums > sysdate
 35            AND rdad_ir_pamata = 1
 36*           AND kvls1.kvls_icao_kods = 'LVA'
SQL> / Table created.

SQL> select count(*) from innermost_join;

  COUNT(*)


   2990577

SQL> ed
Wrote file afiedt.buf

  1 select count(*) FROM (
  2 SELECT

  3        valsts,
  4        decode(rvpd_rrpr_id, iepr_rrpr_id, decode(pirm_kvls_kods,
'LVA', 0, 1), 1) flag
  5      FROM (
  6        SELECT
  7          rvpd_rrpr_id,
  8          kvls_kods,
  9          valsts,
 10          lag(rvpd_rrpr_id, 1, -1) over (order by rvpd_rrpr_id, rn)
iepr_rrpr_id,
 11          lag(kvls_kods, rn - 1, 'AAA') over (order by
rvpd_rrpr_id, rn) pirm_kvls_kods
 12        FROM innermost_join
 13        WHERE rownum < 40000
 14      )

 15 )
 16* WHERE flag = 1
SQL> /   COUNT(*)

     32686

Elapsed: 00:00:54.03
SQL> select count(*) FROM (
  2 SELECT

  3        valsts,
  4        decode(rvpd_rrpr_id, iepr_rrpr_id, decode(pirm_kvls_kods,
'LVA', 0, 1), 1) flag
  5      FROM (
  6        SELECT
  7          rvpd_rrpr_id,
  8          kvls_kods,
  9          valsts,
 10          lag(rvpd_rrpr_id, 1, -1) over (order by rvpd_rrpr_id, rn)
iepr_rrpr_id,
 11          lag(kvls_kods, rn - 1, 'AAA') over (order by
rvpd_rrpr_id, rn) pirm_kvls_kods
 12        FROM innermost_join
 13        WHERE rownum < 60000
 14      )

 15 )
 16 WHERE flag = 1
 17 /

  COUNT(*)


     48236

Elapsed: 00:02:19.04
SQL> select count(*) FROM (
  2 SELECT

  3        valsts,
  4        decode(rvpd_rrpr_id, iepr_rrpr_id, decode(pirm_kvls_kods,
'LVA', 0, 1), 1) flag
  5      FROM (
  6        SELECT
  7          rvpd_rrpr_id,
  8          kvls_kods,
  9          valsts,
 10          lag(rvpd_rrpr_id, 1, -1) over (order by rvpd_rrpr_id, rn)
iepr_rrpr_id,
 11          lag(kvls_kods, rn - 1, 'AAA') over (order by
rvpd_rrpr_id, rn) pirm_kvls_kods
 12        FROM innermost_join
 13        WHERE rownum < 100000
 14      )

 15 )
 16 WHERE flag = 1
 17 /

  COUNT(*)


     79793

Elapsed: 00:05:57.03
SQL> select count(*) FROM (
  2 SELECT

  3        valsts,
  4        decode(rvpd_rrpr_id, iepr_rrpr_id, decode(pirm_kvls_kods,
'LVA', 0, 1), 1) flag
  5      FROM (
  6        SELECT
  7          rvpd_rrpr_id,
  8          kvls_kods,
  9          valsts,
 10          lag(rvpd_rrpr_id, 1, -1) over (order by rvpd_rrpr_id, rn)
iepr_rrpr_id,
 11          lag(kvls_kods, rn - 1, 'AAA') over (order by
rvpd_rrpr_id, rn) pirm_kvls_kods
 12        FROM innermost_join
 13        WHERE rownum < 140000
 14      )

 15 )
 16 WHERE flag = 1
 17 /

  COUNT(*)


    110414

Elapsed: 00:11:55.09
SQL>

--
http://www.freelists.org/webpage/oracle-l
Received on Tue Apr 12 2005 - 08:37:37 CDT

Original text of this message

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