Performance issue with the query when join OKS and tables of the IB
Hello
I'm developing an integration for the automation of RMA through repair. The type of repair order is based on the details of the guarantee. This check must be made for each record.
Request for detailed below, I wrote, but it of a long way and slows down my program. Without this validation, it works perfectly.
The problem is the join of tables with OKS IB, he kills performance. I also try to my side,
any suggestion or help is appreciated. Here's the query in the program:
SELECT DISTINCT (TYPE |) '-' || service | '-' || status)
IN v_war_details
FROM (SELECT TO_NUMBER (linesb.line_number) line,
DECODE
(fnd_profile. VALUE
('OKS_LINE_MIRR_NAME_OR_DESC'),
'DISPLAY_NAME', sysitems.concatenated_segments,
"DISPLAY_DESC", sysitems.description
) service.
linestyletl.NAME TYPE,
status of ststl.meaning,
start_date linesb.start_date,
linesb.end_date end_date,
oks_misc_util_web.duration_period
(linesb.start_date,
linesb.end_date
) DURATION OF,.
TimeUnit.unit_of_measure_tl period
Of okc_k_lines_b linesb,.
okc_k_lines_tl linestl,
okc_line_styles_b linestyleb,
okc_line_styles_tl linestyletl,
okc_k_headers_all_b hdr,
oks_k_lines_b slines,
okc_k_items kitems,
mtl_system_items_b1_kfv sysitems,
okc_statuses_b stsb,
okc_statuses_tl ststl,
mtl_units_of_measure_tl timeunit,
okc_lookups_v rentype,
Glu mtl_units_of_measure_tl
WHERE linesb.cle_id IS NULL
AND linesb.ID = linestl.ID
AND linestl. LANGUAGE = USERENV ("LANG")
AND linesb.lse_id = linestyleb.ID
AND linesb.lse_id (1, 12, 14, 19, 46)
AND linestyleb.ID = linestyletl.ID
AND linestyletl. LANGUAGE = USERENV ("LANG")
AND linesb.chr_id = hdr.ID
AND linesb.ID = slines.cle_id
AND linesb.ID = kitems.cle_id
AND kitems.object1_id1 =
SysItems.inventory_item_id
AND kitems.object1_id2 =
SysItems.organization_id
AND kitems.uom_code = uom.uom_code (+)
AND unit of measure. LANGUAGE (+) = USERENV ("LANG")
AND linesb.sts_code = stsb.code
AND stsb.code = ststl.code
AND ststl. LANGUAGE = USERENV ("LANG")
AND timeunit.uom_code =
oks_misc_util_web.duration_unit
(linesb.start_date,
linesb.end_date
)
AND timeunit. LANGUAGE = USERENV ("LANG")
AND linesb.line_renewal_type_code = rentype.lookup_code (+)
AND rentype.lookup_type (+) =
'OKC_LINE_RENEWAL_TYPE '.
AND (IN) hdr.ID
SELECT kh.ID
Of okc_k_headers_all_b kh.
okc_k_lines_b kl,
Ki okc_k_items,
okc_line_styles_v ks,
csi_item_instances c,
mtl_system_items_b I have
WHERE kh.org_id = p_org_id
AND c.instance_id = p_instance_id
AND c.serial_number = p_serial_num
AND i.inventory_item_id =
p_inventory_item_id
AND kh.contract_number_modifier IS NULL
-can be filled
AND kh.ID = kl.dnz_chr_id
AND kh.ID = ki.dnz_chr_id
AND kl.ID = ki.cle_id
AND kl.lse_id = ks.ID
AND IN ki.jtot_object1_code
("OKX_CUSTPROD")
AND c.last_vld_organization_id =
i.organization_id
AND TO_NUMBER (ki.object1_id1) =
c.INSTANCE_ID
AND c.inventory_item_id =
i.inventory_item_id))
Service = 'GUARANTEE '.
AND TRUNC (SYSDATE) BETWEEN start_date AND end_date;
Not sure where it would be so I put it in the section SQL/PLSQL.
Kind regards
Prashant
Found the solution
AND TO_NUMBER (ki.object1_id1) = c.instance_id
replaced by to_char (c.instance_id) = ki.object1_id1 AND
Tags: Database
Similar Questions
-
performance issue with the Oracle SQL query
Dears
Good evening
I am new to begin to use Oracle SQL, I have a sql query which takes longer to run in production.
Each table in the query contains 1.2 million records and DBA suggested using the "Oracle - tips. I don't have good knowledge on this subject and the difficulties to implement this advice for imrpovise performance. In the product the jobs Informatica are failed and stuck with this problem of query performance.
I ask this forum for an emergency for me to solve this problem by using "advice". kindly help me.
SELECT
CASE.ID,
CASE. DTYPE,
CASE. Version
CASE. EXTERNAL_REF,
CASE. CREATION_TS,
RQ. TYPE
Of
PAS_CASE CASE,
AS_REQUEST RQ,
CN PAS_CONTEXT
where rq.case_id = case.id
AND rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.)
and CN. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
AND CAST (CN. CREATION_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
AND
CAST (CN. CREATION_TS AS DATE) < TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)-2nd request
SELECT
RA.ID,
RHEUMATOID ARTHRITIS. Version
RHEUMATOID ARTHRITIS. REQUEST_ID,
RA.NAME,
RHEUMATOID ARTHRITIS. VALUE,
RHEUMATOID ARTHRITIS. LOB_ID,
RHEUMATOID ARTHRITIS. DTYPE,
RHEUMATOID ARTHRITIS. CREATION_TS,
TASK. MAIN_REQ_TYPE
PAS_REQUESTATTRIBUTE RA
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
) task
on the RA REQUEST_ID = task.ID
and RA.ID between $$ LOW_ID1 AND $$ HIGH_ID1
UNIONSELECT
RA.ID,
RHEUMATOID ARTHRITIS. Version
RHEUMATOID ARTHRITIS. REQUEST_ID,
RA.NAME,
RHEUMATOID ARTHRITIS. VALUE,
RHEUMATOID ARTHRITIS. LOB_ID,
RHEUMATOID ARTHRITIS. DTYPE,
RHEUMATOID ARTHRITIS. CREATION_TS,
MAIN_REQ. TYPE
PAS_REQUESTATTRIBUTE RA
Join
(
Select rq.id, rq.type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
on the RA REQUEST_ID = main_req.ID-3rd request
SELECT
RB.ID,
RB. DTYPE,
RB. Version
RB. TYPE,
RB. CREATION_TS,
RB. TASK_ID,
RB. Color
RB. GLOBAL_RESULT,
TASK. MAIN_REQ_TYPE
Of
PAS_RESULTBLOCK RB
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
) task
We rb.task_id = task.ID
and rb.ID between $$ LOW_ID1 AND $$ HIGH_ID1
and RB. TYPE is not null
and RB. TYPE IN
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
UNION
SELECT
RB.ID,
RB. DTYPE,
RB. Version
RB. TYPE,
RB. CREATION_TS,
RB. TASK_ID,
RB. Color
RB. GLOBAL_RESULT,
TASK. MAIN_REQ_TYPE
Of
PAS_RESULTBLOCK RB
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
) task
We rb.task_id = task.ID
and rb.ID between $$ LOW_ID1 AND $$ HIGH_ID1
and RB. TYPE is nullSELECT
RB.ID,
RB. DTYPE,
RB. Version
RB. TYPE,
RB. CREATION_TS,
RB. TASK_ID,
RB. Color
RB. GLOBAL_RESULT,
TASK. MAIN_REQ_TYPE
Of
PAS_RESULTBLOCK RB
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
) task
We rb.task_id = task.ID
and rb.ID between $$ LOW_ID1 AND $$ HIGH_ID1
and RB. TYPE is not null
and RB. TYPE IN
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
UNION
SELECT
RB.ID,
RB. DTYPE,
RB. Version
RB. TYPE,
RB. CREATION_TS,
RB. TASK_ID,
RB. Color
RB. GLOBAL_RESULT,
TASK. MAIN_REQ_TYPE
Of
PAS_RESULTBLOCK RB
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
) task
We rb.task_id = task.ID
and rb.ID between $$ LOW_ID1 AND $$ HIGH_ID1
and RB. TYPE is null
-4th query
SELECT
RI.ID,
UII DTYPE,
UII Version
UII RESULTBLOCK_ID,
RI.NAME,
UII VALUE,
UII UNIT,
UII Color
UII LOB_ID,
UII CREATION_TS,
UII SEQUENCE,
UII DETAILLEVEL,
RES_BLK. MAIN_REQ_TYPE
Of
RI PAS_RESULTITEM
Join
(
Select
rb.ID, rb. TYPE rb_type, task. TYPE as the task_type, task. pas_resultblock rb main_req_type
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between the 20141999999999999 AND 20141800000000000
) task
We rb.task_id = task.ID
and rb.ID between the 20141999999999999 AND 20141800000000000
and RB. TYPE IN
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
) res_blk
On ri.resultblock_id = res_blk.ID
where IN RI.NAME
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and RI.ID between the 20141999999999999 AND 20141800000000000
and RI.NAME is not null
UNIONSelect
RI.ID,
UII DTYPE,
UII Version
UII RESULTBLOCK_ID,
RI.NAME,
UII VALUE,
UII UNIT,
UII Color
UII LOB_ID,
UII CREATION_TS,
UII SEQUENCE,
UII DETAILLEVEL,
RES_BLK. MAIN_REQ_TYPE
of pas_resultitem ri
Join
(
Select
rb.ID, rb. TYPE rb_type, task. TYPE as the task_type, task. pas_resultblock rb main_req_type
Join
(
Select tsk.ID, tsk. TYPE, main_req_type main_req.
of tsk PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between the 20141999999999999 AND 20141800000000000
) task
We rb.task_id = task.ID
and rb.ID between the 20141999999999999 AND 20141800000000000
) res_blk
On ri.resultblock_id = res_blk.ID
where RI.ID between 20141800000000000 20141999999999999 AND
and RI.NAME is null-REQUEST OF 5HT
SELECT
TSK.ID,
TSK. Version
TSK. DTYPE,
TSK. CASE_ID,
TSK. TYPE,
TSK. CORRELATION_ID,
TSK. INITIATOR,
TSK. EXECUTOR,
TSK. CATEGORY,
TSK. PARENT_CONTEXT_ID,
TSK. CREATION_TS,
MAIN_REQ. MAIN_REQ_TYPE
Of
TSK PAS_REQUEST
Join
(
Select cn.id as context_id, rq. TYPE main_req_type
of PAS_REQUEST rq
Cn PAS_CONTEXT
where rq.id = cn.request_id
and rq. DTYPE = "MAINREQUEST."
and rq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and rq.ID between the 20141999999999999 AND 20141800000000000
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk. DTYPE in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.ID between $$ LOW_ID1 AND $$ HIGH_ID1
UNION
Select
MREQ.ID,
MREQ. Version
MREQ. DTYPE,
MREQ. CASE_ID,
MREQ. TYPE,
MREQ. CORRELATION_ID,
MREQ. INITIATOR,
MREQ. EXECUTOR,
MREQ. CATEGORY,
MREQ. PARENT_CONTEXT_ID,
MREQ. CREATION_TS,
MREQ. TYPE
of PAS_REQUEST mreq
Cn PAS_CONTEXT
where mreq.id = cn.request_id
and mreq. DTYPE = "MAINREQUEST."
and mreq. TYPE in
(
'bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ',' bgc.tbf.repair.vap', ' bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ',' bgc.cbm ',' bgc.dar.e2etest.preparation', ' bgc.chc.polling '.
)
and cn. STATUS ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and CAST (cn. END_TS AS DATE) > = TO_DATE ('2014-05-06 00:00:00 ',' ' YYYY-MM-DD HH24:MI:SS)
and CAST (cn. END_TS AS DATE) < = TO_DATE ('2014-05-06 23:59:59 ',' ' YYYY-MM-DD HH24:MI:SS)
and cn.ID between the 20141999999999999 AND 20141800000000000
and mreq.ID between the 20141999999999999 AND 20141800000000000
Tips will be may not be necessary (proportional to the cardinalities need)
Select pc.id, pc.dtype, pc.version, pc.external_ref, pc.creation_ts, rq.type
from pas_case
as_request rq,
CN pas_context
where rq.case_id = pc.id
and rq.id = cn.request_id
and rq.dtype = 'MAINREQUEST. '
and rq.type in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution', ' bgc.tbf.repair.vap',
'bgc.dar.e2etest ',' bgc.dar.e2etest.intermediate.execution', ' bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
and cn.status in ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and cn.creation_ts > = to_timestamp ('2014-05-06 00:00:00 ',' yyyy-mm-dd hh24:mi:ss')
and cn.creation_ts<= to_timestamp('2014-05-06="" 23:59:59.999999','yyyy-mm-dd="">=>
-2nd request
with
main_request as
(select / * + materialize * /)
CN.ID as context_id, rq.type as main_req_type
of pas_request rq
Join
CN pas_context
On rq.id = cn.request_id
and rq.dtype = 'MAINREQUEST. '
and rq.type in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution', ' bgc.chc.polling',
'bgc.tbf.repair.vap ',' bgc.dar.e2etest', ' bgc.dar.e2etest.intermediate.execution ',.
'bgc.cbm ','bgc.dar.e2etest.preparation '.
)
and cn.status in ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and cn.end_ts > = to_timestamp ('2014-05-06 00:00:00 ',' yyyy-mm-dd hh24:mi:ss')
and cn.end_ts<= to_timestamp('2014-05-06="" 23:59:59.999999','yyyy-mm-dd="">=>
and cn.id between 20141800000000000 and 20141999999999999
and rq.id between 20141800000000000 and 20141999999999999
)
Select ra.id, ra.version, ra.request_id, ra.name, ra.value, ra.lob_id, ra.dtype, ra.creation_ts, task.main_req_type
of pas_requestattribute ra
Join
(select tsk.id, tsk.type, main_req.main_req_type
from pas_request tsk
Join
main_request main_req
On tsk.parent_context_id = main_req.context_id
and tsk.dtype in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.id between $$ low_id1 and $$ high_id1
) task
We ra.request_id = task.id
and ra.id between $$ low_id1 and $$ high_id1
Union
Select ra.id, ra.version, ra.request_id, ra.name, ra.value, ra.lob_id, ra.dtype, ra.creation_ts, main_req.type
of pas_requestattribute ra
Join
main_request main_req
On ra.request_id = main_req.context_id
-3rd request
Select rb.id, rb.dtype, rb.version, rb.type, rb.creation_ts, rb.task_id, rb.color, rb.global_result, task.main_req_type
of pas_resultblock rb
Join
(select tsk.id, tsk.type, main_req.main_req_type
from pas_request tsk
Join
(select cn.id as context_id, rq.type as main_req_type
of pas_request rq
Join
CN pas_context
On rq.id = cn.request_id
and rq.dtype = 'MAINREQUEST. '
and rq.type in ('bgc.dar.vap.resolution.advice ','bgc.dar.e2etest.execution ',
'bgc.tbf.repair.vap ','bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ','bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
and cn.status in ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and cn.end_ts > = to_timestamp ('2014-05-06 00:00:00 ',' yyyy-mm-dd hh24:mi:ss')
and cn.end_ts<= to_timestamp('2014-05-06="" 23:59:59.999999','yyyy-mm-dd="">=>
and cn.id between 20141800000000000 and 20141999999999999
and rq.id between 20141800000000000 and 20141999999999999
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk.dtype in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.id between $$ low_id1 and $$ high_id1
) task
We rb.task_id = task.id
and rb.id between $$ low_id1 and $$ high_id1
where the type is null
or (type is not null
type in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution ', ' bgc.tbf.repair.vap',
'bgc.dar.e2etest ',' bgc.dar.e2etest.intermediate.execution', ' bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
)
-4th query
Select ri.id, ri.dtype, ri.version, ri.resultblock_id, ri.name, ri.value, ri.unit, ri.color, ri.lob_id.
RI.creation_ts, RI. Sequence, RI. DetailLevel, res_blk.main_req_type
of pas_resultitem ri
Join
(select rb.id, rb.type as rb_type, task.type as task_type, task.main_req_type)
of pas_resultblock rb
Join
(select main_req_type, tsk.id, tsk.type, main_req.)
from pas_request tsk
Join
(select cn.id as context_id, rq.type as main_req_type
of pas_request rq
Join
CN pas_context
On rq.id = cn.request_id
and rq.dtype = 'MAINREQUEST. '
and rq.type in ('bgc.dar.vap.resolution.advice ','bgc.dar.e2etest.execution ',
'bgc.tbf.repair.vap ','bgc.dar.e2etest ',.
'bgc.dar.e2etest.intermediate.execution ','bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
and cn.status in ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and cn.end_ts > = to_timestamp ('2014-05-06 00:00:00 ',' yyyy-mm-dd hh24:mi:ss')
and cn.end_ts<= to_timestamp('2014-05-06="" 23:59:59.999999','yyyy-mm-dd="">=>
and cn.id between 20141800000000000 and 20141999999999999
and rq.id between 20141800000000000 and 20141999999999999
) main_req
On tsk.parent_context_id = main_req.context_id
and tsk.dtype in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.id between 20141800000000000 and 20141999999999999
) task
We rb.task_id = task.id
and rb.id between 20141800000000000 and 20141999999999999
and rb.type in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution', ' bgc.tbf.repair.vap',
'bgc.dar.e2etest ',' bgc.dar.e2etest.intermediate.execution', ' bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
) res_blk
On ri.resultblock_id = res_blk.id
and ri.id between 20141800000000000 and 20141999999999999
where ri.name is null
or (ri.name is not null
and ri.name in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution', ' bgc.tbf.repair.vap',
'bgc.dar.e2etest ',' bgc.dar.e2etest.intermediate.execution', ' bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
)
-5th application
with
main_request as
(select / * + materialize * / )
mreq.ID, mreq.version, mreq.dtype, mreq.case_id, mreq.type, mreq.correlation_id, mreq. Initiator, mreq. Executor,
mreq. Category, mreq.parent_context_id, mreq.creation_ts, mreq.type
of pas_request mreq
Join
CN pas_context
On mreq.id = cn.request_id
and mreq.dtype = 'MAINREQUEST. '
and mreq.type in ('bgc.dar.vap.resolution.advice ',' bgc.dar.e2etest.execution', ' bgc.tbf.repair.vap',
'bgc.dar.e2etest ',' bgc.dar.e2etest.intermediate.execution', ' bgc.cbm ',.
'bgc.dar.e2etest.preparation ','bgc.chc.polling '.
)
and cn.status in ('FINISHED', 'CANCEL', 'TIMEOUT', 'ERROR')
and cn.end_ts > = to_timestamp ('2014-05-06 00:00:00 ',' yyyy-mm-dd hh24:mi:ss')
and cn.end_ts<= to_timestamp('2014-05-06="" 23:59:59.999999','yyyy-mm-dd="">=>
and cn.id between 20141800000000000 and 20141999999999999
and mreq.id between 20141800000000000 and 20141999999999999
)
Select tsk.id, tsk.version, tsk.dtype, tsk.case_id, tsk.type, tsk.correlation_id, tsk.initiator, tsk.executor,
TSK. Category, tsk.parent_context_id, tsk.creation_ts, main_req.main_req_type
from pas_request tsk
Join
main_request main_req
On tsk.parent_context_id = main_req.id
and tsk.dtype in ('ANALYSIS_TASK', 'DECISION_TASK')
and tsk.id between $$ low_id1 and $$ high_id1
Union
SELECT id, version, dtype, case_id, type, correlation_id, initiator, executor,
category, type parent_context_id, creation_ts
of main_request
Concerning
Etbin
-
Performance issue with the Update statement
Oracle 10204
I have a problem related to updaing one performance table.
only 5000 lines should be updated.
Hir are some details on the tables/M.V concerned:
I tried to run the update with two options:TABLE_NAME LAST_ANALYZED NUM_ROWS SAMPLE_SIZE PS_RF_INST_PROD 1/20/2010 1:14:22 AM 7194402 7194402 BL_TMP_INTRNT 1/27/2010 9:08:54 AM 885445 885445 NAP_INTERNET 1/25/2010 11:47:02 AM 7053990 560777
1. with the plan than oracle choose.
2. with notes I added.
In both cases I he collapsed after more than an hour.
Can any one suggest how to speed it up?
Below are for the two option tkprof.
Plan 1Please note that beside the defualt statistics on those tables i also gathered statistics on two column level as followed: BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS ( OwnName => 'B' ,TabName => 'BL_TMP_INTRNT' ,Estimate_Percent => 100 ,Degree => 8 ,Cascade => TRUE ,No_Invalidate => FALSE); END; / exec dbms_stats.gather_table_stats('B' , 'BL_TMP_INTRNT', cascade=>TRUE, method_opt=>'for columns SERVICE_UID size 254'); exec dbms_stats.gather_table_stats('B' , 'BL_TMP_INTRNT', cascade=>TRUE, method_opt=>'for columns FIX_IP_USER size 254');
plan 2UPDATE BL_TMP_INTRNT A SET A.FIX_IP_USER = (SELECT C.PRODUCT_ID FROM NAP_INTERNET B, PS_RF_INST_PROD C WHERE B.INST_PROD_ID = A.SERVICE_UID AND B.SETID = 'SHARE' AND C.INST_PROD_ID = B.NAP_SURF_UID) WHERE A.TERM_DESC LIKE '%ip%' call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.03 0.02 0 0 0 0 Execute 1 1166.64 4803.78 17989002 18792167 117 0 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 2 1166.67 4803.81 17989002 18792167 117 0 Misses in library cache during parse: 1 Optimizer mode: FIRST_ROWS Parsing user id: 13 Rows Row Source Operation ------- --------------------------------------------------- 0 UPDATE BL_TMP_INTRNT (cr=0 pr=0 pw=0 time=2 us) 46 TABLE ACCESS FULL BL_TMP_INTRNT (cr=586400 pr=22228 pw=0 time=15333652 us) 15 HASH JOIN (cr=18170453 pr=17931639 pw=0 time=3991064192 us) 46 MAT_VIEW ACCESS FULL NAP_INTERNET (cr=5659886 pr=5655436 pw=0 time=988162557 us) 329499624 MAT_VIEW ACCESS FULL PS_RF_INST_PROD (cr=12545734 pr=12311281 pw=0 time=2636471644 us)
UPDATE BL_TMP_INTRNT A SET A.FIX_IP_USER = (SELECT /*+ index(b NAP_INTERNET_PK) index(c PS_RF_INST_PROD_PK)*/ C.PRODUCT_ID FROM NAP_INTERNET B, PS_RF_INST_PROD C WHERE B.INST_PROD_ID = A.SERVICE_UID AND B.SETID = 'SHARE' AND C.INST_PROD_ID = B.NAP_SURF_UID) WHERE A.TERM_DESC LIKE '%ip%' call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.02 0.02 0 0 0 0 Execute 1 4645.25 4613.70 95783 39798095 735 0 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 2 4645.27 4613.73 95783 39798095 735 0 Misses in library cache during parse: 1 Optimizer mode: FIRST_ROWS Parsing user id: 13 Rows Row Source Operation ------- --------------------------------------------------- 0 UPDATE BL_TMP_INTRNT (cr=0 pr=0 pw=0 time=1 us) 473 TABLE ACCESS FULL BL_TMP_INTRNT (cr=10461 pr=10399 pw=0 time=4629385 us) 408 MAT_VIEW ACCESS BY INDEX ROWID PS_RF_INST_PROD (cr=39776109 pr=85381 pw=0 time=4605125045 us) 1350 NESTED LOOPS (cr=39784584 pr=84974 pw=0 time=4601874262 us) 470 MAT_VIEW ACCESS BY INDEX ROWID NAP_INTERNET (cr=23569112 pr=50472 pw=0 time=2544364336 us) 470 INDEX FULL SCAN NAP_INTERNET_PK (cr=23568642 pr=50005 pw=0 time=2540300981 us)(object id 11027362) 408 INDEX FULL SCAN PS_RF_INST_PROD_PK (cr=16215472 pr=34502 pw=0 time=2057500175 us)(object id 10980137) Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ db file scattered read 1300 0.50 4.27 db file sequential read 85707 0.51 29.88 latch: cache buffers chains 1 0.00 0.00 log file sync 1 0.00 0.00 SQL*Net break/reset to client 1 0.00 0.00 SQL*Net message to client 1 0.00 0.00 SQL*Net message from client 1 14.73 14.73 ********************************************************************************
The problem in your update statement that is the query in your set clause is executed many times that there are lines in BL_TMP_INTRNT of 'intellectual property' in their column of term_desc. You mentioned there are about 5000, then the query joining NAP_INTERNET with PS_RF_ISNT_PROD is begun 5000 times.
The trick is to join only once, be updated using join views - provided that it is preserved - key or by using the merge statement.Here is an example:
SQL> create table bl_tmp_intrnt (fix_ip_user,service_uid,term_desc) 2 as 3 select level 4 , level 5 , 'aipa' 6 from dual 7 connect by level <= 5000 8 / Tabel is aangemaakt. SQL> create table nap_internet (inst_prod_id,setid,nap_surf_uid) 2 as 3 select level 4 , 'SHARE' 5 , level 6 from dual 7 connect by level <= 10 8 / Tabel is aangemaakt. SQL> create table ps_rf_inst_prod (product_id,inst_prod_id) 2 as 3 select level 4 , level 5 from dual 6 connect by level <= 10 7 / Tabel is aangemaakt. SQL> exec dbms_stats.gather_table_stats(user,'bl_tmp_intrnt') PL/SQL-procedure is geslaagd. SQL> exec dbms_stats.gather_table_stats(user,'nap_internet') PL/SQL-procedure is geslaagd. SQL> exec dbms_stats.gather_table_stats(user,'ps_rf_inst_prod') PL/SQL-procedure is geslaagd. SQL> set serveroutput off SQL> update ( select a.fix_ip_user 2 , c.product_id 3 from bl_tmp_intrnt a 4 , nap_internet b 5 , ps_rf_inst_prod c 6 where a.term_desc like '%ip%' 7 and a.service_uid = b.inst_prod_id 8 and b.setid = 'SHARE' 9 and b.nap_surf_uid = c.inst_prod_id 10 ) 11 set fix_ip_user = product_id 12 / set fix_ip_user = product_id * FOUT in regel 11: .ORA-01779: cannot modify a column which maps to a non key-preserved table
Join is one key kept in the case of b.inst_prod_id and c.inst_prod_id are unique. Please refer to the documentation for more information here: http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/views.htm#sthref3055
SQL> alter table nap_internet add primary key (inst_prod_id) 2 / Tabel is gewijzigd. SQL> alter table ps_rf_inst_prod add primary key (inst_prod_id) 2 / Tabel is gewijzigd. SQL> update /*+ gather_plan_statistics */ 2 ( select a.fix_ip_user 3 , c.product_id 4 from bl_tmp_intrnt a 5 , nap_internet b 6 , ps_rf_inst_prod c 7 where a.term_desc like '%ip%' 8 and a.service_uid = b.inst_prod_id 9 and b.setid = 'SHARE' 10 and b.nap_surf_uid = c.inst_prod_id 11 ) 12 set fix_ip_user = product_id 13 / 10 rijen zijn bijgewerkt. SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')) 2 / PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------- SQL_ID c7nqbxwzpyq5p, child number 0 ------------------------------------- update /*+ gather_plan_statistics */ ( select a.fix_ip_user , c.product_id from bl_tmp_intrnt a , nap_internet b , ps_rf_inst_prod c where a.term_desc like '%ip%' and a.service_uid = b.inst_prod_id and b.setid = 'SHARE' and b.nap_surf_uid = c.inst_prod_id ) set fix_ip_user = product_id Plan hash value: 1745632149 --------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | --------------------------------------------------------------------------------------------------------------------------------------- | 1 | UPDATE | BL_TMP_INTRNT | 1 | | 0 |00:00:00.01 | 32 | | | | | 2 | NESTED LOOPS | | 1 | 10 | 10 |00:00:00.01 | 21 | | | | | 3 | MERGE JOIN | | 1 | 10 | 10 |00:00:00.01 | 9 | | | | |* 4 | TABLE ACCESS BY INDEX ROWID| NAP_INTERNET | 1 | 10 | 10 |00:00:00.01 | 2 | | | | | 5 | INDEX FULL SCAN | SYS_C00132995 | 1 | 10 | 10 |00:00:00.01 | 1 | | | | |* 6 | SORT JOIN | | 10 | 250 | 10 |00:00:00.01 | 7 | 267K| 256K| 237K (0)| |* 7 | TABLE ACCESS FULL | BL_TMP_INTRNT | 1 | 250 | 5000 |00:00:00.01 | 7 | | | | | 8 | TABLE ACCESS BY INDEX ROWID | PS_RF_INST_PROD | 10 | 1 | 10 |00:00:00.01 | 12 | | | | |* 9 | INDEX UNIQUE SCAN | SYS_C00132996 | 10 | 1 | 10 |00:00:00.01 | 2 | | | | --------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 4 - filter("B"."SETID"='SHARE') 6 - access("A"."SERVICE_UID"="B"."INST_PROD_ID") filter("A"."SERVICE_UID"="B"."INST_PROD_ID") 7 - filter("A"."TERM_DESC" LIKE '%ip%') 9 - access("B"."NAP_SURF_UID"="C"."INST_PROD_ID") 32 rijen zijn geselecteerd. SQL> rollback 2 / Rollback is voltooid.
And it's your current statement. Please note the number of 5000 in the column begins:
SQL> UPDATE /*+ gather_plan_statistics */ BL_TMP_INTRNT A 2 SET A.FIX_IP_USER = 3 (SELECT C.PRODUCT_ID 4 FROM NAP_INTERNET B, PS_RF_INST_PROD C 5 WHERE B.INST_PROD_ID = A.SERVICE_UID 6 AND B.SETID = 'SHARE' 7 AND C.INST_PROD_ID = B.NAP_SURF_UID) 8 WHERE A.TERM_DESC LIKE '%ip%' 9 / 5000 rijen zijn bijgewerkt. SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')) 2 / PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------- SQL_ID f1qtnpa0nmbh8, child number 0 ------------------------------------- UPDATE /*+ gather_plan_statistics */ BL_TMP_INTRNT A SET A.FIX_IP_USER = (SELECT C.PRODUCT_ID FROM NAP_INTERNET B, PS_RF_INST_PROD C WHERE B.INST_PROD_ID = A.SERVICE_UID AND B.SETID = 'SHARE' AND C.INST_PROD_ID = B.NAP_SURF_UID) WHERE A.TERM_DESC LIKE '%ip%' Plan hash value: 3190675455 ----------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | ----------------------------------------------------------------------------------------------------------- | 1 | UPDATE | BL_TMP_INTRNT | 1 | | 0 |00:00:00.10 | 5076 | |* 2 | TABLE ACCESS FULL | BL_TMP_INTRNT | 1 | 250 | 5000 |00:00:00.01 | 7 | | 3 | NESTED LOOPS | | 5000 | 1 | 10 |00:00:00.02 | 24 | |* 4 | TABLE ACCESS BY INDEX ROWID| NAP_INTERNET | 5000 | 1 | 10 |00:00:00.01 | 12 | |* 5 | INDEX UNIQUE SCAN | SYS_C00132995 | 5000 | 1 | 10 |00:00:00.01 | 2 | | 6 | TABLE ACCESS BY INDEX ROWID| PS_RF_INST_PROD | 10 | 10 | 10 |00:00:00.01 | 12 | |* 7 | INDEX UNIQUE SCAN | SYS_C00132996 | 10 | 1 | 10 |00:00:00.01 | 2 | ----------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("A"."TERM_DESC" LIKE '%ip%') 4 - filter("B"."SETID"='SHARE') 5 - access("B"."INST_PROD_ID"=:B1) 7 - access("C"."INST_PROD_ID"="B"."NAP_SURF_UID") 29 rijen zijn geselecteerd.
Kind regards
Rob. -
Performance issue with the submodels
Hello
I'm working on submodels and my requirement needs only one main calling location several specific submodels (a location may have several own submodels, e.g.: US_subtemp1, US_subtemp2, US_subtemp3... in the same way to other locations).
I would like to know is there any performance issue associated with calls in the submodels and on how this decrease in performance can be minimized.
Kind regards
ArvindUse of the submodels with components imported alongside repeated sections in the main template layout is not recommended when the number of repetitions is high and the size of the document is large. BI Publisher optimize the xsl transformation internally, but it is not applied to xsl inside models of void.
One of the extreme scenario is a main model set only a repeating section that matter a submodel of the header and the footer.
A body of the repeating section is defined in the subtemplate. In this scenario, there is no xsl optimization made and you can easily see some differences in performance.As long as you don't need to repeat the layouts of submodels, you don't need to worry about this performance issue.
Thank you
Shinji -
Performance issue with Sub query
Hi all
I have a requirement as there are two tables.
Columns in the table T1
-----------------------------------
enter_time TIMESTAMP - partitioned column
loc_num INDEX of index column-
Table T2
---------------------------
number of loc_num
VARCHAR2 (20) type1
VARCHAR2 (20) type2
Table T1 is to have 30,00000 files
Table T2 is to have 4 records
There is no application between T1 and T2.
Try to get one day date of the T2 based on the results of query sub.
Query:
SELECT * FROM T1
WHEN trunc (enter_time) = July 22, 15 '
and loc_num IN (select loc_num FROM T2 where = "XYZ" type1 and type2 = "PPP");
I tried with the sup of CO-RELEATED query, but it takes more than 30 minutes.
Do you have any idea to rewrite the query to make it faster in this scénarion.
Thanks in advance.
Kind regards
Sanjib
Hello
Columns in the table T1
-----------------------------------
enter_time TIMESTAMP - partitioned column
loc_num INDEX of index column-
Table T2
---------------------------
number of loc_num
VARCHAR2 (20) type1
VARCHAR2 (20) type2
Table T1 is to have 30,00000 files
Table T2 is to have 4 records
Do you have any idea to rewrite the query to make it faster in this scénarion.
Implementation plan would be useful here.
Assuming that enter_time is indexed, you can remove this trunc function.
select * from t1 where enter_time >= to_date('07/22/2015', 'mm/dd/yyyy') and enter_time < to_date('07/22/2015', 'mm/dd/yyyy') + 1 and loc_num in ( select loc_num from t2 where type1='XYZ' and type2='PPP' )
-
Performance issue with the method extract in 11g
I am new to Oracle XML DB. I'm having a problem with an example simple Java application designed to test the response time. I can't find an answer to this question.
It takes about 1/2 second, whenever my Java client makes a call to the method "extract" of XMLType. Extract is called 3 times for each row returned in a result set. It takes 1 1/2 seconds to process 1 line. With a result set of 55 lines, it takes about 1 1/2 minutes to process the entire result set.
It seems to me that an appeal must be get done to retrieve the data from the server to each snippet of time is called. This performance is unacceptable and will not evolve. This seems to be a lazy loading problem that could be treated with the configuration; but I still need to find something specific documented.
Is there something that can be done to solve this problem or is it typical performance?
I use a binary XML storage. I created a XMLIndex; but it made no difference. Does not seem like an indication that much of a difference, since the problem occurs when you access XML different values in the same line...The extract method is implemented in the classes of the JAVA API provided by the Oracle client installation.
Just to clarify things, this forum is related to a feature in the Oracle database. The API you mentioned and you use are provided by another group within Oracle (I think). In addition, the used API .extract does its job fully without communicating with the DB. You can check this to hard code in an XML response and disconnect your computer from the network before you run the logic of analysis and it would continue to operate.
The fact that this method is removed must have something to do with its inefficiency
The disapproval that I mentioned is only in what regards the SQL in the Oracle DB. As noted above, the used API lives under a different set of rules, so I can't speak to that. There is probably a forum for the API, but I haven't been looking.
Back on topic, a possible rewrite for your SQL statement is (untested)
select aex.APPLICATION_NAME, aex.VERSION, aex.EVENT_TYPE, xt.sendingSite, xt.receivingSite, xt.eventID from AUDITED_EVENT_XML aex, XMLTable('/*/MSH' PASSING aex.xml_event_content COLUMNS sendingSite VARCHAR2(20) PATH 'MSH.4/HD.2', receivingSite VARCHAR2(20) PATH 'MSH.6/HD.2', eventID VARCHAR2(20) PATH 'MSH.10' where EVENT_TYPE = ?
If you have problems with this, just after a small sample XML and someone can twist where I was wrong.
-
Potential performance issue with the mobile app
Hello
I'm working on a small mobile project to see how the view system and its performance.
To see what is happening with the objects, I tried the Profiler today and I was surprised to see that the Navigator object does not use view previous instances.
For example if I navigate between 2 displays the browser instead of using the 2 objects already created, it creates each time it's push() function is called.
Maybe there is something that I do not understand that it makes the behavior desired, if so can someone explain it to me please? If this isn't the case, then I'm worried about leaks memory after an intensive use of the views in the app.
I have to make it clear that I do not use any weird code that could disable the browser work properly, my app is less basic at this point and I'm also using weak references on each event listener to avoid problems of memory.
I didn't not try your code, but you could run this question: http://bugs.adobe.com/jira/browse/SDK-28396 , which was set after the beta version.
-Ryan
-
Performance issue with the point of SHUTTLE with 2000 records
Hello
I have a FORM with a SHUTTLE item based on a LOV which is to have about 2000 records.
When I submit this page (CREATE/APPLY the CHANGES), ask it something about 3-4 seconds to submit.
When I delete the SHUTTLE of the form point, the sending process is very fast... say 1 sec...
so it takes more time when we have a SHUTTLE point with 2000 records.
So, how do I fix this perfomance?... any suggestions?
Thank you
DeepakDeepak,
When you have more number of records to select the list, Select Multi, elements of the shuttle, then it will take more time to render the page. In most cases, you cannot remove it.
Check the performance of the underlying query LOV. If it is a complex query, no doubt, you can see his plan to explain and you can enter.
Alternatively, you can move this deadline to the popup page. I want to say, create a custom page to pop up and provide multi select such items from the shuttle on this page. Allow the user to select the point of shuttle options in the popup page and return values selected to main page shape :)
See you soon,.
Hari -
Is anyone else having problems with Windows 8 when your typing and e-mail? For some reason, it comes out constantly to the tile screen while I type making me about starting more.
Hi Chaz,
I thank you for your message and gives us a chance to help you. I see that the Mail app closes while you are typing an email.
Please answer these questions to get a better understanding of the issue.
1 have changes made to your computer before this problem?
2 shut down other applications while they are in use?
3. do you get an error code?You can try these methods to check whether the problem is resolved.
Method 1: Run the troubleshooter of app.
http://download.Microsoft.com/download/F/2/4/F24D0C03-4181-4E5B-A23B-5C3A6B5974E3/apps.diagcab
Open this link to launch the troubleshooter.
Method 2: Update the application.
Method 3: Reinstall the application.
This link has the steps that you can follow to update and reinstall the application.
http://Windows.Microsoft.com/en-us/Windows-8/what-troubleshoot-problems-app
Feel free to use the forum for any other issue of Windows, you may have.
-
problem of installing active sync 6.1 64-bit with active sync. you have a known issue with the compatibility. you have a work around where the way to get these two together?
-
Are there known issues with the help of Dreamweaver CS6 on Yosemite?
Are there known issues with the help of Dreamweaver CS6 on Yosemite? I am considering an upgrade of the Mavericks.
I don't think so I am still using DWCS4 on Yosemite and it runs like a dream, so I think that DWCS6 would be.
-
How can I get my ps 3.0 to install on my laptop? compatibility issues with the new version of windows
It is hopelessly outdated. It is simply not compatible.
Mylenium
-
Performance issue with select only one option
Hello
We have performance problems with the selected component to a choice that we use on our page. As soon as I have one in the drop-down list select downwards, it displays a "BUSY" icon Here is the code of the component I have on my jsff.
Please let me know if you have any suggestions.<af:selectOneChoice id="socInterval" label="Interval" value="#{pageFlowScope.usageMB.selectUsageTrend}" autoSubmit="true"> <f:selectItem id="si023" itemLabel="Hourly" itemValue="Hourly"/> <f:selectItem id="si123" itemLabel="Daily" itemValue="Daily"/> <f:selectItem id="si112" itemLabel="Weekly" itemValue="Weekly"/> <f:selectItem id="si113" itemLabel="Monthly" itemValue="Monthly"/> <f:selectItem id="si1123" itemLabel="Yearly" itemValue="Yearly"/> </af:selectOneChoice>
Thank you and best regards,
KiranWhy meet autoSubmit = "true" for the component?
Are you doing any treatment/PPR on the same? This can cause the problem.Thank you
Nini -
Are there known issues with the decommissioning of a folio to v20 v24 in CS6?
Are there known issues with the decommissioning of an app to v20 in CS6?
our application is v20, we have created the folio initially as v24 but could not get the corresponding app approved by apple, so we rebuilt the folio as a v20 but it errors on the download, ideas?
You will need to completely recreate the folio.
Bob
-
Performance issue with connection of a level query
Hi I have a problem with connection by level in oracle.
My table is:
J_USER_CALENDAR
--------------------------
USER_NAME FROM_DATE TO TO_DATE COMMENTS
-------------------------------------------------------------------------------------------------
Comment1 5 November 09 uma Shankar 2 November 09
Veera 11 November 09 13 November 09 Comment2
Commnet3 17 December 09 uma Shankar 15 December 09
Vinod 20 October 09 21 October 09 Comments4
The table above is the calendar of user authorization.
Now I need to view the users who are on leave between November 1, 2009 to November 30, 2009
The output should look like:
USER_NAME FROM_DATE COMMENTS
---------------------------------------------------------------------------------
Comment1 2 November 09 uma Shankar
Comment1 3 November 09 uma Shankar
Comment1 4 November 09 uma Shankar
Comment1 5 November 09 uma Shankar
Comment2 Veera 11 November 09
Comment2 Veera 12 November 09
Comment2 Veera 13 November 09
For this, I tried with the following query, but it takes too long to run.
Select FROM_DATE, user_name, comments from (SELECT distinct FROM_DATE, user_name,
Comments FROM (SELECT (LEVEL) + FROM_DATE-1 FROM_DATE, TO_DATE, FIRST_NAME |) » '|| LAST_NAME
user_name, COMMENTS OF J_USER_CALENDAR
where
and J_USER_CALENDAR.IS_DELETED = 0
CONNECT BY LEVEL < = TO_DATE - FROM_DATE + 1) has) where ("FROM_DATE = 1st November 2009 ' or FROM_DATE = November 30, 2009")
or FROM_DATE between November 1, 2009 "-November 30, 2009") order of from_Date, lower (user_name)
Please help me.
Thanks in advance.
Kind regards
PhanikanthI have not tried to analyze the SQL statement.
Here is a test set in place:
CREATE TABLE T1( USERNAME VARCHAR2(30), FROM_DATE DATE, TO_DATE DATE, COMMENTS VARCHAR2(100)); INSERT INTO T1 VALUES ('Uma Shankar', '02-Nov-09','05-Nov-09','Comment1'); INSERT INTO T1 VALUES ('Veera','11-Nov-09','13-Nov-09','Comment2'); INSERT INTO T1 VALUES ('Uma Shankar','15-Dec-09','17-Dec-09','Commnet3'); INSERT INTO T1 VALUES ('Vinod','20-Oct-09','21-Oct-09','Comments4'); INSERT INTO T1 VALUES ('Mo','20-Oct-09','05-NOV-09','Comments4'); COMMIT;
Note that I have included an additional line, when the person starts their vacation in the previous month and ends in November.
You could approach the problem like this:
Assume that you want to appear every day in a given month:SELECT TO_DATE('01-NOV-2009','DD-MON-YYYY')+(ROWNUM-1) MONTH_DAY FROM DUAL CONNECT BY LEVEL<=ADD_MONTHS(TO_DATE('01-NOV-2009','DD-MON-YYYY'),1)-TO_DATE('01-NOV-2009','DD-MON-YYYY');
Note that the above attempts to calculate the number of days in the month of November - if we know that the month has a certain number of days, 30 for example, you can rewrite the CONNECT BY clause like this:
CONNECT BY LEVEL<=30
Now, he must pick up lines of interest to the table:
SELECT * FROM T1 T WHERE (T.FROM_DATE BETWEEN TO_DATE('01-NOV-2009','DD-MON-YYYY') AND TO_DATE('30-NOV-2009','DD-MON-YYYY') OR T.TO_DATE BETWEEN TO_DATE('01-NOV-2009','DD-MON-YYYY') AND TO_DATE('30-NOV-2009','DD-MON-YYYY')); USERNAME FROM_DATE TO_DATE COMMENTS --------------- --------- --------- ---------- Uma Shankar 02-NOV-09 05-NOV-09 Comment1 Veera 11-NOV-09 13-NOV-09 Comment2 Mo 20-OCT-09 05-NOV-09 Comments4
If join us then both sets of results, we have the following query:
SELECT * FROM T1 T, (SELECT TO_DATE('01-NOV-2009','DD-MON-YYYY')+(ROWNUM-1) MONTH_DAY FROM DUAL CONNECT BY LEVEL<=ADD_MONTHS(TO_DATE('01-NOV-2009','DD-MON-YYYY'),1)-TO_DATE('01-NOV-2009','DD-MON-YYYY')) V WHERE (T.FROM_DATE BETWEEN TO_DATE('01-NOV-2009','DD-MON-YYYY') AND TO_DATE('30-NOV-2009','DD-MON-YYYY') OR T.TO_DATE BETWEEN TO_DATE('01-NOV-2009','DD-MON-YYYY') AND TO_DATE('30-NOV-2009','DD-MON-YYYY')) AND V.MONTH_DAY BETWEEN T.FROM_DATE AND T.TO_DATE ORDER BY USERNAME, MONTH_DAY; USERNAME FROM_DATE TO_DATE COMMENTS MONTH_DAY --------------- --------- --------- ---------- --------- Mo 20-OCT-09 05-NOV-09 Comments4 01-NOV-09 Mo 20-OCT-09 05-NOV-09 Comments4 02-NOV-09 Mo 20-OCT-09 05-NOV-09 Comments4 03-NOV-09 Mo 20-OCT-09 05-NOV-09 Comments4 04-NOV-09 Mo 20-OCT-09 05-NOV-09 Comments4 05-NOV-09 Uma Shankar 02-NOV-09 05-NOV-09 Comment1 02-NOV-09 Uma Shankar 02-NOV-09 05-NOV-09 Comment1 03-NOV-09 Uma Shankar 02-NOV-09 05-NOV-09 Comment1 04-NOV-09 Uma Shankar 02-NOV-09 05-NOV-09 Comment1 05-NOV-09 Veera 11-NOV-09 13-NOV-09 Comment2 11-NOV-09 Veera 11-NOV-09 13-NOV-09 Comment2 12-NOV-09 Veera 11-NOV-09 13-NOV-09 Comment2 13-NOV-09
Charles Hooper
IT Manager/Oracle DBA
K & M-making Machine, Inc.
Maybe you are looking for
-
Thunderbird is not removing emails from ISP server
Thunderbird is leaving my emails on my server ISP Optus, they are marked as read and left there.
-
Sat Pro 6000 - need DVD decoder
I've owned my trusty Satellite Pro 6000 for nearly 6 years. I had to use the recovery disks, then reformat back to factory settings. Now, I am unable to play DVD? s, I wonder for the decoder. Why this request is doing now? This can be downloaded?
-
Can anyone help. Letters of keyboard double types. that is, when you type s I get ks when I type, I get iw. Shift puts on NumLock SPACEBAR works the nt, nordoes return space group. Also affected by the same problem numers
-
Recovery for Satellite C650-182 CD
Hello I've damaged my hard drive for this machine and need to get a recovery CD to rebuild a new drive, I can't use the old disk, how do I get this CD, such a thng can be done?
-
After the downloaded updates said c disk not found phone # mss is dead please help
After downloading Automatic Updates screen says program top desk on the c drive could not be found. Paid 159.99 for the security of microsoft with the help of phone anytime for 1 year.phone # does not work. What should I do? Have I pulled off .mss on