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

Home -> Community -> Usenet -> c.d.o.server -> Re: SQL without end

Re: SQL without end

From: sybrandb <sybrandb_at_gmail.com>
Date: 18 Jan 2007 02:50:50 -0800
Message-ID: <1169117450.098292.15210@v45g2000cwv.googlegroups.com>

On Jan 18, 11:36 am, romanhod..._at_email.cz wrote:
> Hy,
> I have some problem with SQL command. I have big SQL. Oracle don't
> generate execution plan. I think that the SQL never go to executin
> phase. Every statistic of this SQL is 0. And the Enterprice manager
> shows that the sql consuming 100% CPU of session. Do you know where is
> problem? Very fanks.
> This is the SQL:
>
> SELECT
> kpolkat.Id_kpolkat,
> kciig_jmenosuig.kIIG kiigJmenosuig,
> krkc_mr.id_kvvref idKvvrefMr,
> kcmjedn_m.pmjedn pmjednM,
> kpolkat.j_kzpev jKzpev,
> kcadpeic_ADPE.pADPEIC padpeicAdpe,
> kpolkat_k184.id_kpolkat idKpolkatk184,
> kpolkat_k131.id_kpolkat idKpolkatk131,
> kpolkat.i_kmjedn iKmjedn,
> kpolkat.knsn knsn,
> kpolkat.kpoprp kpoprp,
> kcprumt_prtr.skp skpPrtr,
> kcstand_mst.kkstand kkstandMst,
> kcharmaj_mch.kkcharm kkcharmMch,
> kpolkat.datfis datfis,
> kpolkat.id_kcprumt idKcprumt,
> kzmpol_mz.id_kzmpol idKzmpolMz,
> kpolkat.kzmpfis kzmpfis,
> kcniinsc_NIIN.pNIINSC pniinscNiin,
> kpolkat.adpeic adpeic,
> kciig_jmenosui.kIIG kiigJmenosui,
> kcstand_mst.kpstand kpstandMst,
> kckrivy_mk.kpkritv kpkritvMk,
> kctabmat_tabc.ktabc ktabcTabc,
> kpolkat.knfmsn knfmsn,
> kcqupc_QUPC.mvjb mvjbQupc,
> kcch6s_jmenosu.app appJmenosu,
> kpolkat.ktrida ktrida,
> kpolkat.qupc qupc,
> kczmssr_mztz.kkzmssr kkzmssrMztz,
> kpolkat.ktpol ktpol,
> kcsosmc_SOSM.pSOSMC psosmcSosm,
> kpolkat.dmlc dmlc,
> klncag_ag.kdcnag kdcnagAg,
> kpolkat.aac aac,
> kpolkat.ppod ppod,
> kccicc_CICC.pCICC pciccCicc,
> kpolkat.id_kcch6 idKcch6,
> klncag_ag.kdelnc kdelncAg,
> kctabmat_tabc.kptabmat kptabmatTabc,
> kpolkat.kprnmcrl kprnmcrl,
> kpolkat.kdopro kdopro,
> kpolkat.kdstdr kdstdr,
> kcch6_jmeno.inc incJmeno,
> kcsppol_dotrmaspr.ksppol ksppolDotrmaspr,
> kccicc_CICC.CICC ciccCicc,
> klncag_ag.id_kpolkat idKpolkatAg,
> kcextkod_agkod.kkextkod kkextkodAgkod,
> kctpol_mtpol.ptpol ptpolMtpol,
> kcch6s_jmenosu.cc ccJmenosu,
> kpolkat.k_kzpev kKzpev,
> kcmjedn_m.kmjedn kmjednM,
> kpolkat.datzal datzal,
> kpolkat.naz naz,
> kcskup_dotrdosk.nskup nskupDotrdosk,
> kczmssr_mztz.kpzmssr kpzmssrMztz,
> kpolkat.datzme datzme,
> kvvref_mrb.RN rnMrb,
> kcprumt_prtr.pskp pskpPrtr,
> kzmpol_mz.kdzssr kdzssrMz,
> kcdrpol_mdrpol.pdrpol pdrpolMdrpol,
> kpolkat.critlcd critlcd,
> kcmjedn_m.zkrmjdn zkrmjdnM,
> kcrpdmrc_RPDM.pRPDMRC prpdmrcRpdm,
> kpolkat.kzpev kzpev,
> krkc_mr.id_kcorg idKcorgMr,
> gusr_agksp.uziv_name uzivNameAgksp,
> kcch6_jmeno.tnaz tnazJmeno,
> kpolkat.kkkritv kkkritv,
> kcrpdmrc_RPDM.RPDMRC rpdmrcRpdm,
> kcziv_zivo.popziv popzivZivo,
> kpolkat.ktkosp ktkosp,
> kpolkat.niinsc niinsc,
> kczcykl_cykl.kzcykl kzcyklCykl,
> kcmu_dotrmmu.kpmu kpmuDotrmmu,
> kpolkat.ktabmat ktabmat,
> kpolkat.kautopkd kautopkd,
> kctrida_dotr.ntrida ntridaDotr,
> kcdmlc_DMLC.pDMLC pdmlcDmlc,
> kpolkat.Kzmpid kzmpid,
> kczcykl_cykl.pzcykl pzcyklCykl,
> kczpev_utva.kzpev kzpevUtva,
> kcritl_mcr.critlcode critlcdMcr,
> kpolkat.sosmc sosmc,
> kcpmic_PMIC.PMIC pmicPmic,
> kcdmlc_DMLC.DMLC dmlcDmlc,
> kpolkat.pmic pmic,
> kzahnaz_mzn.knazmat knazmatMzn,
> kpolkat.oprav oprav,
> kcniinsc_NIIN.NIINSC niinscNiin,
> kcch6_jmeno.cnaz cnazJmeno,
> kpolkat.kodziv kodziv,
> kcnarec_NREC.narec narecNrec,
> kpolkat.i_kzpev iKzpev,
> kcpmic_PMIC.tk tkPmic,
> kctpol_mtpol.ktpol ktpolMtpol,
> kczpev_brig.kzpev kzpevBrig,
> kpolkat.rpdmrc rpdmrc,
> kcmu_dotrmmu.kkmu kkmuDotrmmu,
> kpolkat.kskup kskup,
> kpolkat.katc katc,
> kczpev_cent.pzpev pzpevCent,
> kpolkat.narec narec,
> kczpev_cent.kzpev kzpevCent,
> krkc_mr.id_kpolkat idKpolkatMr,
> kpolkat.kzcykl kzcykl,
> kcaac_AAC.pAAC paacAac,
> kpolkat.Id_kpolkat idKpolkat,
> kpolkat.tidpol tidpol,
> kpolkat_k102.id_kpolkat idKpolkatk102,
> kpolkat.kkstand kkstand,
> kctrida_dotr.ktrida ktridaDotr,
> kcsosmc_SOSM.SOSMC sosmcSosm,
> kpolkat.ppdo ppdo,
> kzmpol_mz.kdazm kdazmMz,
> kczpev_sbor.kzpev kzpevSbor,
> kpolkat.id_kctabmat idKctabmat,
> kpolkat.kpstdr kpstdr,
> kcmjedn_v.kmjedn kmjednV,
> kcnarec_NREC.pnarec pnarecNrec,
> kctiic_TIIC.tidpol tidpolTiic,
> kcadpeic_ADPE.ADPEIC adpeicAdpe,
> kcaac_AAC.AAC aacAac,
> kpolkat.kprpouz kprpouz,
> kpolkat.pstapol pstapol,
> kczpev_sbor.pzpev pzpevSbor,
> kpolkat.cicc cicc,
> kczpev_brig.pzpev pzpevBrig,
> kpolkat.datprid datprid,
> kpolkat.kdrpol kdrpol,
> kcpmic_PMIC.ok okPmic,
> kckrivy_mk.kkkritv kkkritvMk,
> kcqupc_QUPC.QUPC qupcQupc,
> kcorg_mrbvyr.NSCM nscmMrbvyr,
> kcsppol_dotrmaspr.psppol psppolDotrmaspr,
> kctiic_TIIC.pidpol pidpolTiic,
> kcmjedn_v.zkrmjdn zkrmjdnV,
> kpolkat.kmjedn kmjedn,
> kcziv_zivo.kodziv kodzivZivo,
> kpolkat.kprfak kprfak,
> kcextkod_agkod.kpextkod kpextkodAgkod,
> kcdrpol_mdrpol.kdrpol kdrpolMdrpol,
> kcskup_dotrdosk.kskup kskupDotrdosk,
> kczpev_utva.pzpev pzpevUtva
> FROM
> kpolkat kpolkat
> LEFT OUTER JOIN
> kcmjedn kcmjedn_v
> ON
> kpolkat.i_kmjedn= kcmjedn_v.kmjedn
> LEFT OUTER JOIN
> kczpev kczpev_sbor
> ON
> kpolkat.i_kzpev= kczpev_sbor.kzpev
> LEFT OUTER JOIN
> kcziv kcziv_zivo
> ON
> kpolkat.kodziv= kcziv_zivo.kodziv
> INNER JOIN
> kpolkat kpolkat_k131
> ON
> kpolkat.Id_kpolkat= kpolkat_k131.Id_kpolkat
> INNER JOIN
> kctpol kctpol_mtpol
> ON
> kpolkat.ktpol= kctpol_mtpol.ktpol
> LEFT OUTER JOIN
> kcritl kcritl_mcr
> ON
> kpolkat.critlcd= kcritl_mcr.critlcode
> LEFT OUTER JOIN
> kcrpdmrc kcrpdmrc_RPDM
> ON
> kpolkat.rpdmrc= kcrpdmrc_RPDM.RPDMRC
> LEFT OUTER JOIN
> kcqupc kcqupc_QUPC
> ON
> kpolkat.qupc= kcqupc_QUPC.QUPC
> LEFT OUTER JOIN
> kczpev kczpev_brig
> ON
> kpolkat.j_kzpev= kczpev_brig.kzpev
> INNER JOIN
> kpolkat kpolkat_k102
> ON
> kpolkat.Id_kpolkat= kpolkat_k102.Id_kpolkat
> INNER JOIN
> kcniinsc kcniinsc_NIIN
> ON
> kpolkat.niinsc= kcniinsc_NIIN.NIINSC
> INNER JOIN
> (kctrida kctrida_dotr
> LEFT OUTER JOIN
> kcmu kcmu_dotrmmu
> ON
> kctrida_dotr.kkmu= kcmu_dotrmmu.kkmu
> LEFT OUTER JOIN
> kcsppol kcsppol_dotrmaspr
> ON
> kctrida_dotr.ksppol= kcsppol_dotrmaspr.ksppol
> INNER JOIN
> kcskup kcskup_dotrdosk
> ON
> kctrida_dotr.kskup= kcskup_dotrdosk.kskup
> )
> ON
> kpolkat.kskup = kctrida_dotr.kskup
> and kpolkat.ktrida= kctrida_dotr.ktrida
> LEFT OUTER JOIN
> kczpev kczpev_utva
> ON
> kpolkat.k_kzpev= kczpev_utva.kzpev
> LEFT OUTER JOIN
> kckrivy kckrivy_mk
> ON
> kpolkat.kkkritv= kckrivy_mk.kkkritv
> INNER JOIN
> kctiic kctiic_TIIC
> ON
> kpolkat.tidpol= kctiic_TIIC.tidpol
> LEFT OUTER JOIN
> kcaac kcaac_AAC
> ON
> kpolkat.aac= kcaac_AAC.AAC
> LEFT OUTER JOIN
> kcdrpol kcdrpol_mdrpol
> ON
> kpolkat.kdrpol= kcdrpol_mdrpol.kdrpol
> LEFT OUTER JOIN
> kczpev kczpev_cent
> ON
> kpolkat.kzpev= kczpev_cent.kzpev
> LEFT OUTER JOIN
> kcnarec kcnarec_NREC
> ON
> kpolkat.narec= kcnarec_NREC.narec
> LEFT OUTER JOIN
> (krkc krkc_mr
> LEFT OUTER JOIN
> (kvvref kvvref_mrb
> INNER JOIN
> kcorg kcorg_mrbvyr
> ON
> kvvref_mrb.id_kcorg= kcorg_mrbvyr.Id_kcorg
> )
> ON
> krkc_mr.id_kcorg = kvvref_mrb.id_kcorg
> and krkc_mr.id_kvvref= kvvref_mrb.Id_kvvref
> )
> ON
> kpolkat.Id_kpolkat= krkc_mr.id_kpolkat
> LEFT OUTER JOIN
> kcsosmc kcsosmc_SOSM
> ON
> kpolkat.sosmc= kcsosmc_SOSM.SOSMC
> LEFT OUTER JOIN
> (kzmpol kzmpol_mz
> INNER JOIN
> kczmssr kczmssr_mztz
> ON
> kzmpol_mz.kkzmssr= kczmssr_mztz.kkzmssr
> )
> ON
> kpolkat.Id_kpolkat= kzmpol_mz.id_kpolkat
> LEFT OUTER JOIN
> kcadpeic kcadpeic_ADPE
> ON
> kpolkat.adpeic= kcadpeic_ADPE.ADPEIC
> LEFT OUTER JOIN
> kzahnaz kzahnaz_mzn
> ON
> kpolkat.Id_kpolkat= kzahnaz_mzn.id_kpolkat
> LEFT OUTER JOIN
> kccicc kccicc_CICC
> ON
> kpolkat.cicc= kccicc_CICC.CICC
> LEFT OUTER JOIN
> kcpmic kcpmic_PMIC
> ON
> kpolkat.pmic= kcpmic_PMIC.PMIC
> LEFT OUTER JOIN
> kctabmat kctabmat_tabc
> ON
> kpolkat.id_kctabmat= kctabmat_tabc.id_kctabmat
> LEFT OUTER JOIN
> (klncag klncag_ag
> LEFT OUTER JOIN
> gusr gusr_agksp
> ON
> klncag_ag.uziv_code= gusr_agksp.uziv_code
> LEFT OUTER JOIN
> kcextkod kcextkod_agkod
> ON
> klncag_ag.kkextkod= kcextkod_agkod.kkextkod
> )
> ON
> kpolkat.Id_kpolkat= klncag_ag.id_kpolkat
> INNER JOIN
> (kcch6 kcch6_jmeno
> LEFT OUTER JOIN
> (kcch6s kcch6s_jmenosu
> LEFT OUTER JOIN
> kciig kciig_jmenosuig
> ON
> kcch6s_jmenosu.kiig= kciig_jmenosuig.kIIG
> INNER JOIN
> kciig kciig_jmenosui
> ON
> kcch6s_jmenosu.kiig= kciig_jmenosui.kIIG
> )
> ON
> kcch6_jmeno.Id_kcch6= kcch6s_jmenosu.id_kcch6
> )
> ON
> kpolkat.id_kcch6= kcch6_jmeno.Id_kcch6
> LEFT OUTER JOIN
> kcstand kcstand_mst
> ON
> kpolkat.kkstand= kcstand_mst.kkstand
> LEFT OUTER JOIN
> kcdmlc kcdmlc_DMLC
> ON
> kpolkat.dmlc= kcdmlc_DMLC.DMLC
> INNER JOIN
> kpolkat kpolkat_k184
> ON
> kpolkat.Id_kpolkat= kpolkat_k184.Id_kpolkat
> LEFT OUTER JOIN
> kcmjedn kcmjedn_m
> ON
> kpolkat.kmjedn= kcmjedn_m.kmjedn
> LEFT OUTER JOIN
> kcprumt kcprumt_prtr
> ON
> kpolkat.id_kcprumt= kcprumt_prtr.Id_kcprumt
> LEFT OUTER JOIN
> kczcykl kczcykl_cykl
> ON
> kpolkat.kzcykl= kczcykl_cykl.kzcykl
> LEFT OUTER JOIN
> kcharmaj kcharmaj_mch
> ON
> kpolkat.Id_kpolkat= kcharmaj_mch.id_kpolkat
> WHERE
> kpolkat.Id_kpolkat = 192;

The problem is in the database design requiring outer joins almost everywhere. Outer joins should be an exception, not the rule. Oracle isn't capable of generating efficient execution plans for outer joins, and often has to resort to full table scans and/or Merge join cartesians.
A merge join cartesian will inevitably get the cpu to 100 percent. If you can't change the design, time to get your creditcard handy and buy more and/or more powerful CPUs.

-- 
Sybrand Bakker
Senior Oracle DBA
Received on Thu Jan 18 2007 - 04:50:50 CST

Original text of this message

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