Re: hash join waits on cpu 100% time
From: GG <grzegorzof_at_interia.pl>
Date: Sun, 04 Jan 2015 14:16:55 +0100
Message-ID: <54A93D47.7050901_at_interia.pl>
W dniu 2015-01-04 o 13:50, Jonathan Lewis pisze:
>
> A couple of quick questions:
>
> You said the query should run in 6 minutes - is this the design target, or a previous best ?
> There is a "hint" to set the optimizer features back to 10.2.0.4 - is this really supposed to be a hint, or is it intended as a comment to point out that the session or system parameter has been set ? As it stands it's not the correct syntax for the hint.
>
>
>
The 6 minutes is the usual run time (got this from developers) I'm not able to confirm this from awr but it was not hours for sure . Otherwise our DW load would take ages .
We may ignore the hint .
I've got the view definition and it is pure evil with first_rows(1) :) The part with cl.cunit_id = 2 is run :
and I'm suspecting :
NVL(
V_SA_CUS_PERSONAL_ADD
WITH ccpa_bc AS
FROM stage_4b.sa_cus_crm_prim_add cl
WHERE cl.cunit_id != 1
),
scpa AS
(SELECT pl.time,
FROM stagep.sa_cus_personal_add pl
UNION ALL
SELECT lt.time,
FROM staget.sa_cus_personal_add lt
UNION ALL
SELECT lv.time,
FROM stagev.sa_cus_personal_add lv
UNION ALL
SELECT ee.time,
FROM stagee.sa_cus_personal_add ee
)
SELECT s."TIME",
ORA_HASH( s.cus_no
Date: Sun, 04 Jan 2015 14:16:55 +0100
Message-ID: <54A93D47.7050901_at_interia.pl>
W dniu 2015-01-04 o 13:50, Jonathan Lewis pisze:
>
> A couple of quick questions:
>
> You said the query should run in 6 minutes - is this the design target, or a previous best ?
> There is a "hint" to set the optimizer features back to 10.2.0.4 - is this really supposed to be a hint, or is it intended as a comment to point out that the session or system parameter has been set ? As it stands it's not the correct syntax for the hint.
>
>
>
The 6 minutes is the usual run time (got this from developers) I'm not able to confirm this from awr but it was not hours for sure . Otherwise our DW load would take ages .
We may ignore the hint .
I've got the view definition and it is pure evil with first_rows(1) :) The part with cl.cunit_id = 2 is run :
and I'm suspecting :
NVL(
(SELECT /*+first_rows(1)*/ cl.per_type_doc FROM ccpa_bc cl WHERE cl.time = lt.time AND cl.cunit_id = 2 AND cl.cus_no = TO_CHAR(lt.cust_id) )
is the problem here . No proof thoug :) .
VIEW_NAME TEXT
V_SA_CUS_PERSONAL_ADD
WITH ccpa_bc AS
(SELECT
/*+dynamic_sampling(4)*/ cl.time, cl.cunit_id, cl.cus_no, cl.per_type_doc
FROM stage_4b.sa_cus_crm_prim_add cl
WHERE cl.cunit_id != 1
),
scpa AS
(SELECT pl.time,
TO_NUMBER(1) AS cunit_id, TO_CHAR(pl.cust_id) AS cus_no, pl.title, pl.gender, pl.birth_date, pl.birth_place, pl.type_doc, pl.id_number, pl.nr_id, pl.nip, pl.fathers_name, pl.maiden_name, pl.mother_maiden, pl.marital_stat, pl.spec_sign, pl.inst_death, pl.add_info, pl.b_dep_no, pl.numochildren, pl.record_status, pl.curr_no, pl.inputter, pl.input_date_time, pl.authoriser, pl.co_code, pl.dept_code, pl.auditor_code, pl.audit_date_time, pl.data_country, pl.data_source, pl.last_rev, pl.exported, pl.cont_pref, pl.cont_type, pl.work_place, pl.income, pl.act_size, pl.perm_no, pl.perm_valid, pl.profession
FROM stagep.sa_cus_personal_add pl
UNION ALL
SELECT lt.time,
TO_NUMBER(2) AS cunit_id, TO_CHAR(lt.cust_id) AS cus_no, lt.title, lt.gender, lt.birth_date, lt.birth_place, NVL( (SELECT /*+first_rows(1)*/ cl.per_type_doc FROM ccpa_bc cl WHERE cl.time = lt.time AND cl.cunit_id = 2 AND cl.cus_no = TO_CHAR(lt.cust_id) ), lt.type_doc) AS type_doc, lt.id_number, lt.nr_id, lt.nip, lt.fathers_name, lt.maiden_name, lt.mother_maiden, lt.marital_stat, lt.spec_sign, lt.inst_death, lt.add_info, lt.b_dep_no, lt.numochildren, lt.record_status, lt.curr_no, lt.inputter, lt.input_date_time, lt.authoriser, lt.co_code, lt.dept_code, lt.auditor_code, lt.audit_date_time, lt.data_country, lt.data_source, lt.last_rev, lt.exported, lt.cont_pref, lt.cont_type, lt.work_place, lt.income, lt.act_size, lt.perm_no, lt.perm_valid, lt.profession
FROM staget.sa_cus_personal_add lt
UNION ALL
SELECT lv.time,
TO_NUMBER(3) AS cunit_id, TO_CHAR(lv.cust_id) AS cus_no, lv.title, lv.gender, lv.birth_date, lv.birth_place, NVL( (SELECT /*+first_rows(1)*/ cl.per_type_doc FROM ccpa_bc cl WHERE cl.time = lv.time AND cl.cunit_id = 3 AND cl.cus_no = TO_CHAR(lv.cust_id) ), lv.type_doc) AS type_doc, lv.id_number, lv.nr_id, lv.nip, lv.fathers_name, lv.maiden_name, lv.mother_maiden, lv.marital_stat, lv.spec_sign, lv.inst_death, lv.add_info, lv.b_dep_no, lv.numochildren, lv.record_status, lv.curr_no, lv.inputter, lv.input_date_time, lv.authoriser, lv.co_code, lv.dept_code, lv.auditor_code, lv.audit_date_time, lv.data_country, lv.data_source, lv.last_rev, lv.exported, lv.cont_pref, lv.cont_type, lv.work_place, lv.income, lv.act_size, lv.perm_no, lv.perm_valid, lv.profession
FROM stagev.sa_cus_personal_add lv
UNION ALL
SELECT ee.time,
TO_NUMBER(4) AS cunit_id, TO_CHAR(ee.cust_id) AS cus_no, ee.title, ee.gender, ee.birth_date, ee.birth_place, NVL( (SELECT /*+first_rows(1)*/ cl.per_type_doc FROM ccpa_bc cl WHERE cl.time = ee.time AND cl.cunit_id = 4 AND cl.cus_no = TO_CHAR(ee.cust_id) ), ee.type_doc) AS type_doc, ee.id_number, ee.nr_id, ee.nip, ee.fathers_name, ee.maiden_name, ee.mother_maiden, ee.marital_stat, ee.spec_sign, ee.inst_death, ee.add_info, ee.b_dep_no, ee.numochildren, ee.record_status, ee.curr_no, ee.inputter, ee.input_date_time, ee.authoriser, ee.co_code, ee.dept_code, ee.auditor_code, ee.audit_date_time, ee.data_country, ee.data_source, ee.last_rev, ee.exported, ee.cont_pref, ee.cont_type, ee.work_place, ee.income, ee.act_size, ee.perm_no, ee.perm_valid, ee.profession
FROM stagee.sa_cus_personal_add ee
)
SELECT s."TIME",
s."CUNIT_ID", s."CUS_NO", s."TITLE", s."GENDER", s."BIRTH_DATE", s."BIRTH_PLACE", s."TYPE_DOC", s. "ID_NUMBER", s."NR_ID", s."NIP", s."FATHERS_NAME", s."MAIDEN_NAME", s."MOTHER_MAIDEN", s."MARITAL_STAT", s. "SPEC_SIGN", s."INST_DEATH", s."ADD_INFO", s."B_DEP_NO", s."NUMOCHILDREN", s."RECORD_STATUS", s."CURR_NO", s."INPUTTER", s."INPUT_DATE_TIME", s."AUTHORISER", s."CO_CODE", s."DEPT_CODE", s."AUDITOR_CODE", s."AUDIT_ DATE_TIME", s."DATA_COUNTRY", s."DATA_SOURCE", s."LAST_REV", s."EXPORTED", s."CONT_PREF", s."CONT_TYPE", s. "WORK_PLACE", s."INCOME", s."ACT_SIZE", s."PERM_NO", s."PERM_VALID", s."PROFESSION",
ORA_HASH( s.cus_no
||s.title ||s.gender ||TO_CHAR(s.birth_date,'yyyymmdd') ||s.birth_place ||s.type_doc ||s.id_numbe r ||s.nr_id ||s.nip ||s.fathers_name ||s.maiden_name || s.mother_maiden ||s.marital_stat ||s.spec_sign ||s.inst_death ||s.add_info ||s.b_dep_no ||TO_CHAR(s.numoch ildren) ||s.record_status ||TO_CHAR(s.curr_no) || s.inputter ||TO_CHAR(s.input_date_time) ||s.authoriser ||s.co_code ||TO_CHAR(s.dept_code) ||s.auditor_cod e ||TO_CHAR(s.audit_date_time) ||s.data_country || s.data_source ||TO_CHAR(s.last_rev,'yyyymmdd') ||s.cont_pref ||TO_CHAR(s.cont_type) ||s.work_place ||s.in come ||s.act_size ||s.perm_no ||TO_CHAR(s.perm_valid,'yyyymmdd') || s.profession,4294967295,20 ) AS rec_checksumFROM scpa s
-- http://www.freelists.org/webpage/oracle-lReceived on Sun Jan 04 2015 - 14:16:55 CET