Need help to reduce execution time for a procedure
the following procedure takes to long to execute and the server times out. each individual select works perfectly. It does not have to do with the SORT_AREA_SIZE/PGA_AGGREGATE_TARGET not being large enough. Possible rewriting it in funcions might help i don't know.
Thanks in advance
PROCEDURE GET_RM_WORKABILITY_BY_PLANT
(p_in_plantcode IN VARCHAR2,
p_in_statusnum IN NUMBER,
p_out_cursor IN OUT tcursor) AS
BEGIN
OPEN p_out_cursor FOR
select comp.segment1,
comp.description,
comp.organization_id,
nvl(sum(jot.qty), 0) job_qty,
nvl(moq.qty, 0) onhand_qty
from (select jdl.bill_sequence_id bsid,
sum(jdl.job_qty) qty
from job_detail_lines jdl
where jdl.job_stat = p_in_statusnum
and jdl.prod_plant_id = p_in_plantcode
group by jdl.bill_sequence_id) jot,
(select m.inventory_item_id,
sum(m.transaction_quantity) qty
from mtl_onhand_quantities m
where exists
(select 'x'
from plant_codes p1,
plant_codes p
where p.plant_code = p_in_plantcode
and p1.fac_id = p.fac_id
and m.organization_id = p1.organization_id)
group by m.inventory_item_id) moq,
(select msi.segment1,
msi.description,
msi.organization_id,
msi.inventory_item_id,
bom.bill_sequence_id
from bom.bom_bill_of_materials bom,
bom.bom_inventory_components bic,
mtl_system_items msi,
plant_codes pc
where pc.plant_code = p_in_plantcode
and msi.organization_id = pc.organization_id
and msi.item_type||'' IN ('PSSRM', 'PSRM')
and bic.component_item_id = msi.inventory_item_id
and ((bic.disable_date IS NULL AND SYSDATE>= bic.effectivity_date)
or (SYSDATE <= bic.disable_date AND SYSDATE >= bic.effectivity_date))
and bom.bill_sequence_id = bic.bill_sequence_id
and bom.organization_id = 102) comp
where moq.inventory_item_id(+) = comp.inventory_item_id
and jot.bsid(+) = comp.bill_sequence_id
group by comp.segment1,
comp.description,
comp.organization_id,
moq.qty;
END;
Ok, so how does it perform if you use the bom info as an in-line query outer join to job detail lines?
SELECT v.plant_code,
v.segment1,
v.description,
v.organization_id,
v.inventory_item_id,
SUM (jdl.job_qty) job_qty
FROM (
SELECT pc.plant_code,
msi.segment1,
msi.description,
msi.organization_id,
msi.inventory_item_id,
bom.bill_sequence_id
FROM bom.bom_bill_of_materials bom,
bom.bom_inventory_components bic,
mtl_system_items msi,
plant_codes pc
WHERE pc.plant_code = p_in_plantcode
AND msi.organization_id = pc.organization_id
AND msi.item_type || '' IN ('PSSRM', 'PSRM')
AND bic.component_item_id = msi.inventory_item_id
AND bic.effectivity_date <= SYSDATE
AND ( bic.disable_date IS NULL
OR bic.disable_date >= SYSDATE)
AND bom.bill_sequence_id = bic.bill_sequence_id
AND bom.organization_id = 102
) v,
job_detail_lines jdl
WHERE jdl.prod_plant_id(+) = v.plant_code
AND jdl.bsid(+) = v.bill_sequence_id
AND jdl.job_stat(+) = p_in_statusnum
GROUP BY
v.plant_code,
v.segment1,
v.description,
v.organization_id,
v.inventory_item_id;
Similar Messages
-
Need help Recording SQL Execution Times in Database
Hello,
I have an interesting thing I am tiring to do. I want to record how much time (Wall Clock) it took the database to execute any select statement against o one particular view lets call it CUST_ORDERS_V.
I would like to record who ran it, what the select statement was (SQL Text) and how much time it took and maybe a few other ancillary things if possible.
Looking at most of my requirements took me right to Oracle Auditing and the SYS.AUD$ table. After setting up auditing with:
audit_trail=db,extended
and
audit select on ME.CUST_ORDERS_V by access;I get every piece of information I need except for the execution time! Wow that would be great if Oracle recorded that!!! So I was thinking if I could. I was considering a trigger on SYS.AUD$ (I know evil thoughts) that would look into some V$ view and get the execution time and write it into some custom table with a link back to SYS.AUD$.
This might be the complete wrong way to do it. I was wondering if anyone had any ideas on this.
I am running on 11.2.0.3 EE. I am on EE so I can use Fine Grained Auditing if it is needed. However I DO NOT have the Tuning or Diagnostic Pack.>
Hi again,
Yes, a complete set of times from end to end would be great. However
for now I need to stick with what is in my domain of control, the database.
Maybe after the DB I will look to get the others.But your point about the operators blaming the db brings up the probability
that after you tell them that the db is not the issue, they'll start to blame
the app server, the cabling, their OS, the browser, the tea-lady...
If you have click===> page, they have no more places to hide and have to
actually work for a living ;)
I do not think I can access v$active_session_history as I do not have the Tuning Pack.Well, presumably there is a business case for this project. Why not tell management
that it's required?
Otherwise, you could go to ashmasters.com - a site run by Kyle Hailey (Oak Table
member and author). He has an Open Source ASH "substitute" which you might
like to try - haven't used it myself, but if Kyle Hailey's behind it, then it's at
least worthy of investigation.
HTH,
Paul... -
Need Help: Dynamically displaying parameter values for a procedure.
Problem Statement: Generic Code should display the parameter values dynamically by taking "package name" and "procedure name" as inputs and the values needs to be obtained from the parameters of the wrapper procedure.
Example:
a) Let us assume that there is an application package called customer.
create or replace package spec customer
as
begin
TYPE cust_in_rec_type IS RECORD
cust_id NUMBER,
,cust_name VARCHAR2(25) );
TYPE cust_role_rec_type IS RECORD
(cust_id NUMBER,
role_type VARCHAR2(20)
TYPE role_tbl_type IS TABLE OF cust_role_rec_type INDEX BY BINARY_INTEGER;
Procedure create_customer
p_code in varchar2
,p_cust_rec cust_in_rec_type
,p_cust_roles role_tbl_type
end;
b) Let us assume that we need to test the create customer procedure in the package.For that various test cases needs to be executed.
c) We have created a testing package as mentioned below.
create or replace package body customer_test
as
begin
-- signature of this wrapper is exactly same as create_customer procedure.
procedure create_customer_wrapper
p_code in varchar2
,p_cust_rec customer.cust_in_rec_type
,p_cust_roles customer.role_tbl_type
as
begin
//<<<<<---Need to display parameter values dynamically for each test case-->>>>>
Since the signature of this wrapper procedure is similar to actual app procedure, we can get all the parameter definition for this procedure using ALL_ARGUMENTS table as mentioned below.
//<<
select * from ALL_ARGUMENTS where package_name = CUSTOMER' and object_name = 'CREATE_CUSTOMER'
but the problem is there are other procedures exists inside customer package like update_customer, add_address so need to have generalized code that is independent of each procedure inside the package.
Is there any way to achieve this.
Any help is appreciated.
// >>>>
create_customer
p_code => p_code
,p_cust_rec => p_cust_rec
,p_cust_roles => p_cust_roles
end;
procedure testcase1
as
l_cust_rec customer.cust_in_rec_type ;
l_cust_roles customer.role_tbl_type;
begin
l_cust_rec.cust_id := 1;
l_cust_rec.cust_name := 'ABC';
l_cust_roles(1).cust_id := 1;
l_cust_roles(1).role_type := 'Role1';
create_customer_wrapper
p_code => 'code1'
,p_cust_rec => l_cust_rec
,p_cust_roles => l_cust_role
end;
procedure testcase2
as
l_cust_rec customer.cust_in_rec_type ;
l_cust_roles customer.role_tbl_type;
begin
l_cust_rec.cust_id := 2;
l_cust_rec.cust_name := 'DEF';
l_cust_roles(1).cust_id := 2;
l_cust_roles(1).role_type := 'Role2';
create_customer_wrapper
p_code => 'code2'
,p_cust_rec => l_cust_rec
,p_cust_roles => l_cust_role
end;
end;Not possible to dynamically in a procedure, deal with the parameter values passed by a caller. There is no struct or interface that a procedure can use to ask the run-time to give it the value of the 1st or 2nd or n parameter.
There could perhaps be some undocumented/unsupported method - as debugging code (<i>DBMS_DEBUG</i>) is able to dynamically reference a variable (see Get_Value() function). But debugging requires a primary session (the debug session) and the target session (session being debugged).
So easy answer is no - the complex answer is.. well, complex as the basic functionality for this do exists in Oracle in its DBMS_DEBUG feature, but only from a special debug session.
The easiest way would be to generate the wrapper itself, dynamically. This allows your to generate code that displays the parameter values and add whatever other code needed into the wrapper. The following example demonstrates the basics of this approach:
SQL> -- // our application proc called FooProc
SQL> create or replace procedure FooProc( d date, n number, s varchar2 ) is
2 begin
3 -- // do some stuff
4 null;
5 end;
6 /
Procedure created.
SQL>
SQL> create or replace type TArgument is object(
2 name varchar2(30),
3 datatype varchar2(30)
4 );
5 /
Type created.
SQL>
SQL> create or replace type TArgumentList is table of TArgument;
2 /
Type created.
SQL>
SQL> -- // create a proc that creates wrappers dynamically
SQL> create or replace procedure GenerateWrapper( procName varchar2 ) is
2 procCode varchar2(32767);
3 argList TArgumentList;
4 begin
5 select
6 TArgument( argument_name, data_type )
7 bulk collect into
8 argList
9 from user_arguments
10 where object_name = upper(procName)
11 order by position;
12
13 procCode := 'create or replace procedure Test'||procName||'( ';
14 for i in 1..argList.Count
15 loop
16 procCode := procCode||argList(i).name||' '||argList(i).datatype;
17 if i < argList.Count then
18 procCode := procCode||', ';
19 end if;
20 end loop;
21
22 procCode := procCode||') as begin ';
23 procCode := procCode||'DBMS_OUTPUT.put_line( '''||procName||''' ); ';
24
25 for i in 1..argList.Count
26 loop
27 procCode := procCode||'DBMS_OUTPUT.put_line( '''||argList(i).name||'=''||'||argList(i).name||' ); ';
28 end loop;
29
30 -- // similarly, a call to the real proc can be added into the test wrapper
31 procCode := procCode||'end;';
32
33 execute immediate procCode;
34 end;
35 /
Procedure created.
SQL>
SQL> -- // generate a wrapper for a FooProc
SQL> exec GenerateWrapper( 'FooProc' );
PL/SQL procedure successfully completed.
SQL>
SQL> -- // call the FooProc wrapper
SQL> exec TestFooProc( sysdate, 100, 'Hello World' )
FooProc
D=2011-01-07 13:11:32
N=100
S=Hello World
PL/SQL procedure successfully completed.
SQL> -
A previous and unrelated text always appears when I need to send a new text. This prevens forwarding texts also, which I need to do all the time for my businss. How can I fix? Please help?
Hi,
This sounds like it is about Window positions.
iChat has Default places for Incoming Invites.
Video is always top Center of your Screen
Audio and Text chats are Upper right with the Audio slightly lower than Text Chats.
Secondary invites are sort of Stacked like when you open multiple files from the same App.
Your outgoing Windows are "Remembered" as to where the last one was when you used it.
This can be an issue if you use your Mac with a second display and turn Off Mirroring.
You windows can get "left" on the other screen.
Go to System Preferences > Displays and turn On Mirroring and the windows should come back to one Screen/display.
If this does not help go to your Home Folder/Library/Preferences and delete (Drag to Trash) com.apple.ichat.plist and restart iChat.
Unfortunately you will need to reset any iChat Preferences you have changed from defaults.
10:42 PM Tuesday; April 26, 2011
Please, if posting Logs, do not post any Log info after the line "Binary Images for iChat"
G4/1GhzDual MDD (Leopard 10.5.8)
MacBookPro 2Gb( 10.6.7)
, Mac OS X (10.6.7),
"Limit the Logs to the Bits above Binary Images." No, Seriously -
Can I reduce the execution time for a step in a TestStand ?
Hi,
I calculated the a single step execution time for TestStand Ver 2.0. It comes to around 20 milliseconds/step. Can I reduce this excution time ?
Are there any settings available for configuring execution time parameters except result logging and exception handlings to reduce the execution time ?It's difficult to tell how you what time you are reporting for your step. Clearly we don't have control of the time it takes your code to execute. However, we are constantly working on reducing the overhead of calling the code. In addition, you don't mention the type of step you are calling. One way to have a common reference is to use the example \Examples\Benchmarks\Benchmarks.seq. Below have have posted the results of running this sequence with both tracing and result collection enabled and then disabled. I have a 700 MHz, 128 MB RAM, Dell PIII laptop. In this example there is no code within the code modules. You notice that calling a DLL has the least overhead with a minimum of 7.459 ms with tracing and results enabled and 0.092 ms with tracing and results disabled. Although not included below, if I enable results be disable tracing I get a minimum time of 0.201 ms, a 100x improvement on your time.
With Results and Tracing enabled.
7.578 milliseconds per step for CVI Standard Prototype - Object File
7.579 milliseconds per step for CVI Standard Prototype - DLL
7.459 milliseconds per step for DLL Flexible Prototype
8.589 milliseconds per step for DLL Flexible Prototype Numeric Limit
9.563 milliseconds per step for DLL Flexible Prototype Numeric Limit with Precondition
10.015 milliseconds per step for DLL Flexible Prototype Numeric Limit with Precondition and 4 Parameters
7.868 milliseconds per step for ActiveX Automation
8.892 milliseconds per step for LabVIEW Standard Prototype
With tracing and results disabled.
0.180 milliseconds per step for CVI Standard Prototype - Object File
0.182 milliseconds per step for CVI Standard Prototype - DLL
0.092 milliseconds per step for DLL Flexible Prototype
0.178 milliseconds per step for DLL Flexible Prototype Numeric Limit
0.277 milliseconds per step for DLL Flexible Prototype Numeric Limit with Precondition
0.400 milliseconds per step for DLL Flexible Prototype Numeric Limit with Precondition and 4 Parameters
0.270 milliseconds per step for ActiveX Automation
1.235 milliseconds per step for LabVIEW Standard Prototype -
How to reduce execution time ?
Hi friends...
I have created a report to display vendor opening balances,
total debit ,total credit , total balance & closing balance for the given date range. it is working fine .But it takes more time to execute . How can I reduce execution time ?
Plz help me. It's a very urgent report...
The coding is as below.....
report yfiin_rep_vendordetail no standard page heading.
tables : bsik,bsak,lfb1,lfa1.
type-pools : slis .
--TABLE STRUCTURE--
types : begin of tt_bsik,
bukrs type bukrs,
lifnr type lifnr,
budat type budat,
augdt type augdt,
dmbtr type dmbtr,
wrbtr type wrbtr,
shkzg type shkzg,
hkont type hkont,
bstat type bstat_d ,
prctr type prctr,
name1 type name1,
end of tt_bsik,
begin of tt_lfb1,
lifnr type lifnr,
mindk type mindk,
end of tt_lfb1,
begin of tt_lfa1,
lifnr type lifnr,
name1 type name1,
ktokk type ktokk,
end of tt_lfa1,
begin of tt_opbal,
bukrs type bukrs,
lifnr type lifnr,
gjahr type gjahr,
belnr type belnr_d,
budat type budat,
bldat type bldat,
waers type waers,
dmbtr type dmbtr,
wrbtr type wrbtr,
shkzg type shkzg,
blart type blart,
monat type monat,
hkont type hkont,
bstat type bstat_d ,
prctr type prctr,
name1 type name1,
tdr type dmbtr,
tcr type dmbtr,
tbal type dmbtr,
end of tt_opbal,
begin of tt_bs ,
bukrs type bukrs,
lifnr type lifnr,
name1 type name1,
prctr type prctr,
tbal type dmbtr,
bala type dmbtr,
balb type dmbtr,
balc type dmbtr,
bald type dmbtr,
bale type dmbtr,
gbal type dmbtr,
end of tt_bs.
************WORK AREA DECLARATION *********************
data : gs_bsik type tt_bsik,
gs_bsak type tt_bsik,
gs_lfb1 type tt_lfb1,
gs_lfa1 type tt_lfa1,
gs_ageing type tt_ageing,
gs_bs type tt_bs,
gs_opdisp type tt_bs,
gs_final type tt_bsik,
gs_opbal type tt_opbal,
gs_opfinal type tt_opbal.
************INTERNAL TABLE DECLARATION*************
data : gt_bsik type standard table of tt_bsik,
gt_bsak type standard table of tt_bsik,
gt_lfb1 type standard table of tt_lfb1,
gt_lfa1 type standard table of tt_lfa1,
gt_ageing type standard table of tt_ageing,
gt_bs type standard table of tt_bs,
gt_opdisp type standard table of tt_bs,
gt_final type standard table of tt_bsik,
gt_opbal type standard table of tt_opbal,
gt_opfinal type standard table of tt_opbal.
ALV DECLARATIONS *******************
data : gs_fcat type slis_fieldcat_alv ,
gt_fcat type slis_t_fieldcat_alv ,
gs_sort type slis_sortinfo_alv,
gs_fcats type slis_fieldcat_alv ,
gt_fcats type slis_t_fieldcat_alv.
**********global data declration***************
data : kb type dmbtr ,
return like bapireturn ,
balancespgli like bapi3008-bal_sglind,
noteditems like bapi3008-ntditms_rq,
keybalance type table of bapi3008_3 with header line,
opbalance type p.
SELECTION SCREEN DECLARATIONS *********************
selection-screen begin of block b1 with frame .
select-options : so_bukrs for bsik-bukrs obligatory,
so_lifnr for bsik-lifnr,
so_hkont for bsik-hkont,
so_prctr for bsik-prctr ,
so_mindk for lfb1-mindk,
so_ktokk for lfa1-ktokk.
selection-screen end of block b1.
selection-screen : begin of block b1 with frame.
parameters : p_rb1 radiobutton group rad1 .
select-options : so_date for sy-datum .
selection-screen : end of block b1.
********************************ASSIGNING ALV GRID
****field catalog for balance report
gs_fcats-col_pos = 1.
gs_fcats-fieldname = 'BUKRS'.
gs_fcats-seltext_m = text-001.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 2 .
gs_fcats-fieldname = 'LIFNR'.
gs_fcats-seltext_m = text-002.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 3.
gs_fcats-fieldname = 'NAME1'.
gs_fcats-seltext_m = text-003.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 4.
gs_fcats-fieldname = 'BALC'.
gs_fcats-seltext_m = text-016.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 5.
gs_fcats-fieldname = 'BALA'.
gs_fcats-seltext_m = text-012.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 6.
gs_fcats-fieldname = 'BALB'.
gs_fcats-seltext_m = text-013.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 7.
gs_fcats-fieldname = 'TBAL'.
gs_fcats-seltext_m = text-014.
append gs_fcats to gt_fcats .
gs_fcats-col_pos = 8.
gs_fcats-fieldname = 'GBAL'.
gs_fcats-seltext_m = text-015.
append gs_fcats to gt_fcats .
data : repid1 type sy-repid.
repid1 = sy-repid.
INITIALIZATION EVENTS ******************************
initialization.
*Clearing the work area.
clear gs_bsik.
Refreshing the internal tables.
refresh gt_bsik.
******************START OF SELECTION EVENTS **************************
start-of-selection.
*get data for balance report.
perform sub_openbal.
perform sub_openbal_display.
*& Form sub_openbal
text
--> p1 text
<-- p2 text
form sub_openbal .
if so_date-low > sy-datum or so_date-high > sy-datum .
message i005(yfi02).
leave screen.
endif.
select bukrs lifnr gjahr belnr budat bldat
waers dmbtr wrbtr shkzg blart monat hkont prctr
from bsik into table gt_opbal
where bukrs in so_bukrs and lifnr in so_lifnr
and hkont in so_hkont and prctr in so_prctr
and budat in so_date .
select bukrs lifnr gjahr belnr budat bldat
waers dmbtr wrbtr shkzg blart monat hkont prctr
from bsak appending table gt_opbal
for all entries in gt_opbal
where lifnr = gt_opbal-lifnr
and budat in so_date .
if sy-subrc <> 0.
message i007(yfi02).
leave screen.
endif.
select lifnr mindk from lfb1 into table gt_lfb1
for all entries in gt_opbal
where lifnr = gt_opbal-lifnr and mindk in so_mindk.
select lifnr name1 ktokk from lfa1 into table gt_lfa1
for all entries in gt_opbal
where lifnr = gt_opbal-lifnr and ktokk in so_ktokk.
loop at gt_opbal into gs_opbal .
loop at gt_lfb1 into gs_lfb1 where lifnr = gs_opbal-lifnr.
loop at gt_lfa1 into gs_lfa1 where lifnr = gs_opbal-lifnr.
gs_opfinal-bukrs = gs_opbal-bukrs.
gs_opfinal-lifnr = gs_opbal-lifnr.
gs_opfinal-gjahr = gs_opbal-gjahr.
gs_opfinal-belnr = gs_opbal-belnr.
gs_opfinal-budat = gs_opbal-budat.
gs_opfinal-bldat = gs_opbal-bldat.
gs_opfinal-waers = gs_opbal-waers.
gs_opfinal-dmbtr = gs_opbal-dmbtr.
gs_opfinal-wrbtr = gs_opbal-wrbtr.
gs_opfinal-shkzg = gs_opbal-shkzg.
gs_opfinal-blart = gs_opbal-blart.
gs_opfinal-monat = gs_opbal-monat.
gs_opfinal-hkont = gs_opbal-hkont.
gs_opfinal-prctr = gs_opbal-prctr.
gs_opfinal-name1 = gs_lfa1-name1.
if gs_opbal-shkzg = 'H'.
gs_opfinal-tcr = gs_opbal-dmbtr * -1.
gs_opfinal-tdr = '000000'.
else.
gs_opfinal-tdr = gs_opbal-dmbtr.
gs_opfinal-tcr = '000000'.
endif.
append gs_opfinal to gt_opfinal.
endloop.
endloop.
endloop.
sort gt_opfinal by bukrs lifnr prctr .
so_date-low = so_date-low - 1 .
loop at gt_opfinal into gs_opfinal.
call function 'BAPI_AP_ACC_GETKEYDATEBALANCE'
exporting
companycode = gs_opfinal-bukrs
vendor = gs_opfinal-lifnr
keydate = so_date-low
balancespgli = ' '
noteditems = ' '
importing
return = return
tables
keybalance = keybalance.
clear kb .
loop at keybalance .
kb = keybalance-lc_bal + kb .
endloop.
gs_opdisp-balc = kb.
gs_opdisp-bukrs = gs_opfinal-bukrs.
gs_opdisp-lifnr = gs_opfinal-lifnr.
gs_opdisp-name1 = gs_opfinal-name1.
at new lifnr .
sum .
gs_opfinal-tbal = gs_opfinal-tdr + gs_opfinal-tcr .
gs_opdisp-tbal = gs_opfinal-tbal.
gs_opdisp-bala = gs_opfinal-tdr .
gs_opdisp-balb = gs_opfinal-tcr .
gs_opdisp-gbal = keybalance-lc_bal + gs_opfinal-tbal .
append gs_opdisp to gt_opdisp.
endat.
clear gs_opdisp.
clear keybalance .
endloop.
delete adjacent duplicates from gt_opdisp.
endform. " sub_openbal
*& Form sub_openbal_display
text
--> p1 text
<-- p2 text
form sub_openbal_display .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = repid1
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = gt_fcats
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
it_events =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = gt_opdisp
exceptions
program_error = 1
others = 2
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " sub_openbal_displayI think you are using for all entries statement in almost all select statements but i didnt see any condtion before you are using for all entries statement.
If you are using for all entries in gt_opbal ... make sure that gt_opbal has some records other wise it will try to read all records from the data base tables.
Try to check before using for all entries in the select statement like
if gt_opbal is not initial.
select adfda adfadf afdadf into table
for all entries in gt_opbal.
else.
select abdf afad into table
from abcd
where a = 1
and b = 2.
endif.
i didnt see anything wrong in your report but this is major time consuming when you dont have records in the table which you are using for all entries. -
Query Database: reduce execution time
Hi to all,
I have Oracle 11g R2.
I want reduce to max the execution time of this my select:
SELECT a.ID, a.FULLNAME, a.L_AXON, a.R_AXON, a.L_LAXON, a.R_LAXON, a.L_F_F_ADD, a.R_F_F_ADD, a.L_T_F_ADD, a.R_T_F_ADD, a.L_PC, a.R_PC FROM ITALIA_GC a WHERE SDO_WITHIN_DISTANCE(a.GEOMETRY, MDSYS.SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(13.8268523, 41.491619, NULL) ,NULL, NULL), 'DISTANCE=100 UNIT=M') = 'TRUE' AND ROWNUM=1;
This query returns the name, city, postal code and address of a street of Italy. These datas are in ITALIA_GC table.
I already created an spatial index on GEOMETRY field of this table:
CREATE INDEX ITALIA_GC_IDX ON ITALIA_GC(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
How can I see the execution time (i need to know the execution time in milliseconds) of this query and how can I reduce to max it?
thank you very much in advance.
CrystalThank you.
I used explain plan and SQL*Trace/tkprof method.
What I would like to know is if the execution time are misured in seconds or milliseconds (I wish to know misure in millisecond).
The result of SQL*Trace/tkprof method is:
TKPROF: Release 11.2.0.1.0 - Development on Tue Jul 27 15:33:28 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Trace file: dbuir_ora_29053.trc
Sort options: prsela exeela fchela
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
SQL ID: 1bf1x0q79c1rm
Plan Hash: 2374671442
SELECT a.ID, a.FULLNAME, a.L_AXON, a.R_AXON, a.L_LAXON, a.R_LAXON,
a.L_F_F_ADD, a.R_F_F_ADD, a.L_T_F_ADD, a.R_T_F_ADD, a.L_PC, a.R_PC
FROM
ITALIA_GC a WHERE SDO_WITHIN_DISTANCE(a.GEOMETRY, MDSYS.SDO_GEOMETRY(2001,
8307, MDSYS.SDO_POINT_TYPE(13.8268523, 41.491619, NULL) ,NULL, NULL),
'DISTANCE=100 UNIT=M') = 'TRUE' AND ROWNUM=1
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.02 0 30 2 0
Fetch 2 0.00 0.00 0 14 0 1
total 4 0.00 0.02 0 44 2 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 85
Rows Row Source Operation
1 COUNT STOPKEY (cr=110 pr=0 pw=0 time=0 us)
1 TABLE ACCESS BY INDEX ROWID ITALIA_GC (cr=110 pr=0 pw=0 time=0 us cost=0 size=4142 card=1)
1 DOMAIN INDEX ITALIA_GC_IDX (cr=109 pr=0 pw=0 time=0 us cost=0 size=0 card=0)
SQL ID: 20y2xs9zmrbc5
Plan Hash: 4105568395
SELECT a."GEOMETRY"
FROM
"SPATIAL".ITALIA_GC a where a.rowid=:rid
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 20 0.00 0.00 0 0 0 0
Fetch 20 0.00 0.00 0 20 0 20
total 41 0.00 0.00 0 20 0 20
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 85 (recursive depth: 1)
Rows Row Source Operation
1 TABLE ACCESS BY USER ROWID ITALIA_GC (cr=1 pr=0 pw=0 time=0 us cost=1 size=3831 card=1)
SQL ID: 9pxc8jgf3tj20
Plan Hash: 1946957531
SELECT diminfo, nvl(srid,-1)
FROM
ALL_SDO_GEOM_METADATA WHERE OWNER = :own AND TABLE_NAME = NLS_UPPER(:tab)
AND '"'||COLUMN_NAME||'"' = :col
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 9 0 1
total 3 0.00 0.00 0 9 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 85 (recursive depth: 1)
Rows Row Source Operation
1 VIEW ALL_SDO_GEOM_METADATA (cr=9 pr=0 pw=0 time=0 us cost=25 size=654 card=2)
1 UNION-ALL (cr=9 pr=0 pw=0 time=0 us)
1 MERGE JOIN CARTESIAN (cr=9 pr=0 pw=0 time=0 us cost=6 size=81 card=1)
1 VIEW ALL_OBJECTS (cr=7 pr=0 pw=0 time=0 us cost=5 size=45 card=1)
1 FILTER (cr=7 pr=0 pw=0 time=0 us)
1 FILTER (cr=7 pr=0 pw=0 time=0 us)
1 NESTED LOOPS (cr=7 pr=0 pw=0 time=0 us cost=5 size=124 card=1)
1 NESTED LOOPS (cr=6 pr=0 pw=0 time=0 us cost=4 size=102 card=1)
1 TABLE ACCESS BY INDEX ROWID USER$ (cr=2 pr=0 pw=0 time=0 us cost=1 size=18 card=1)
1 INDEX UNIQUE SCAN I_USER1 (cr=1 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 46)
1 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=0 us cost=3 size=84 card=1)
1 INDEX RANGE SCAN I_OBJ5 (cr=3 pr=0 pw=0 time=0 us cost=2 size=0 card=1)(object id 40)
1 INDEX RANGE SCAN I_USER2 (cr=1 pr=0 pw=0 time=0 us cost=1 size=22 card=1)(object id 47)
0 TABLE ACCESS BY INDEX ROWID IND$ (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)
0 INDEX UNIQUE SCAN I_IND1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=0 card=1)(object id 41)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us cost=3 size=24 card=1)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=11 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=48 card=2)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=11 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=2)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us cost=3 size=24 card=1)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=11 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=7 size=78 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=5 size=68 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=4 size=57 card=1)
0 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=0 us cost=3 size=53 card=1)
0 INDEX RANGE SCAN I_OBJ5 (cr=0 pr=0 pw=0 time=0 us cost=3 size=40 card=1)(object id 40)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 INDEX RANGE SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=4 card=1)(object id 47)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=11 card=1)(object id 62)
0 INDEX RANGE SCAN I_DEPENDENCY1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=0 card=3)(object id 106)
0 TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=0 pr=0 pw=0 time=0 us cost=2 size=10 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=72 card=2)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=23 card=1)
0 TABLE ACCESS BY INDEX ROWID TRIGGER$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=12 card=1)
0 INDEX UNIQUE SCAN I_TRIGGER2 (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 162)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=11 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=2)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=7 size=78 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=5 size=68 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=4 size=57 card=1)
0 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=0 us cost=3 size=53 card=1)
0 INDEX RANGE SCAN I_OBJ5 (cr=0 pr=0 pw=0 time=0 us cost=3 size=40 card=1)(object id 40)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 INDEX RANGE SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=4 card=1)(object id 47)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=11 card=1)(object id 62)
0 INDEX RANGE SCAN I_DEPENDENCY1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=0 card=3)(object id 106)
0 TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=0 pr=0 pw=0 time=0 us cost=2 size=10 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 VIEW (cr=0 pr=0 pw=0 time=0 us cost=2 size=13 card=1)
0 FAST DUAL (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
0 VIEW (cr=0 pr=0 pw=0 time=0 us cost=1 size=16 card=1)
0 SORT GROUP BY (cr=0 pr=0 pw=0 time=0 us cost=1 size=86 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=1 size=86 card=1)
0 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=0 us cost=0 size=78 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=0 size=65 card=1)
0 INDEX UNIQUE SCAN I_OLAP_CUBES$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)(object id 940)
0 TABLE ACCESS BY INDEX ROWID OLAP_DIMENSIONALITY$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=52 card=1)
0 INDEX RANGE SCAN I_OLAP_DIMENSIONALITY$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 944)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)
0 INDEX FULL SCAN I_OLAP_CUBE_DIMENSIONS$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)(object id 928)
0 INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=8 card=1)(object id 36)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=29 card=1)
0 INDEX FULL SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=20 card=1)(object id 47)
0 INDEX RANGE SCAN I_OBJ4 (cr=0 pr=0 pw=0 time=0 us cost=1 size=9 card=1)(object id 39)
1 BUFFER SORT (cr=2 pr=0 pw=0 time=0 us cost=6 size=36 card=1)
1 TABLE ACCESS BY INDEX ROWID SDO_GEOM_METADATA_TABLE (cr=2 pr=0 pw=0 time=0 us cost=1 size=36 card=1)
1 INDEX RANGE SCAN SDO_GEOM_IDX (cr=1 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 62259)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us cost=19 size=293 card=1)
0 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=0 us cost=18 size=238 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=18 size=225 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=17 size=221 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=16 size=213 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=15 size=209 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=14 size=201 card=1)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us cost=13 size=196 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=12 size=185 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=11 size=181 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=9 size=172 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=8 size=144 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=7 size=123 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=6 size=120 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=5 size=90 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=54 card=1)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=18 card=1)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 46)
0 TABLE ACCESS BY INDEX ROWID SDO_GEOM_METADATA_TABLE (cr=0 pr=0 pw=0 time=0 us cost=1 size=36 card=1)
0 INDEX RANGE SCAN SDO_GEOM_IDX (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 62259)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us cost=3 size=36 card=1)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1)(object id 37)
0 TABLE ACCESS CLUSTER TAB$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=30 card=1)
0 INDEX UNIQUE SCAN I_OBJ# (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 3)
0 TABLE ACCESS CLUSTER TS$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=3 card=1)
0 INDEX UNIQUE SCAN I_TS# (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 7)
0 TABLE ACCESS CLUSTER COL$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=21 card=1)
0 TABLE ACCESS CLUSTER COLTYPE$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=28 card=1)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us cost=2 size=9 card=1)
0 INDEX RANGE SCAN I_OBJ3 (cr=0 pr=0 pw=0 time=0 us cost=1 size=0 card=1)(object id 38)
0 INDEX RANGE SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=4 card=1)(object id 47)
0 TABLE ACCESS CLUSTER SEG$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=11 card=1)
0 INDEX UNIQUE SCAN I_FILE#_BLOCK# (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 9)
0 INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=5 card=1)(object id 36)
0 INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=8 card=1)(object id 36)
0 INDEX RANGE SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=4 card=1)(object id 47)
0 INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=8 card=1)(object id 36)
0 INDEX RANGE SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=4 card=1)(object id 47)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us cost=17 size=1300 card=100)
0 FIXED TABLE FULL X$KSPPCV (cr=0 pr=0 pw=0 time=0 us cost=0 size=1300 card=100)
0 FIXED TABLE FULL X$KSPPI (cr=0 pr=0 pw=0 time=0 us cost=0 size=55 card=1)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)(object id 62)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)
********************************************************************************The result of Explain plan method is:
PLAN_TABLE_OUTPUT
Plan hash value: 2374671442
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
PLAN_TABLE_OUTPUT
| 0 | SELECT STATEMENT | | 1 | 4142 | 0 (0) | 00:00:01 |
|* 1 | COUNT STOPKEY | | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID| ITALIA_GC | 49989 | 197M| 0 (0)| 00:00:01 |
|* 3 | DOMAIN INDEX | ITALIA_GC_IDX | | | 0 (0) | 00:00:01 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
1 - filter(ROWNUM=1)
3 - access("MDSYS"."SDO_WITHIN_DISTANCE"("A"."GEOMETRY","MDSYS"."SDO_GEOMETRY"(2001
PLAN_TABLE_OUTPUT
,8307,"MDSYS"."SDO_POINT_TYPE"(13.8268523,41.491619,NULL),NULL,NULL),'DISTANCE=100 UNIT=M')='TRUE')
Note
- dynamic sampling used for this statement (level=2)
22 rows selected.thank you very much. -
Query Execution Time for a Query causing ORA-1555
dear Gurus
I have ORA-01555 error , earlier I used the Query Duration mentioned in Alert Log and increased the Undo Retention as I did not find th UnDOBLKS column of v$undostat high for the time of occurence of ORA-01555..
But new ORA-01555 is coming whose query duration exceeds Undo Retention time..
My question -
1. Is it possible to accurately find the query duration time besides the Alert Log file ?abhishek, as you are using an undo tablespace and have already increased the time that undo data is retained via undo_retention then you might want to consider the following ideas which were useful with 1555 error under manual rbs segment management.
1- Tune the query. The faster a query runs the less likely a 1555 will occur.
2- Look at the processing. If a process was reading and updating the same table while committing frequenctly then the process under manual rbs management would basically create its own 1555 error rather than just being the victum of another process changing data and the rbs data being overlaid while the long running query was still running. With undo management the process could be generating more data than can be held for the undo_retention period but because it is committed Oracle has been told it doesn't really have to keep the data for use rolling back a current transaction so it gets discarded to make room for new changes.
If you find item 2 is true then separating the select from the update will likely eliminate the 1555. You do this by building a driving table that has the keys of the rows to be updated or deleted. Then you use the driver to control accessing the target table.
3- If the cause of the 1555 is or may be delayed block cleanout then select * from the target prior to running the long running query.
Realistically you might need to increase the size of the undo tablespace to hold all the change data and the value of the undo_retention parameter to be longer than the job run time. Which brings up back to option 1. Tune every query in the process so that the job run time is reduced to optimal.
HTH -- Mark D Powell --
dear mark
Thanks for the excellent advise..I found that the error is coming because of frequent commits..which is item 2 as u righly mentioned ..
I think I need to keep a watch on the queries running , I was just trying to find the execution time for the queries..If there is any way to find the query duration without running a trace ..
regards
abhishek -
Estimate execution time for CTAS
Hi,
I am searching for long to find a way to estimate the execution time for CTAS commands. I am a DBA. Our users run CTAS commands to load millions of rows. The commands fetch data from 4-5 very big tables each with millions of records and process them using where clause and group by clause and finally create the table. All these things are coded in the CTAS command. These CTAS sometime takes long time like 5 , 8 Hrs. Users frequently ask me to find how long it's going to take. I use both OEM and TOAD. But I couldn't find the time estimated from these tools. I feel that there must be some way, but I don't know the method.
Can any body please help me in this regard?
Thanks & Regards
Ananda BasakIt depends on a number of factors chief among them how accurate your estimate needs to be but also including things like what version of Oracle you're using, how accurate your database statistics are, etc.
One option is to look at the TIME column in the plan. For example, if I wanted to do a CTAS to create a copy of the EMP table, the optimizer expects that to take on the order of a second. Of course, the optimizer's estimates are only estimates and are only as accurate as the database statistics that are in place. If the optimizer generates a bad plan, it's likely because the optimizer expects some operation to take much more or much less time than it does in reality in which case the optimizer's runtime estimate is likely to be way off.
SQL> explain plan for create table emp_copy as select * from emp;
Explained.
SQL> ed
Wrote file afiedt.buf
1 select *
2* from table( dbms_xplan.display() )
SQL> /
PLAN_TABLE_OUTPUT
Plan hash value: 2748781111
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | CREATE TABLE STATEMENT | | 14 | 546 | 4 (0)| 00:00:01 |
| 1 | LOAD AS SELECT | EMP_COPY | | | | |
| 2 | TABLE ACCESS FULL | EMP | 14 | 546 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------------Depending on the query plan, you may be able to query the GV$SESSION_LONGOPS table to track the progress of any long-running operations in your session. If your query plan involves a lot of full table scans, sorts that take more than a few seconds, hash joins, etc. then it is likely that you'll be able to chart the progress of a query over time by watching GV$SESSION_LONGOPS change. Of course, if your query is going to need to do many long-running operations, you'll need to a human to interpret the data a bit in order to figure out where in the plan Oracle currently is and how far along that means the entire query is.
SELECT *
FROM gv$session_longops
WHERE time_remaining > 0If you're using 11g and you have the performance and tuning pack licensed, you could also potentially use the V$SQL_PLAN_MONITOR view.
Justin -
Need Help to create new screen for RF Sapconsole
Hi Guru's
I'm new on RF (but some years in ABAP) since last week.
I need help to create new screens for RF (SAPLLMOB).
Can someone explain me the procedure to create screen (with ABAP code after) or perhaps someone have an exemple (simple or not) ?
I have to develop 2 new screens with really few time.
And, another subsidiary question :
how SAP can transfert information between the flash gun and the screen i have developped.
Is there some code to add to enable this functionality or it is include in SAPLLMOB on standard fields ????
It's a new strange world for me today...
Many thanks to everyone who can explain me
Alainhi,
I am facing this problem as well. Is there any reference to create the new screen?
Hope someone can help! Thanks!
Regards,
Darren -
TS4268 I need help getting my face time and imessage to work.
I need help getting my face time and imessage to work. It is saying wating for activation. I just got my iphone 5 2 days ago. I have reset it from the phone and from itunes on the computer, made sure I'm attached to wifi.
The 3 basic troubleshooting steps are these in order: 1. Restart your iphone 2. Reset your settings/iphone 3. Restore your iphone. Since your iphone is only a couple of days old, you should backup your device before restoring. If you don't have anything on your iphone that you care to lose, then simply restoring without a backup is fine. A quick reset of pressing the sleep/wake button (top of iphone) and your home button simultaneously and holding it until the silver Apple logo appears.
-
How to reduce the time for each clips up to 0,04 seconds?
Hi, I'm trying to realize my first time laps. I've need to reduce the time for each clips up to 0,04 seconds, but it seems that the minimum time is 0,1 second. There's a solution?
And use a zip file. Many people can't open RARs.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
Execution time for web reports
Hello every one,
How to calculate execution time for web reports, for query execution we will go through RSRT, by giving query name and press execute + Debug button then select statistical data & Do not Cache buttons then press enter, after getting output press on back button, we will get duration of the query.....
But my question is , can we calculate execution time for webreport, if so can you please guide me.
and can you also tell me , if there is any RRI for one report, how to calculate execution time for these queries.
Ex : Query ABC have XYZ as its drilldown report , i need to calculate execution time for XYZ report via ABC report.
Thanks in advance,
Best Regards.
NP.Hi,
For reports executed in java web you can add the parameter &PROFILING=X
to the URL in order to record the execution time. Please have a look at SAP note 1048691 for further information.
Best regards,
Janine -
I need help in Downloading Adobe Elements for my Mac & Adobe Acrobat for my laptop...I have been battling for the last day.
~graffiti wrote:
PjonesCET wrote:
I know if you attempt to download and exe file to Mac from a Mac Partition you'll get something like. Cannot not understand file format octet-stream. This means it does not recognize MS execute files.
Not necesarily. I've done it a few times.
PjonesCET wrote:
I'm not sure you can download a PC copy of Acrobat 9 unless you operating from bootcamp or other such application and running the PC partition.
Yes. You can.
I've learned something. New. This must be recently changed. That last time I clicked on a Link I though was a dmg file and turned out it was and exe file my Macs wouldn't allow me to do so. But haven't tried recently everytime and exe file comes up I cancel. I gues I am used to the time everytime a Virus or some other nasty was downloaded it was packaged in and exe file and Macs owuldn't allow it. I suppose with the INtel guts now they can no longer refuse to download. -
How can i calculate execution time for methods?
I'm making a project that i want to calculate execution time for a
method in "miliseconds" or "microseconds".You see,I have a sort algorithm and i want to calculate execution time of this algorithm.How can i do?
Thanks...Just remembered.
The answer you get isn't trustworthy below a hundred millis, so you may need to sort a hundred or a thousand times to get a reasonable elapsed time. You also need to run the test five or ten times and take an average. In Windows you should fire up the Task Manager and be sure that your other CPU usage is as near to zero as you can get.
Maybe you are looking for
-
My podcasts won't sync from iTunes to my iPhone
I had been downloading podcasts onto iTunes, with several on auto-subscription, with any new ones auto-transferring to my iPhone each time I plugged it into the laptop via USB. A couple of days ago, I noticed that no new podcasts were showing up on
-
Need help with Authorization Issue
Hi, I have SAP_ALL authorization. When I try to view data or run query on the cube 0CP_SLSCA I get an error saying user not authorized For my ID SAP_ALL and SAP_NEW profiles have been added. As no roles have been created yet, no roles have been assi
-
I hope I can explain this thoroughly. I created an iTunes account many moons ago when they were not required to be e-mail address. Today, new Apple IDs are required to be e-mail addresses, I believe. I know that Apple IDs can be changed as well. W
-
Hi, I bought 4 printer HP Laserjet Pro MFP M176n last week. I have virtual server (win 7 64-Bit), in the main server in my network, and I use NComputing device to connect the users to the virual server. when i installed the printer via USB port, the
-
Help with windows 8 and adobe reader
adobe reader wont open pdf file in a browser window how do i fix this in windows 8