11g takes more time than 9i to execute
Hi
We are trying to move 9.1.0.7 to 11.1.0.6 on Solaris 5.10. When we are trying to compare the performance on both database using the same SQL, it is noticed that 11g is taking about 10minutes more than 9i. The schema, objects, data, ... everything is similar. Can anyone please give an idea on why this difference?
SQL is:
--sql_id='bt04cp43n28m3'
--hash_value=2461919517
INSERT /*+APPEND */INTO act_com
(act_id, rep, ytd_fee, ytd_commission, mtd_fee, mtd_commission,
monthly_avg_fee, monthly_avg_comm, ttm_fee, ttm_commission,
curr_dec_fee, curr_dec_comm, curr_nov_fee, curr_nov_comm,
curr_oct_fee, curr_oct_comm, curr_sep_fee, curr_sep_comm,
curr_aug_fee, curr_aug_comm, curr_jul_fee, curr_jul_comm,
curr_jun_fee, curr_jun_comm, curr_may_fee, curr_may_comm,
curr_apr_fee, curr_apr_comm, curr_mar_fee, curr_mar_comm,
curr_feb_fee, curr_feb_comm, curr_jan_fee, curr_jan_comm,
yr1_dec_fee, yr1_dec_comm, yr1_nov_fee, yr1_nov_comm,
yr1_oct_fee, yr1_oct_comm, yr1_sep_fee, yr1_sep_comm,
yr1_aug_fee, yr1_aug_comm, yr1_jul_fee, yr1_jul_comm,
yr1_jun_fee, yr1_jun_comm, yr1_may_fee, yr1_may_comm,
yr1_apr_fee, yr1_apr_comm, yr1_mar_fee, yr1_mar_comm,
yr1_feb_fee, yr1_feb_comm, yr1_jan_fee, yr1_jan_comm,
yr2_dec_fee, yr2_dec_comm, yr2_nov_fee, yr2_nov_comm,
yr2_oct_fee, yr2_oct_comm, yr2_sep_fee, yr2_sep_comm,
yr2_aug_fee, yr2_aug_comm, yr2_jul_fee, yr2_jul_comm,
yr2_jun_fee, yr2_jun_comm, yr2_may_fee, yr2_may_comm,
yr2_apr_fee, yr2_apr_comm, yr2_mar_fee, yr2_mar_comm,
yr2_feb_fee, yr2_feb_comm, yr2_jan_fee, yr2_jan_comm,
tot_fee_prev_day, tot_comm_prev_day)
SELECT act.acct_no, x.rep,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr)
THEN x.dollar_amt
ELSE 0
END
) ytd_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr)
THEN x.dollar_amt
ELSE 0
END
) ytd_commission,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND curr_mm = mm)
THEN x.dollar_amt
ELSE 0
END
) mtd_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND curr_mm = mm)
THEN x.dollar_amt
ELSE 0
END
) mtd_comm,
SUM (CASE
WHEN ( x.cf_ind = 'F'
AND ( (yr = curr_yr - 1 AND mm >= curr_mm)
OR (yr = curr_yr AND mm < curr_mm)
THEN x.dollar_amt
ELSE 0
END
/ 12 monthly_avg_fee,
SUM (CASE
WHEN ( x.cf_ind = 'C'
AND ( (yr = curr_yr - 1 AND mm >= curr_mm)
OR (yr = curr_yr AND mm < curr_mm)
THEN x.dollar_amt
ELSE 0
END
/ 12 monthly_avg_comm,
SUM (CASE
WHEN ( x.cf_ind = 'F'
AND ( (yr = curr_yr - 1 AND mm > curr_mm)
OR (yr = curr_yr AND mm <= curr_mm)
THEN x.dollar_amt
ELSE 0
END
) ttm_fee,
SUM (CASE
WHEN ( x.cf_ind = 'C'
AND ( (yr = curr_yr - 1 AND mm > curr_mm)
OR (yr = curr_yr AND mm <= curr_mm)
THEN x.dollar_amt
ELSE 0
END
) ttm_commission,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) curr_dec_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) curr_dec_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) curr_nov_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) curr_nov_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) curr_oct_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) curr_oct_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) curr_sep_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) curr_sep_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) curr_aug_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) curr_aug_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) curr_jul_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) curr_jul_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) curr_jun_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) curr_jun_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) curr_may_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) curr_may_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) curr_apr_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) curr_apr_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) curr_mar_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) curr_mar_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) curr_feb_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) curr_feb_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) curr_jan_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) curr_jan_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) yr1_dec_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) yr1_dec_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) yr1_nov_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) yr1_nov_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) yr1_oct_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) yr1_oct_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) yr1_sep_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) yr1_sep_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) yr1_aug_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) yr1_aug_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) yr1_jul_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) yr1_jul_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) yr1_jun_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) yr1_jun_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) yr1_may_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) yr1_may_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) yr1_apr_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) yr1_apr_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) yr1_mar_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) yr1_mar_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) yr1_feb_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) yr1_feb_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) yr1_jan_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) yr1_jan_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) yr2_dec_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 12)
THEN x.dollar_amt
ELSE 0
END
) yr2_dec_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) yr2_nov_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 11)
THEN x.dollar_amt
ELSE 0
END
) yr2_nov_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) yr2_oct_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 10)
THEN x.dollar_amt
ELSE 0
END
) yr2_oct_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) yr2_sep_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 9)
THEN x.dollar_amt
ELSE 0
END
) yr2_sep_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) yr2_aug_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 8)
THEN x.dollar_amt
ELSE 0
END
) yr2_aug_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) yr2_jul_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 7)
THEN x.dollar_amt
ELSE 0
END
) yr2_jul_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) yr2_jun_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 6)
THEN x.dollar_amt
ELSE 0
END
) yr2_jun_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) yr2_may_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 5)
THEN x.dollar_amt
ELSE 0
END
) yr2_may_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) yr2_apr_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 4)
THEN x.dollar_amt
ELSE 0
END
) yr2_apr_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) yr2_mar_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 3)
THEN x.dollar_amt
ELSE 0
END
) yr2_mar_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) yr2_feb_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 2)
THEN x.dollar_amt
ELSE 0
END
) yr2_feb_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) yr2_jan_fee,
SUM (CASE
WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 1)
THEN x.dollar_amt
ELSE 0
END
) yr2_jan_comm,
SUM (CASE
WHEN (x.cf_ind = 'F' AND asof_cymd = bus_day)
THEN x.dollar_amt
ELSE 0
END
) tot_fee_prev_day,
SUM (CASE
WHEN (x.cf_ind = 'C' AND asof_cymd = bus_day)
THEN x.dollar_amt
ELSE 0
END
) tot_comm_prev_day
FROM (SELECT acct_no, status
FROM action_tab
UNION
SELECT '0' acct_no, 'AC' status
FROM DUAL) act,
(SELECT TO_NUMBER (TO_CHAR (TO_DATE (NVL (asof_cymd, trade_cymd),
'YYYY-MM-DD'
'YYYY'
) yr,
TO_NUMBER (TO_CHAR (TO_DATE (NVL (asof_cymd, trade_cymd),
'YYYY-MM-DD'
'MM'
) mm,
TO_NUMBER (TO_CHAR (h_inner.bus_day, 'yyyy')) curr_yr,
TO_NUMBER (TO_CHAR (h_inner.bus_day, 'mm')) curr_mm,
rep_commission,
TO_DATE (NVL (asof_cymd, trade_cymd),
'YYYY-MM-DD'
) asof_cymd,
c.acct_no, rep_full rep, f.acct_no fba_acct,
CASE
WHEN ( TO_DATE (f.close_cymd, 'YYYY-MM-DD') <=
SYSDATE
OR f.acct_no IS NULL
THEN 'C'
ELSE 'F'
END cf_ind,
CASE
WHEN (adj_commission != 0
AND adj_commission IS NOT NULL
THEN adj_commission
ELSE NVL (commission, 0) + NVL (mark_up_down, 0)
END dollar_amt
FROM coding_tab c, fbaact_tab f, hist_dt_ctrl_tab h_inner
WHERE c.acct_no = f.acct_no(+)) x,
hist_dt_ctrl_tab
WHERE act.acct_no = x.acct_no
AND x.rep IS NOT NULL
--AND act.rep = x.rep
AND act.status IN ('AC', 'IN')
GROUP BY act.acct_no, x.rep
Thanks in advance.
Hi
The details given below.
Execution Plan on 9i
1.00 2,412.00 SELECT STATEMENT 93,164.00 260,496.00 93,164.00 CHOOSE
2.00 2,412.00 -SORT GROUP BY 93,164.00 260,496.00 93,164.00
3.00 8,684,104.00 --NESTED LOOPS OUTER 17,410.00 937,883,232.00 17,410.00
4.00 8,684,104.00 ---HASH JOIN 17,410.00 772,885,256.00 17,410.00
5.00 538,055.00 ----MERGE JOIN CARTESIAN 5,632.00 28,516,915.00 5,632.00
6.00 1.00 -----MERGE JOIN CARTESIAN 6.00 14.00 6.00
7.00 1.00 ------TABLE ACCESS FULL HIST_DT_CTRL 3.00 7.00 3.00 ANALYZED
7.00 1.00 ------BUFFER SORT 3.00 7.00 3.00
8.00 1.00 -------TABLE ACCESS FULL HIST_DT_CTRL 3.00 7.00 3.00 ANALYZED
6.00 538,055.00 -----BUFFER SORT 5,629.00 20,984,145.00 5,629.00
7.00 538,055.00 ------VIEW 5,626.00 20,984,145.00
8.00 538,055.00 -------SORT UNIQUE 5,626.00 5,298,870.00 5,599.00
9.00 --------UNION-ALL
10.00 529,887.00 ---------TABLE ACCESS FULL ACTION_TAB 4,164.00 5,298,870.00 4,164.00 ANALYZED
10.00 8,168.00 ---------TABLE ACCESS FULL DUAL 11.00 11.00
5.00 3,518,688.00 ----TABLE ACCESS FULL CODING_TAB 3,978.00 126,672,768.00 3,978.00 ANALYZED
4.00 1.00 ---TABLE ACCESS BY INDEX ROWID FBAACT_TAB 19.00 ANALYZED
5.00 1.00 ----INDEX UNIQUE SCAN FBA_ACT_PK_ACCT_NO ANALYZED
Execution Plan on 11g
1.00 2,399.00 SELECT STATEMENT 37,681.00 271,087.00 17,370,453,529.00 35,293.00 ALL_ROWS
2.00 2,399.00 -HASH GROUP BY 37,681.00 271,087.00 17,370,453,529.00 35,293.00
3.00 10,291,120.00 --HASH JOIN RIGHT OUTER 36,195.00 1,162,896,560.00 6,562,221,120.00 35,293.00
4.00 1.00 ---TABLE ACCESS FULL FBAACT_TAB 2.00 19.00 7,121.00 2.00 ANALYZED
4.00 10,291,120.00 ---HASH JOIN 36,051.00 967,365,280.00 5,529,464,283.00 35,291.00
5.00 660,746.00 ----MERGE JOIN CARTESIAN 14,778.00 38,323,268.00 2,126,486,738.00 14,486.00
6.00 1.00 -----MERGE JOIN CARTESIAN 10.00 16.00 185,497.00 10.00
7.00 1.00 ------TABLE ACCESS FULL HISTDT_CTRL 5.00 8.00 92,749.00 5.00 ANALYZED
7.00 1.00 ------BUFFER SORT 5.00 8.00 92,749.00 5.00
8.00 1.00 -------TABLE ACCESS FULL HISTDT_CTRL 5.00 8.00 92,749.00 5.00 ANALYZED
6.00 660,746.00 -----BUFFER SORT 14,773.00 27,751,332.00 2,126,393,989.00 14,481.00
7.00 660,746.00 ------VIEW 14,768.00 27,751,332.00 2,126,301,241.00 14,476.00
8.00 660,746.00 -------SORT UNIQUE 14,768.00 6,607,450.00 2,119,018,839.00 14,474.00
9.00 --------UNION-ALL
10.00 660,745.00 ---------TABLE ACCESS FULL ACTION_TAB 12,058.00 6,607,450.00 1,494,346,997.00 11,853.00 ANALYZED
10.00 1.00 ---------FAST DUAL 2.00 7,271.00 2.00
5.00 3,418,417.00 ----TABLE ACCESS FULL CODING_TAB 11,116.00 123,063,012.00 1,823,935,730.00 10,865.00 ANALYZED
The differences in INIT Parameters
9i 11g
multi_block_read_count 16 128
optimizer_mode choose all_rows
other h/w and load related
CPUs 8@900MHZ 8@1200MHZ
load used by many QA users just testing to make sure
all our cronjobs are running
fine or not
the above mentioned SQL is part of one of the processes, takes about 41 min on 9i and the same taking about 52-56 minutes on 11g.
Also, I took out every in-line SELECT statement and ran in both envs. looks 11g is executing them fast. But as a whole it takes about 10-12 mins more on 11g. So
I suspect that its problem with INSERT statement. So I just wrote a simple PL/SQL block to insert 1m records and tested on both.
INSERTION OF 1M records 1:46 min 2:06 min
count(*) 0:0.35 sec 0:0.17 sec
delete 0:28.9 sec 0:36.72 sec
rollback 0:32.19 sec 0:41.36 sec
Similar Messages
-
Count (*) for select stmt take more time than execute a that sql stmt
HI
count (*) for select stmt take more time than execute a that sql stmt
executing particular select stmt take 2.47 mins but select stmt is using the /*+parallel*/ (sql optimer) in that sql command for faster execute .
but if i tried to find out total number of rows in that query it takes more time ..
almost 2.30 hrs still running to find count(col)
please help me to get count of row faster.
thanks in advance...797525 wrote:
HI
count (*) for select stmt take more time than execute a that sql stmt
executing particular select stmt take 2.47 mins but select stmt is using the /*+parallel*/ (sql optimer) in that sql command for faster execute .
but if i tried to find out total number of rows in that query it takes more time ..
almost 2.30 hrs still running to find count(col)
please help me to get count of row faster.
thanks in advance...That may be because your client is displaying only the first few records when you are running the "SELECT *". But when you run "COUNT(*)", the whole records has to be counted.
As already mentined please read teh FAQ to post tuning questions. -
Delete DML statment takes more time than Update or Insert.
i want to know whether a delete statement takes more time than an update or insert DML command. Please help in solving the doubt.
Regards.i do not get good answers sometimes, so, i ask again.I think Alex answer to your post was quite complete. If you missed some information, continue the same post, instead of opening a new thread with the same subject and content.
You should be satistied with the answers you get, I also answered your question about global indexes, and I do think my answer was very complete. You may ask more if you want, but stop multiposting please. It is quite annoying.
Ok, have a nice day -
Why import of change request in production takes more time than quality?
Hello All,
why import of change request in production takes more time than import into quality?Hi jahangeer,
I believe it takes same time to import a request in both quality and production as they will be in sync.
Even then if it takes more time in production that may depend on the change request.
Thanks
Pavan -
When i put my Mac for sleep it takes more time than normal (>20 secs). Sometimes, coming back from sleep the system is not responding (freeze).
Perform SMC and NVRAM resets:
http://support.apple.com/en-us/HT201295
http://support.apple.com/en-us/HT204063
The try a safe boot:
http://support.apple.com/en-us/HT201262
Any change?
Ciao. -
Calc takes more time than previous
Hi All,
I have a problem with the calc as this calc take more time to execute please help!!!
I have included calc cache high in the .cfg file.
FIX (&As, &Af, &C,&RM, @RELATIVE("Pr",0), @RELATIVE("MS",0), @RELATIVE("Pt",0), @RELATIVE("Rn",0),@RELATIVE("Ll",0))
CLEARDATA "RI";
/* 22 Comment */
FIX("100")
"RI" = @ROUND ((("RDL")/("SBE"->"RDL"->"TMS"->"TP"->"TR"->"AF"->"Boom")),8);
ENDFIX
FIX("200")
"RI" = @ROUND ((("RDL")/("ODE"->"RDL"->"TMS"->"T_P"->"TR"->"AF"->"Boom")),8);
ENDFIX
Appriciate your help.
Regards,
Mink.Mink,
If the calculation script ,which you are using is the same which performed better before and data being processes is same ( i mean data might not have exceptionally grown more).Then, there must be other reasons like server side OS , processor or memory issues.Consult sys admin .Atleast you ll be sure that there is nothing wrong with systems.
To fine tune the calc , i think , you can minimise fix statements . But,thats not the current issue though
Sandeep Reddy Enti
HCC
http://analytiks.blogspot.com -
Zfs destroy command takes more time than usual
Hi,
When I run the destroy command it takes more than usual.
I have exported the lun form this zfs volume ealier.
Later I have removed the lun view and deleted the lun.After that when I run the below command it takes more time (more than 5mins and still running)
#zfs destroy storage/luIs there a way to quickly destroy the filesystem.
It looks it removing the allocated files.
capacity operations bandwidth
pool alloc free read write read write
storage0 107G 116T 3.32K 2.52K 3.48M 37.7M
storage0 107G 116T 840 551 1.80M 6.01M
storage0 106G 116T 273 0 586K 0
storage0 106G 116T 1.19K 0 2.61M 0
storage0 106G 116T 1.47K 0 3.20M -
Threaded program takes more time than executing serially!
Hello All
Ive converted my program into a threaded application so as to improve speed. However i found that after converting the execution time is more than it was when the program was non threaded. Im not having any synchronised methods. Any idea what could be the reason ?
Thanx in advance.Putting aside fstreams amusing comment, I suspect your
theads are never yielding (they are sitting in a tight
loop, thus taking all available procesor power). Try
adding Thread.sleep(0) at som point in the loop.No. If you just want to encourage one thread to give another thread a turn, use yield, not sleep.
Note, though, that this may not help your situation. As was pointed out, on a single CPU machine, the only way a multithreaded program will run faster (by which I mean total wall-clock time start to finish) than its single-threaded equivalent is if the 1-thread version spends a lot of time waiting for IO when it could be doing something else. (If it's waiting for IO, but that IO is needed for the big number crunching, then putting the crunching in another thread won't make things any faster.)
On the other hand, if by "faster" you're referring to a more responsive GUI, then, yes, in general you might expect better GUI response be putting non-GUI stuff in a different thread, but there's no guarantee. Depending on what the other thread does, how much work your GUI has to do, how your VM's scheduler works, how you've split up the work, etc., it may not be any better.
I know that's not very specific, but neither was your question. -
Why HTML report takes more time than the PDF one?
Hi,
I have created report in Reports 6i. When I run the report on the web with FORMAT = PDF it runs very fast and shows all the pages in 2 minutes. But when I run with
FORMAT = HTML it shows the first page in 2 minutes, after that it takes lot of time to show the remaining pages. If the total pages are more than 40, the browser just freezes
Can somebody give me the reason?
Is there any way to rectify this?
Thanks alot.
Ram.Hi Senthil,
Iam running with the below parameters.
Format : HTML
Destination : Screen.
My default browser is IE. When I try to run using Netscape it showed only 1 page out of 34 pages.
When I run Format as PDF it is faster but font size is small when it opens up. Offcourse user can zoom it.
If I increase the report width from 11 to 14 the font size becomes very small when it open up in browser.
Is there any way that I can set up zoom when I run as PDF?
Thanks for your help.
Ram. -
SYS_REFCURSOR takes more time than direct query execution
I have a stored proc which has 4 inputs and 10 output and all outputs are sys_refcursor type.
Among 10 ouputs, 1 cursor returns 4k+ records and all other cursors has 3 or 4 records and average 5 columns in each cursors. For this, it takes 8 sec to complete the execution. If we directly query, it gives output in .025 sec.
I verified code located the issue with cursor which returns 4k+ only.
The cursor opening from a temporary table (which has 4k+ records ) without any filter. The query which inserted into temporary is direct inserts only and i found nothing to modify there.
Can anyone suggest, how we can bring the results in less than 3 sec? This is really a challenge since the code needs to go live next week.
Any help appreciated.
Thanks
RenjishI've just repeated the test in SQL*Plus on my test database.
Both the ref cursor and direct SQL took 4.75 seconds.
However, that time is not the time to execute the SQL statement, but the time it took SQL*Plus in my command window to print out the 3999 rows of results.
SQL> create or replace PROCEDURE TEST_PROC (O_OUTPUT OUT SYS_REFCURSOR) is
2 BEGIN
3 OPEN O_OUTPUT FOR
4 select 11 plan_num, 22 loc_num, 'aaa' loc_nm from dual connect by level < 4000;
5 end;
6 /
Procedure created.
SQL> set timing on
SQL> set linesize 1000
SQL> set serverout on
SQL> var o_output refcursor;
SQL> exec test_proc(:o_output);
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.04
SQL> print o_output;
PLAN_NUM LOC_NUM LOC
11 22 aaa
11 22 aaa
11 22 aaa
11 22 aaa
11 22 aaa
3999 rows selected.
Elapsed: 00:00:04.75
SQL> select 11 plan_num, 22 loc_num, 'aaa' loc_nm from dual connect by level < 4000;
PLAN_NUM LOC_NUM LOC
11 22 aaa
11 22 aaa
11 22 aaa
11 22 aaa
11 22 aaa
11 22 aaa
3999 rows selected.
Elapsed: 00:00:04.75
That's the result I expect to see, both taking the same amount of time to do the same thing.
Please demonstrate how you are running it and getting different results. -
Threaded program takes more time than running serially!
Hello All
Ive converted my program into a threaded application so as to improve speed. However i found that after converting the execution time is more than it was when the program was non threaded. Im not having any synchronised methods. Any idea what could be the reason ?
Thanx in advance.First, if you are doing I/O, then maybe that's what's taking the time and not the threads. One question that hasn't been asked about your problem:
How much is the time difference? If it takes like 10 seconds to run the one and 10 minutes to run the threaded version, then that's a big difference. But if it is like 10 seconds vs 11 seconds, I think you should reconsider if it matters so much.
One analogy that comes to mind about multiple threads vs. sequential code is this:
With sequentially run code, all the code segments are lined up in order and they all go thru the door one after the other. As one goes thru they all move up closer, thus they know who's going first.
With multi-threaded code, all the code segments sorta pile up around the door in a big crowd. Some push go thru one at a time while others let them (priority), while other times 2 go for the door at the same time and there might be a few moments of "oh, after you", "no, after you", "oh no, I insist, after you" before one goes thru. So that could introduce some delay. -
Row Insert in Timesten takes more time than Oracle
Hi,
I have a Timesten IMDB (11.2.1.8.0 (64 bit Linux/x86_64) with an underlying Oracle Database 11Gr2.
Sys.odbc.ini entry is :
[DSN_NAME]
Driver=/application/TimesTen/matrix/lib/libtten.so
DataStore=/application/TimesTen/DSN_NAME_datastore/DSN_NAME_DS_DIR
LogDir=/logs_timeten/DSN_NAME_logdir
PermSize=8000
TempSize=250
PLSQL=1
DatabaseCharacterSet=WE8MSWIN1252
OracleNetServiceName=DBNAME
Connections=500
PassThrough=0
SQLQueryTimeout=250
LogBufMB=512
LogFileSize=512
LogPurge=1
When I try to insert a simple row in a table in an asyc cache group in Timesten it takes 3 ms (it has 6 indexes on it). On removing 4 indexes the performance improves to 1 ms. However inserting the same row on Oracle (with 6 indexes) takes 1.2 ms.
How can we improve the insert row performance in Timesten ? Kindly assist.
Regards,
Karan
PS: During the test run, we monitored deadlocks and log buffer waits with the following query and both values never changed from zero
select PERM_ALLOCATED_SIZE,PERM_IN_USE_SIZE,TEMP_ALLOCATED_SIZE,TEMP_IN_USE_SIZE,DEADLOCKS,LOG_FS_READS,LOG_FS_WRITES,LOG_BUFFER_WAITS from sys.monitor;
Edited by: 853100 on Nov 2, 2012 4:19 AMThis is not very efficient as the statement will require likely need to be parsed for each INSERT. Even a soft parse is very expensive compared to the cost of the actual INSERT.
Can you try changing your code to something like the following just to evaluate the difference in performance. The object is to prepare the INSERT just once, outside of the INSERT loop and then execute the prepared INSERT many times passing the required input parameters. I'm not a Pro*C expert but an outline of the code looks something like this:
char * ins1 = " INSERT INTO ORDERS(
ORD_ORDER_NO ,
ORD_SERIAL_NO ,
ORD_SEM_SMST_SECURITY_ID,
ORD_BTM_EMM_MKT_TYPE ,
ORD_BTM_BOOK_TYPE ,
ORD_EXCH_ID ,
ORD_EPM_EM_ENTITY_ID ,
ORD_EXCH_ORDER_NO ,
ORD_CLIENT_ID ,
ORD_BUY_SELL_IND ,
ORD_TRANS_CODE ,
ORD_STATUS ,
ORD_ENTRY_DATE ,
ORD_ORDER_TIME ,
ORD_QTY_ORIGINAL ,
ORD_QTY_REMAINING ,
ORD_QTY_DISC ,
ORD_QTY_DISC_REMAINING ,
ORD_QTY_FILLED_TODAY ,
ORD_ORDER_PRICE ,
ORD_TRIGGER_PRICE ,
ORD_DISC_QTY_FLG ,
ORD_GTC_FLG ,
ORD_DAY_FLG ,
ORD_IOC_FLG ,
ORD_MIN_FILL_FLG ,
ORD_MKT_FLG ,
ORD_STOP_LOSS_FLG ,
ORD_AON_FLG ,
ORD_GOOD_TILL_DAYS ,
ORD_GOOD_TILL_DATE ,
ORD_AUCTION_NO ,
ORD_ACC_CODE ,
ORD_UM_USER_ID ,
ORD_MIN_FILL_QTY ,
ORD_SETTLEMENT_DAYS ,
ORD_COMPETITOR_PERIOD ,
ORD_SOLICITOR_PERIOD ,
ORD_PRO_CLIENT ,
ORD_PARTICIPANT_TYPE ,
ORD_PARTICIPANT_CODE ,
ORD_COUNTER_BROKER_CODE ,
ORD_CUSTODIAN_CODE ,
ORD_SETTLER ,
ORD_REMARKS ,
ORD_BSE_DELV_FLAG ,
ORD_BSE_NOTICE_NUM ,
ORD_ERROR_CODE ,
ORD_EXT_CLIENT_ID ,
ORD_SOURCE_FLG ,
ORD_BUY_BACK_FLG ,
ORD_RESERVE_FLG ,
ORD_BSE_REMARK ,
ORD_CARRY_FORWARD_FLAG ,
ORD_ORDER_OFFON ,
ORD_D2C1_FLAG ,
ORD_FI_RETAIL_FLG ,
ORD_OIB_INT_REF_ID ,
ORD_BOB_BASKET_ORD_NO ,
ORD_PRODUCT_ID ,
ORD_OIB_EXEC_REPORT_ID ,
ORD_BANK_DP_TXN_ID ,
ORD_USERINFO_PROG ,
ORD_BANK_CODE ,
ORD_BANK_ACC_NUM ,
ORD_DP_CODE ,
ORD_DP_ACC_NUM ,
ORD_SESSION_ORDER_TYPE ,
ORD_ORDER_CC_SEQ ,
ORD_RMS_DAEMON_STATUS ,
ORD_GROUP_ID ,
ORD_REASON_CODE ,
ORD_REASON_DESCRIPTION ,
ORD_SERIES_IND ,
ORD_BOB_BASKET_TYPE ,
ORD_ORIGINAL_TIME ,
ORD_TRD_EXCH_TRADE_NO,
ORD_MKT_PROT ,
ORD_SETTLEMENT_TYPE ,
ORD_SUB_CLIENT,
ORD_ALGO_OI_NUM,
ORD_FROM_ALGO_CLORDID,
ORD_FROM_ALGO_ORG_CLORDID
VALUES(
:lvar_ord_order_no ,
:lvar_ord_serial_no ,
ltrim(rtrim(:lvar_ord_sem_smst_security_id)),
ltrim(rtrim(:lvar_ord_btm_emm_mkt_type)),
ltrim(rtrim(:lvar_ord_btm_book_type)),
ltrim(rtrim(:lvar_ord_exch_id)) ,
decode(:lD2C1Flag,'N',ltrim(rtrim(:lvar_ord_epm_em_entity_id)),ltrim(rtrim(:sD2C1ControllerId))) ,
:insertExchOrderNo,
ltrim(rtrim(:lvar_ord_client_id)) ,
ltrim(rtrim(:lvar_ord_buy_sell_ind)),
:lvar_ord_trans_code,
:cTransitStatus ,
sysdate,
sysdate,
:lvar_ord_qty_original,
decode(:lvar_ord_qty_remaining ,-1,to_number(null),:lvar_ord_qty_remaining) ,
decode(:lvar_ord_qty_disc ,-1,to_number(null),:lvar_ord_qty_disc),
decode(:lvar_ord_qty_disc_remaining,-1,to_number(null),:lvar_ord_qty_disc_remaining),
:lvar_ord_qty_filled_today ,
:lvar_ord_order_price,
decode(:lvar_ord_trigger_price ,-1,to_number(null),:lvar_ord_trigger_price) ,
decode(:lvar_ord_disc_qty_flg ,-1,null,:lvar_ord_disc_qty_flg) ,
decode(:lvar_ord_gtc_flg ,-1,null,:lvar_ord_gtc_flg) ,
decode(:lvar_ord_day_flg ,-1,null,:lvar_ord_day_flg) ,
decode(:lvar_ord_ioc_flg ,-1,null,:lvar_ord_ioc_flg) ,
decode(:lvar_ord_min_fill_flg ,-1,null,:lvar_ord_min_fill_flg) ,
decode(:lvar_ord_mkt_flg ,-1,null,:lvar_ord_mkt_flg) ,
decode(:lvar_ord_stop_loss_flg ,-1,null,:lvar_ord_stop_loss_flg) ,
decode(:lvar_ord_aon_flg ,-1,null,:lvar_ord_aon_flg) ,
decode(:lvar_ord_good_till_days ,-1,to_number(null),:lvar_ord_good_till_days),
to_date(ltrim(rtrim(:lvar_ord_good_till_date)) ,'dd-mm-yyyy'),
:lvar_ord_auction_no,
ltrim(rtrim(:lvar_ord_acc_code)),
ltrim(rtrim(:lv_UserIdOrLogPktId)),
decode(:lvar_ord_min_fill_qty,-1,to_number(null),:lvar_ord_min_fill_qty),
:lvar_ord_settlement_days,
:lvar_ord_competitor_period,
:lvar_ord_solicitor_period,
:lvar_ord_pro_client ,
ltrim(rtrim(:lvar_ord_participant_type)),
ltrim(rtrim(:lvar_ord_participant_code)),
ltrim(rtrim(:lvar_ord_counter_broker_code)),
trim(:lvar_ord_custodian_code) ,
ltrim(rtrim(:lvar_ord_settler)),
ltrim(rtrim(:lvar_ord_remarks)),
ltrim(rtrim(:lvar_ord_bse_delv_flag)) ,
ltrim(rtrim(:lvar_ord_bse_notice_num)) ,
:lvar_ord_error_code ,
trim(:lvar_ord_ext_client_id) ,
ltrim(rtrim(:lvar_ord_source_flg)),
ltrim(rtrim(:lvar_ord_buyback_flg)),
:lvar_ord_reserve_flag ,
trim(:lvar_ord_bse_remark) ,
ltrim(rtrim(:lvar_ord_carryfwd_flg)),
:cOnStatus,
:lD2C1Flag,
:lSendToRemoteUser,
:lInternalRefId,
:lvar_bob_basket_ord_no,
ltrim(rtrim(:lvar_ord_product_id)),
trim(:lvar_ord_oib_exec_report_id) ,
:lvar_BankDpTxnId ,
ltrim(rtrim(:lEquBseUserCode )),
ltrim(rtrim(:lvar_BankCode)) ,
ltrim(rtrim(:lvar_BankAccNo)),
ltrim(rtrim(:lvar_DPCode)),
ltrim(rtrim(:lvar_DPAccNo)) ,
ltrim(rtrim(:lvar_OrderSessionType)) ,
:lvar_ord_order_cc_seq,
:lvar_ord_rms_daemon_status ,
:lvarGrpId,
:lvar_ord_reason_code ,
trim(:lvar_ord_reason_description) ,
:lSecSeriesInd,
ltrim(rtrim(:lBasketType)),
sysdate,
(-1 * :lvar_ord_serial_no),
:MktProt ,
:lvar_ord_sett_type,
ltrim(rtrim(:lvar_ca_cli_type)) ,
:ComplianceID,
ltrim(rtrim(:lvar_ClOrd)),
ltrim(rtrim(:lvar_OrgClOrd))
EXEC SQL AT :db_conn PREPARE i1 FROM :ins1;
logTimestamp("BEFORE inserting in orders table");
for (i=0; i<NUM_INSERTS; i++)
if ( strncmp(lvar_ord_exch_id.arr,"NSE",3) ==0 )
if(tmpExchOrderNo == -1)
insertExchOrderNo = NULL;
else
insertExchOrderNo = tmpExchOrderNo;
else if ( strncmp(lvar_ord_exch_id.arr,"BSE",3) ==0 )
if(tmpExchOrderNo == -1)
insertExchOrderNo = NULL;
else
insertExchOrderNo = tmpExchOrderNo;
lvar_ord_acc_code.len = strlen (lvar_ord_acc_code.arr);
sprintf (lv_UserIdOrLogPktId.arr,"%d",UserIdOrLogPktId );
lv_UserIdOrLogPktId.len = strlen (lv_UserIdOrLogPktId.arr) ;
lEquBseUserCode.len = fTrim(lEquBseUserCode.arr,16);
lvar_ord_buyback_flg.len = fTrim(lvar_ord_buyback_flg.arr,1);
lvar_ord_exch_id.len = fTrim(lvar_ord_exch_id.arr,3);
EXEC SQL AT :db_conn EXECUTE i1 USING
:lvar_ord_order_no ,
:lvar_ord_serial_no ,
:lvar_ord_sem_smst_security_id,
:lvar_ord_btm_emm_mkt_type,
etc. ;
logTimestamp("AFTER inserting in orders table");
/* Divide reported time by NUM_INSERTS to get average time for one insert */
Chris -
Automatic DOP take more time to execute query
We upgraded database to oracle 11gR2. While testing Automatic DOP feature with our existing query it takes more time than with parallel.
Note: No constrains or Index created on table to gain performance while loading data (5000records / sec)
Os : Sun Solaris 64bit
CPU = 8
RAM = 7456M
Default parameter settings:
parallel_degree_policy string MANUAL
parallel_degree_limit string CPU
parallel_threads_per_cpu integer 2
arallel_degree_limit string CPU
cpu_count integer 8
parallel_threads_per_cpu integer 2
resource_manager_cpu_allocation integer 8
Query:
SELECT COUNT(*)
from (
SELECT
/*+ FIRST_ROWS(50), PARALLEL */
Query gets executed in 22minutes : execution plan
COUNT(*)
9600
Elapsed: 00:22:10.71
Execution Plan
Plan hash value: 3765539975
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 1 | 21 | 2164K (1)| 07:12:52 | | |
| 1 | SORT AGGREGATE | | 1 | 21 | | | | |
| 2 | PARTITION RANGE OR| | 89030 | 1825K| 2164K (1)| 07:12:52 |KEY(OR)|KEY(OR)|
|* 3 | TABLE ACCESS FULL| SUBSCRIBER_EVENT | 89030 | 1825K| 2164K (1)| 07:12:52 |KEY(OR)|KEY(OR)|Automatic DOP Query: parameters set
alter session set PARALLEL_DEGREE_POLICY = limited;
alter session force parallel query ;Query:
SELECT COUNT(*)
from (
SELECT /*+ FIRST_ROWS(50), PARALLEL*/
This query takes more than 2hrs to execute
COUNT(*)
9600
Elapsed: 02:07:48.81
Execution Plan
Plan hash value: 127536830
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart|Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | 1 | 21 | 150K (1)| 00:30:01 | | | | | |
| 1 | SORT AGGREGATE | | 1 | 21 | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10000 | 1 | 21 | | | | | Q1,00 | P->S | QC (RAND) |
| 4 | SORT AGGREGATE | | 1 | 21 | | | | | Q1,00 | PCWP | |
| 5 | PX BLOCK ITERATOR | | 89030 | 1825K| 150K (1)| 00:30:01 |KEY(OR)|KEY(OR)| Q1,00 | PCWC | |
|* 6 | TABLE ACCESS FULL| SUBSCRIBER_EVENT | 89030 | 1825K| 150K (1)| 00:30:01 |KEY(OR)|KEY(OR)| Q1,00 | PCWP | |
Note
- automatic DOP: Computed Degree of Parallelism is 16 because of degree limitcan some one help us to find out where we did wrong or any pointer will really helpful to resolve an issue.
Edited by: Sachin B on May 11, 2010 4:05 AMGenerated AWR report for ADOP
Foreground Wait Events DB/Inst: HDB/hdb Snaps: 158-161
-> s - second, ms - millisecond - 1000th of a second
-> Only events with Total Wait Time (s) >= .001 are shown
-> ordered by wait time desc, waits desc (idle events last)
-> %Timeouts: value of 0 indicates value was < .5%. Value of null is truly 0
Avg
%Time Total Wait wait Waits % DB
Event Waits -outs Time (s) (ms) /txn time
direct path read 522,173 0 125,051 239 628.4 99.3
db file sequential read 663 0 156 235 0.8 .1
log file sync 165 0 117 712 0.2 .1
Disk file operations I/O 267 0 63 236 0.3 .1
db file scattered read 251 0 36 145 0.3 .0
control file sequential re 217 0 32 149 0.3 .0
library cache load lock 2 0 10 4797 0.0 .0
cursor: pin S wait on X 3 0 9 3149 0.0 .0
read by other session 5 0 2 429 0.0 .0
kfk: async disk IO 613,170 0 2 0 737.9 .0
sort segment request 1 100 1 1007 0.0 .0
os thread startup 16 0 1 43 0.0 .0
direct path write temp 1 0 1 527 0.0 .0
latch free 51 0 0 2 0.1 .0
kksfbc child completion 1 100 0 59 0.0 .0
latch: cache buffers chain 19 0 0 2 0.0 .0
latch: shared pool 36 0 0 1 0.0 .0
PX Deq: Slave Session Stat 21 0 0 1 0.0 .0
library cache: mutex X 45 0 0 1 0.1 .0
CSS initialization 2 0 0 6 0.0 .0
enq: KO - fast object chec 1 0 0 11 0.0 .0
buffer busy waits 3 0 0 1 0.0 .0
cursor: pin S 9 0 0 0 0.0 .0
CSS operation: action 2 0 0 1 0.0 .0
direct path write 1 0 0 2 0.0 .0
jobq slave wait 17,554 100 8,942 509 21.1
PX Deq: Execute Reply 4,060 95 7,870 1938 4.9
SQL*Net message from clien 96 0 5,756 59962 0.1
PX Deq: Execution Msg 618 56 712 1152 0.7
KSV master wait 11 0 0 2 0.0
PX Deq: Join ACK 16 0 0 1 0.0
PX Deq: Parse Reply 14 0 0 1 0.0
Background Wait Events DB/Inst: HDB/hdb Snaps: 158-161
-> ordered by wait time desc, waits desc (idle events last)
-> Only events with Total Wait Time (s) >= .001 are shown
-> %Timeouts: value of 0 indicates value was < .5%. Value of null is truly 0
Avg
%Time Total Wait wait Waits % bg
Event Waits -outs Time (s) (ms) /txn time
control file sequential re 6,249 0 2,375 380 7.5 55.6
control file parallel writ 2,003 0 744 371 2.4 17.4
db file parallel write 1,604 0 503 313 1.9 11.8
log file parallel write 861 0 320 371 1.0 7.5
db file sequential read 363 0 151 415 0.4 3.5
db file scattered read 152 0 64 421 0.2 1.5
Disk file operations I/O 276 0 21 77 0.3 .5
os thread startup 316 0 15 48 0.4 .4
ADR block file read 24 0 11 450 0.0 .3
rdbms ipc reply 17 12 7 403 0.0 .2
Data file init write 6 0 6 1016 0.0 .1
direct path write 21 0 6 287 0.0 .1
log file sync 7 0 6 796 0.0 .1
ADR block file write 10 0 4 414 0.0 .1
enq: JS - queue lock 1 0 3 2535 0.0 .1
ASM file metadata operatio 1,801 0 2 1 2.2 .0
db file parallel read 30 0 1 40 0.0 .0
kfk: async disk IO 955 0 1 1 1.1 .0
db file single write 1 0 0 415 0.0 .0
reliable message 10 0 0 23 0.0 .0
latch: shared pool 75 0 0 2 0.1 .0
latch: call allocation 26 0 0 2 0.0 .0
CSS initialization 7 0 0 6 0.0 .0
asynch descriptor resize 352 100 0 0 0.4 .0
undo segment extension 2 100 0 5 0.0 .0
CSS operation: action 9 0 0 1 0.0 .0
CSS operation: query 42 0 0 0 0.1 .0
latch: parallel query allo 4 0 0 0 0.0 .0
rdbms ipc message 37,948 97 104,599 2756 45.7
DIAG idle wait 16,762 100 16,927 1010 20.2
ASM background timer 1,724 0 8,467 4912 2.1
shared server idle wait 282 100 8,465 30019 0.3
pmon timer 3,123 90 8,465 2711 3.8
wait for unread message on 8,381 100 8,465 1010 10.1
dispatcher timer 141 100 8,463 60019 0.2
Streams AQ: qmn coordinato 604 50 8,462 14010 0.7
Streams AQ: qmn slave idle 304 0 8,462 27836 0.4
smon timer 35 71 8,382 239496 0.0
Space Manager: slave idle 1,621 99 8,083 4986 2.0
PX Idle Wait 2,392 99 4,739 1981 2.9
class slave wait 46 0 623 13546 0.1
KSV master wait 2 0 0 27 0.0
SQL*Net message from clien 7 0 0 1 0.0
Wait Event Histogram DB/Inst: HDB/hdb Snaps: 158-161
-> Units for Total Waits column: K is 1000, M is 1000000, G is 1000000000
-> % of Waits: value of .0 indicates value was <.05%; value of null is truly 0
-> % of Waits: column heading of <=1s is truly <1024ms, >1s is truly >=1024ms
-> Ordered by Event (idle events last)
% of Waits
Total
Event Waits <1ms <2ms <4ms <8ms <16ms <32ms <=1s >1s
ADR block file read 24 100.0
ADR block file write 10 100.0
ADR file lock 12 100.0
ASM file metadata operatio 1812 99.0 .3 .4 .2 .1
CSS initialization 9 100.0
CSS operation: action 11 90.9 9.1
CSS operation: query 54 100.0
Data file init write 6 16.7 16.7 16.7 50.0
Disk file operations I/O 533 88.7 2.6 .6 1.5 .2 6.4
PX Deq: Signal ACK EXT 4 100.0
PX Deq: Signal ACK RSG 2 100.0
PX Deq: Slave Session Stat 21 42.9 28.6 28.6
SQL*Net break/reset to cli 6 100.0
SQL*Net message to client 102 100.0
SQL*Net more data to clien 4 100.0
asynch descriptor resize 527 100.0
buffer busy waits 4 75.0 25.0
control file parallel writ 2003 9.3 .5 .0 .1 90.0
control file sequential re 6466 10.6 .0 .0 .0 .1 .2 89.0
cursor: pin S 9 100.0
cursor: pin S wait on X 3 33.3 33.3 33.3
db file parallel read 30 6.7 30.0 63.3
db file parallel write 1604 7.4 .1 .6 16.5 75.5
db file scattered read 403 3.7 .2 2.5 13.6 14.9 3.5 61.5
db file sequential read 1017 12.3 .8 2.3 7.3 6.6 2.0 68.8
db file single write 1 100.0
direct path read 522.2 2.2 2.1 .1 .0 1.8 17.9 75.9
direct path write 22 4.5 4.5 90.9
direct path write temp 1 100.0
enq: JS - queue lock 1 100.0
enq: KO - fast object chec 1 100.0
enq: PS - contention 1 100.0
kfk: async disk IO 614.1 100.0 .0
kksfbc child completion 1 100.0
latch free 58 46.6 27.6 15.5 10.3
latch: cache buffers chain 19 36.8 10.5 52.6
latch: call allocation 26 76.9 11.5 7.7 3.8
latch: parallel query allo 4 100.0
latch: shared pool 111 44.1 28.8 27.0
library cache load lock 2 100.0
library cache: mutex X 45 84.4 8.9 4.4 2.2
log file parallel write 861 10.0 .1 .1 89.5 .2
log file sync 172 6.4 90.1 3.5
os thread startup 332 100.0
rdbms ipc reply 18 72.2 11.1 16.7
read by other session 5 100.0
reliable message 11 81.8 9.1 9.1
sort segment request 1 100.0
undo segment extension 2 50.0 50.0
ASM background timer 1724 .8 .6 .1 .6 97.9
DIAG idle wait 16.8K 100.0
KSV master wait 13 7.7 23.1 61.5 7.7
PX Deq: Execute Reply 4060 .4 .0 .0 .1 3.4 96.0
PX Deq: Execution Msg 617 34.7 1.5 2.4 1.5 1.5 .2 .8 57.5
PX Deq: Join ACK 16 93.8 6.3
PX Deq: Parse Reply 14 71.4 7.1 14.3 7.1
PX Idle Wait 2384 .0 .6 99.3
SQL*Net message from clien 103 82.5 1.0 1.9 1.0 13.6
Space Manager: slave idle 1621 .2 99.8
Streams AQ: qmn coordinato 604 50.0 50.0
Wait Event Histogram DB/Inst: HDB/hdb Snaps: 158-161
-> Units for Total Waits column: K is 1000, M is 1000000, G is 1000000000
-> % of Waits: value of .0 indicates value was <.05%; value of null is truly 0
-> % of Waits: column heading of <=1s is truly <1024ms, >1s is truly >=1024ms
-> Ordered by Event (idle events last)Edited by: Sachin B on May 11, 2010 4:52 AM -
Hi All,
I have cloned KSB1 tcode to custom one as required by business.
Below query takes more time than excepted.
Here V_DB_TABLE = COVP.
Values in Where clause are as follows
OBNJR in ( KSBB010000001224 BT KSBB012157221571)
GJAHR in blank
VERSN in '000'
WRTTP in '04' and '11'
all others are blank
VT_VAR_COND = ( CPUDT BETWEEN '20091201' and '20091208' )
SELECT (VT_FIELDS) INTO CORRESPONDING FIELDS OF GS_COVP_EXT
FROM (V_DB_TABLE)
WHERE LEDNR = '00'
AND OBJNR IN LR_OBJNR
AND GJAHR IN GR_GJAHR
AND VERSN IN GR_VERSN
AND WRTTP IN GR_WRTTP
AND KSTAR IN LR_KSTAR
AND PERIO IN GR_PERIO
AND BUDAT IN GR_BUDAT
AND PAROB IN GR_PAROB
AND (VT_VAR_COND).
Checked in table for this condition it has only 92 entries.
But when i execute program takes long time as 3 Hrs.
Could any one help me on this>1.Dont use SELECT/ENDSELECT instead use INTO TABLE addition .
> 2.Avoid using corresponding addition.create a type and reference it.
> If the select is going for dump beacause of storage limitations ,then use Cursors.
you got three large NOs .... all three recommendations are wrong!
The SE16 test is going in the right direction ... but what was filled. Nobody knows!!!!
Select options:
Did you ever try to trace the SE16? The generic statement has for every field an in-condition!
Without the information what was actually filled, nobody can say something there
are at least 2**n combinations possible!
Use ST05 for SE16 and check actual statement plus explain! -
Bind variable code takes more time to complete?
Hello, My database is oracle11g.
I have same plsql code and first one is without bind variable and second one is with bind variable. Usually, bind variable should take less time. But here
the bind variable takes more time than the regular code... Can any one please explain why?
SQL> alter system flush shared_pool;
System altered.
SQL> declare
2 cursor c1 is select * from emp where rownum < 50;
3 l_start NUMBER DEFAULT DBMS_UTILITY.GET_TIME;
4 v_cnt number;
5 begin
6 for i in c1 loop
7 SELECT count(*) into v_cnt
8 FROM rate
9 WHERE rate_id IN (SELECT rate_id
10 FROM ratedetail
11 WHERE benefit_id = i.benefit_id)
12 AND effective_date =
13 TO_DATE ('2011-01-23 00:00:00', 'yyyy-MM-dd HH24:MI:SS')
14 AND rate_type_id = 1;
15 end loop;
16 DBMS_OUTPUT.PUT_LINE('total minutes....'||ROUND(ROUND((DBMS_UTILITY.GET_TIME - l_start)/100, 2)
/60,3));
17 end;
18 /
total minutes.....06
PL/SQL procedure successfully completed.
SQL> alter system flush shared_pool;
System altered.
SQL>
SQL> declare
2 cursor c1 is select benefit_id from emp where rownum < 50;
3 l_start NUMBER DEFAULT DBMS_UTILITY.GET_TIME;
4 v_cnt number;
5 begin
6 for i in c1 loop
7 execute immediate 'SELECT count(*)
8 FROM rate
9 WHERE rate_id IN (SELECT rate_id
10 FROM ratedetail
11 WHERE benefit_id = :x)
12 AND effective_date = trunc(sysdate)-202
13 AND rate_type_id = 1'
14 into v_cnt using i.benefit_id;
15 end loop;
16 DBMS_OUTPUT.PUT_LINE('total minutes....'||ROUND(ROUND((DBMS_UTILITY.GET_TIME - l_start)/100, 2)
/60,3));
17 end;
18 /
total minutes.....061
PL/SQL procedure successfully completed.
SQL>Shrinika wrote:
Thanks for the clarification.. Now i understand...
One final question on this thread before i close this thread....
My database is set to CURSOR_SHARING=FORCE for some reason. It seems somebody applied a "quick and dirty fix" to "database is slow" problem. BAD PRACTICE
My question is, when we use bind variable, does it parse the sql code every time? or does it reuse the execution plan?
In my database, it reuse the execution plan... Just checking... When we set CURSOR_SHARING=FORCE, it should generate the execution plan
for every unqiue sql code... Is that correct? Am i confusing?If by "parse" you mean a "hard parse" (which generates execution plan), then the answer is NO. As you observed, it reuses execution plan.
For e.g. with CURSOR_SHARING=FORCE setting, following SQLs
select employee_no, first_name, last_name from employees where dept_no = 10 ;and
select employee_no, first_name, last_name from employees where dept_no = 20 ;would tend to reuse the same execution plan since both of these will be rewritten by oracle (before execution) as
select employee_no, first_name, last_name from employees where dept_no = :SYS01 ;Hope this helps.
Edited by: user503699 on Aug 14, 2010 3:55 AM
Maybe you are looking for
-
I can't for the life of me move individual images or groups of images around freely in grid view. The tutorial says to drag from the center of a thumbnail and drag it to the location you want it. I tried that and it just springs back to where it came
-
How to stop a rman backup in progress?
OS: AIX 5.3 L and Oracle 10g R2 I got panic when my scheduled rman backup (incremental level 0 plus archivelog) run too long and I want to stop the process. I could not find the rman doc mentioning how to use any rman command to do that, instead of j
-
New printers supported on old LC II
Can anyone tell me clearly what printer cable connection and communication standards are supported by the LC II? Background: I want to replace a Personal LaserWriter LS currently being used with the LC II, and Apple's document at http://docs.info.app
-
Need all drvier for hp 15-r25-tu window8 32bits
i have recently installed window 8 32 bits on my hp 15-r250tu laptop.. but i am facing problem to find correct driver for it. i need all imoportant driver to work on it.. help me please
-
FM to get the date specific structural help
I am working on structural help for Org id for a selection screen parameter. I am using FM RH_OBJID_REQUEST. It is giving the structure valid ion today. My requirement is to get the structure valid on given period in the above selection field. Plea