HELP ME TUNING MY DB STRUCTURE
Hi
I need a suggestion. Well, in my db I have types STUDENT, TEACHER and THESIS(final exam). Teacher and student are subtypes of PERSON, and I have a table USERS of PERSON, and a table EXAMS of THESIS.
A teacher is a tutor for many students, so each teacher has its nested table of ref THESIS which represent it. Each student has got to the maximum one THESIS assigned, so he as an attribute THESIS of type THESIS.
Each THESIS is managed by a teacher and to the maximum a student.
So, both STUDENT AND TEACHER point to THESIS. But if I want to retrieve information about the other person (for example, I select a student and I want to know who is his tutor), which is the best way?
1. add to type THESIS two attributes of type ref student and ref teacher, creating a circular dependence
2. create a function that takes in input an object of type THESIS and returns the relative teacher or student
I hope you could help me..thanks in advance
if i understand it correctly you had already a query (the select statments) but when executing that query it does takes long and the performance is not good right? correct me if i am wrong.
Similar Messages
-
I would like some help in determining the proper structure/implementation
I would like some help in determining the proper structure/implementation for the following scenario:
I have ~10 steel rods that have been equipped with a strain gauge. The most I would have is ~30 steel rods.
Each setup has had a 10 point calibration done.
These steel rod/strain gauge setups are assigned a calibration number.
The data would be grouped for each steel rod and identified by the calibration number.
I would like to use that calibration data to determine the Young’s Modulus for each steel rod and store that within the specific rod’s information.
I want the user to be able to add new steel rods dynamically and the Young’s Modulus calculated and stored with it.
There are two different types of rods.
The cross-sectional area of the rod needs to be stored and that value is constant based on the rod type (so there are two different area values).
After a rod’s calibration data is entered the first time, the data should be static so it doesn’t need to be re-entered.
The user would enter the cal#, the 10 point calibration data, and the rod type.
The user will only see the steel rod cal# on the FP.
I am using a queue-based producer/consumer with event structure for the front panel interface. So I’m thinking whenever a rod cal# was added I would call a subvi where the calibration data can be entered and then the Young’s Modulus could be calculated and stored. An option to edit/review existing cal data should be available.
LabVIEW 2010, Win 7.
My initial idea was:
Rod Arr – array of clusters:
Rod Info - cluster:
Calibration number – string
Rod Scale cluster:
mV/V – double array
force – double array
Young’s Modulus – double
Rod type – enum
Cross-sectional area – double
I have not implemented this because I’m not sure how to implement that AND keep the data after it’s been entered. And all of the bundling/unbundling anytime I want to access/edit any rod information can be BD consuming. I thought a lookup table might work. When I looked on the forums for a lookup table I was pointed in the direction of arrays/clusters.
So I have two questions:
What would be the best structure for the steel rod data?
What would be the best data type for the calibration# that the user can edit (enum, ring, ?)?I would make a couple of small change to your proposed data layout (highlighted in blue):
Rod Arr – array of clusters:
Rod Info - cluster:
Calibration number – string
Array of Rod Scale cluster:
mV/V – double
force – double
Young’s Modulus – double
Rod type – enum
Cross-sectional area – double
For the calibration data, I would have an array of clusters rather than a cluster of arrays. IMHO, this makes it easier to index through the calibration points, and makes it less likely you will ever have a situation where you don't have the same number of mV/V and force points. I'd also move the Young's modulus, type, and area info into the Rod Info cluster.
I prefer to store this type of configuration in the system registry, but that is more complicated and far from universal in the LabVIEW world. A simpler way would be to simply pass the entire array to the "write to binary file" function. If you do this, however, you might want to add a version number, otherwise it will be very difficult to maintain backwards compatibility if you ever need to change the data structure.
As far as the control type, it depends on what the user is entering. If the user is mostly entering calibration numbers already in the system, I would use a (system) combo box. This allows the user to select an existing calibration number from the menu, but also to enter a new calibration number if they need to. If the user will almost always enter new calibration numbers, then I would use a standard string control. Either way, you'll probably want to validate the format of the number the user enters.
Mark Moss
Electrical Validation Engineer
GHSP -
Request for help in tuning the server which is running opmn process.
Hi Folks,
I request for an help in tuning the server which is running oracle app server opmn process , It is chewing arround 40% of the CPU resource,and our sysadmin is back of me to resolve this issues.
any feedback on this is highly appriciated...
Thanks in advanceRe: How to Achieve Performance Tuning
I hope you may find answers here..
Sharma -
Hi list ,
I need your help in tuning this sql.
Oracle 10g,Windows 2008 64 bit running on virtual machine.
SELECT t0.RecID, t0.PrtID, t0.RecOrdDt, t0.RecOrdID, t0.RecExtOrdID, t0.RecPocID, t0.PriID, t0.CasID, t0.CasNo, t0.CasClass, t0.CasPocID, t0.CasAdmit, t0.CasNotValid, t0.PatName, t0.PatFName, t0.PatBName, t0.PatBDate, t0.PatSex, t0.PatNotValid, t0.RstID, t0.RstState, t0.RstMeaningI18N, t0.PrtType, t0.PrtSubType, t0.RpxType, t0.RpxPrio, t0.PerID, t0.PerName, t0.PerFName, t0.PerTitle, t0.PerType, t0.AgnExtID
FROM
IXSERV.XsvRecPerInfoV t0
WHERE
((((t0.AgnExtID = '1728454694') AND (t0.PrtID IN (72, 165)))
AND (t0.RpxType IN (1, 2, 6, 3, 5)))
AND (t0.RstState IN (202, 208, 210, 203, 206)))
call count cpu elapsed disk query current rows
Parse 1 0.04 0.03 0 1999 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 4 5.39 57.42 45408 53080 0 45
total 6 5.43 57.46 45408 55079 0 45
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Rows Row Source Operation
45 NESTED LOOPS (cr=53080 pr=45408 pw=0 time=2611987 us)
45 NESTED LOOPS (cr=52941 pr=45355 pw=0 time=46145568 us)
45 HASH JOIN (cr=52802 pr=45314 pw=0 time=45407144 us)
1 TABLE ACCESS BY INDEX ROWID PERPERSON (cr=3 pr=6 pw=0 time=40510 us)
1 INDEX RANGE SCAN PERIDXAGNEXTID (cr=2 pr=5 pw=0 time=22311 us)(object id 56817)
23623 TABLE ACCESS BY INDEX ROWID XSVRECPERXREF (cr=52799 pr=45308 pw=0 time=50046345 us)
33893 NESTED LOOPS (cr=47543 pr=42261 pw=0 time=73003406 us)
5139 HASH JOIN (cr=37184 pr=40103 pw=0 time=56090695 us)
5 TABLE ACCESS FULL XMFREPORTSTATE (cr=7 pr=6 pw=0 time=22565 us)
66900 TABLE ACCESS BY INDEX ROWID XSVPATIENTRECORD (cr=37177 pr=40097 pw=0 time=39887547 us)
66903 NESTED LOOPS (cr=146 pr=141 pw=0 time=8095232 us)
2 INLIST ITERATOR (cr=4 pr=3 pw=0 time=37200 us)
2 TABLE ACCESS BY INDEX ROWID XMFPATIENTRECORDTYPE (cr=4 pr=3 pw=0 time=37198 us)
2 INDEX UNIQUE SCAN PKPRT (cr=2 pr=1 pw=0 time=26746 us)(object id 56143)
66900 INDEX RANGE SCAN RECIDXPRTID (cr=142 pr=138 pw=0 time=51513 us)(object id 56410)
28753 INDEX RANGE SCAN RPXIDXRECID (cr=10359 pr=2158 pw=0 time=4518986 us)(object id 56453)
45 TABLE ACCESS BY INDEX ROWID ADTCASE (cr=139 pr=41 pw=0 time=423483 us)
45 INDEX UNIQUE SCAN PK_ADTCASE (cr=94 pr=23 pw=0 time=184866 us)(object id 55295)
45 TABLE ACCESS BY INDEX ROWID ADTPATIENT (cr=139 pr=53 pw=0 time=413067 us)
45 INDEX UNIQUE SCAN PK_ADTPATIENT (cr=94 pr=21 pw=0 time=195583 us)(object id 55361)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net break/reset to client 2 0.00 0.00
SQL*Net message to client 5 0.00 0.00
SQL*Net message from client 5 114.42 128.67
SQL*Net more data to client 1 0.00 0.00
db file sequential read 27969 0.13 51.57
db file scattered read 3271 0.05 4.61
Some lines from trace fils :
WAIT #1: nam='db file sequential read' ela= 12778 file#=4 block#=3726132 blocks=1 obj#=56817 tim=249799016372
WAIT #1: nam='db file scattered read' ela= 9271 file#=4 block#=3726133 blocks=4 obj#=56817 tim=249799025761
WAIT #1: nam='db file sequential read' ela= 18141 file#=4 block#=587487 blocks=1 obj#=55853 tim=249799043945
WAIT #1: nam='db file sequential read' ela= 18304 file#=4 block#=752595 blocks=1 obj#=56219 tim=249799062471
and the view XsvRecPerInfoV is :
SELECT d.RecID, d.PrtID, d.RecOrdDt, d.RecOrdID, d.RecExtOrdID, d.PocID, d.PriID, c.CasID, c. CasNo, c.CasClass, c.PocID, c.CasAdmit, c.CasNotValid, p.PatName, p.PatFName, p.PatBName, p.PatBDate, p.PatSex, p.PatNotValid, r.RstID, r.RstState, r.RstMeaningI18N, prt.PrtType, prt.PrtSubType, x.RpxType, x.RpxPrio, per.PerID, per.PerName, per.PerFName, per.PerTitle, per.PerType, per.AgnExtID
FROM XsvPatientRecord d,
AdtCase c,
AdtPatient p,
XmfReportState r,
XmfPatientRecordType prt,
XsvRecPerXRef x,
PerPerson per
WHERE
d.RecID = x.RecID
AND d.RstID = r.RstID
AND d.PrtID = prt.PrtID
AND d.CasID = c.CasID
AND x.PerID = per.PerID
AND c.PatID = p.PatID
i have two questions :
-1 The problem in tables XSVPATIENTRECORD and XSVRECPERXREF so how can i speed this query either by rewriting it or indexs?
-2 is my system i-o is slow ?
Best wishes
Edited by: welo on Oct 6, 2010 5:05 AMhi ,
it did not work with dynamic samplying. I am posting here trace 10053 output for the correct plan and wrong plan choosed but the optimizer i need soome one to help me in understanding why the optimizer is choosing wrong join order.
Sql statement and wrong plan :
tageCurrent SQL statement for this session:
SELECT t0.RecID, t0.PrtID, t0.RecOrdDt, t0.RecOrdID, t0.RecExtOrdID, t0.RecPocID, t0.PriID, t0.CasID, t0.CasNo, t0.CasClass, t0.CasPocID, t0.CasAdmit, t0.CasNotValid, t0.PatName, t0.PatFName, t0.PatBName, t0.PatBDate, t0.PatSex, t0.PatNotValid, t0.RstID, t0.RstState, t0.RstMeaningI18N, t0.PrtType, t0.PrtSubType, t0.RpxType, t0.RpxPrio, t0.PerID, t0.PerName, t0.PerFName, t0.PerTitle, t0.PerType, t0.AgnExtID
FROM XsvRecPerInfoV t0
WHERE
((((t0.AgnExtID = '1393621382') AND (t0.PrtID IN (72, 165))) AND (t0.RpxType IN (1, 2, 6, 3, 5))) AND (t0.RstState IN (202, 208, 210, 203, 206)))
--------------------------------------------------------------------+-----------------------------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time |
--------------------------------------------------------------------+-----------------------------------+
| 0 | SELECT STATEMENT | | | | 842 | |
| 1 | NESTED LOOPS | | 1 | 204 | 842 | 00:00:11 |
| 2 | NESTED LOOPS | | 1 | 163 | 840 | 00:00:11 |
| 3 | HASH JOIN | | 1 | 129 | 838 | 00:00:11 |
| 4 | TABLE ACCESS BY INDEX ROWID | PERPERSON | 1 | 29 | 2 | 00:00:01 |
| 5 | INDEX RANGE SCAN | PERIDXAGNEXTID | 1 | | 1 | 00:00:01 |
| 6 | TABLE ACCESS BY INDEX ROWID | XSVRECPERXREF | 2 | 34 | 3 | 00:00:01 |
| 7 | NESTED LOOPS | | 379 | 37K | 835 | 00:00:11 |
| 8 | HASH JOIN | | 238 | 19K | 342 | 00:00:05 |
| 9 | TABLE ACCESS FULL | XMFREPORTSTATE | 5 | 65 | 3 | 00:00:01 |
| 10 | TABLE ACCESS BY INDEX ROWID | XSVPATIENTRECORD | 524 | 30K | 218 | 00:00:03 |
| 11 | NESTED LOOPS | | 1049 | 72K | 338 | 00:00:05 |
| 12 | INLIST ITERATOR | | | | | |
| 13 | TABLE ACCESS BY INDEX ROWID | XMFPATIENTRECORDTYPE| 2 | 22 | 2 | 00:00:01 |
| 14 | INDEX UNIQUE SCAN | PKPRT | 2 | | 1 | 00:00:01 |
| 15 | INDEX RANGE SCAN | RECIDXPRTID | 524 | | 119 | 00:00:02 |
| 16 | INDEX RANGE SCAN | RPXIDXRECID | 2 | | 2 | 00:00:01 |
| 17 | TABLE ACCESS BY INDEX ROWID | ADTCASE | 1 | 34 | 2 | 00:00:01 |
| 18 | INDEX UNIQUE SCAN | PK_ADTCASE | 1 | | 1 | 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID | ADTPATIENT | 1 | 41 | 2 | 00:00:01 |
| 20 | INDEX UNIQUE SCAN | PK_ADTPATIENT | 1 | | 1 | 00:00:01 |
--------------------------------------------------------------------+-----------------------------------+
3 - access("PER"."PERID"="X"."PERID")
5 - access("PER"."AGNEXTID"='1393621382')
6 - filter(("X"."RPXTYPE"=1 OR "X"."RPXTYPE"=2 OR "X"."RPXTYPE"=3 OR "X"."RPXTYPE"=5 OR "X"."RPXTYPE"=6))
8 - access("D"."RSTID"="R"."RSTID")
9 - filter(("R"."RSTSTATE"=202 OR "R"."RSTSTATE"=203 OR "R"."RSTSTATE"=206 OR "R"."RSTSTATE"=208 OR "R"."RSTSTATE"=210))
14 - access(("PRT"."PRTID"=72 OR "PRT"."PRTID"=165))
15 - access("D"."PRTID"="PRT"."PRTID")
15 - filter(("D"."PRTID"=72 OR "D"."PRTID"=165))
16 - access("X"."RECID"="D"."RECID")
18 - access("D"."CASID"="C"."CASID")
20 - access("C"."PATID"="P"."PATID")
Join order[7]: XMFPATIENTRECORDTYPE[PRT]#1 XSVPATIENTRECORD[D]#3 XMFREPORTSTATE[R]#2 XSVRECPERXREF[X]#5 PERPERSON[PER]#0 ADTCASE[C]#6 ADTPATIENT[P]#4
Now joining: XSVPATIENTRECORD[D]#3
NL Join
Outer table: Card: 2.00 Cost: 2.00 Resp: 2.00 Degree: 1 Bytes: 11
Inner table: XSVPATIENTRECORD Alias: D
Access Path: TableScan
NL Join: Cost: 53601.79 Resp: 53601.79 Degree: 1
Cost_io: 53336.00 Cost_cpu: 7967475433
Resp_io: 53336.00 Resp_cpu: 7967475433
kkofmx: index filter:
("D"."PRTID"=72 OR "D"."PRTID"=165) AND ("X"."RPXTYPE"=1 OR "X"."RPXTYPE"=2 OR "X"."RPXTYPE"=3 OR "X"."RPXTYPE"=5 OR "X"."RPXTYPE"=6) AND ("R"."RSTSTATE"=202 OR "R"."RSTSTATE"=203 OR "R"."RSTSTATE"=206 OR "R"."RSTSTATE"=208 OR "R"."RSTSTATE"=210) AND "PER"."PERID"="X"."PERID" AND "X"."RECID"="D"."RECID" AND "D"."RSTID"="R"."RSTID" AND "D"."PRTID"="PRT"."PRTID" AND "D"."CASID"="C"."CASID" AND "C"."PATID"="P"."PATID" AND ("PRT"."PRTID"=72 OR "PRT"."PRTID"=165)
kkofmx: index filter:"D"."PRTID"="PRT"."PRTID" AND "D"."CASID"="C"."CASID" AND "C"."PATID"="P"."PATID" AND ("PRT"."PRTID"=72 OR "PRT"."PRTID"=165)
kkofmx: index filter:
("D"."PRTID"=72 OR "D"."PRTID"=165) AND ("X"."RPXTYPE"=1 OR "X"."RPXTYPE"=2 OR "X"."RPXTYPE"=3 OR "X"."RPXTYPE"=5 OR "X"."RPXTYPE"=6) AND ("R"."RSTSTATE"=202 OR "R"."RSTSTATE"=203 OR "R"."RSTSTATE"=206 OR "R"."RSTSTATE"=208 OR "R"."RSTSTATE"=210) AND "PER"."PERID"="X"."PERID" AND "X"."RECID"="D"."RECID" AND "D"."RSTID"="R"."RSTID" AND "D"."PRTID"="PRT"."PRTID" AND "D"."CASID"="C"."CASID" AND "C"."PATID"="P"."PATID" AND ("PRT"."PRTID"=72 OR "PRT"."PRTID"=165)
Access Path: index (FullScan)
Index: IRECRECORDIDPRTID
resc_io: 43172.00 resc_cpu: 2118737558
ix_sel: 1 ix_sel_with_filters: 6.2392e-005
NL Join: Cost: 86121.14 Resp: 86121.14 Degree: 1
Cost_io: 85924.00 Cost_cpu: 5909611610
Resp_io: 85924.00 Resp_cpu: 5909611610
Access Path: index (AllEqJoinGuess)
Index: RECIDXPRTID
resc_io: 217.00 resc_cpu: 13774732
ix_sel: 0.0074074 ix_sel_with_filters: 6.2392e-005
NL Join (ordered): Cost: 338.30 Resp: 338.30 Degree: 1
Cost_io: 337.00 Cost_cpu: 39079056
Resp_io: 337.00 Resp_cpu: 39079056
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best NL cost: 338.30
resc: 338.30 resc_io: 337.00 resc_cpu: 39079056
resp: 338.30 resp_io: 337.00 resp_cpu: 39079056
Join Card: 1048.85 = outer (2.00) * inner (70797.49) * sel (0.0074074)
Join Card - Rounded: 1049 Computed: 1048.85
SM Join
Outer table:
resc: 2.00 card 2.00 bytes: 11 deg: 1 resp: 2.00
Inner table: XSVPATIENTRECORD Alias: D
resc: 13387.34 card: 70797.49 bytes: 59 deg: 1 resp: 13387.34
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 651 Row size: 75 Total Rows: 70797
Initial runs: 2 Merge passes: 1 IO Cost / pass: 354
Total IO sort cost: 1005 Total CPU sort cost: 97398867
Total Temp space used: 11969000
SM join: Resc: 14397.59 Resp: 14397.59 [multiMatchCost=0.00]
SM cost: 14397.59
resc: 14397.59 resc_io: 14389.81 resc_cpu: 233098276
resp: 14397.59 resp_io: 14389.81 resp_cpu: 233098276
HA Join
Outer table:
resc: 2.00 card 2.00 bytes: 11 deg: 1 resp: 2.00
Inner table: XSVPATIENTRECORD Alias: D
resc: 13387.34 card: 70797.49 bytes: 59 deg: 1 resp: 13387.34
using dmeth: 2 #groups: 1
Cost per ptn: 0.74 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 1 probefrag: 614 ppasses: 1
Hash join: Resc: 13390.08 Resp: 13390.08 [multiMatchCost=0.00]
HA cost: 13390.08
resc: 13390.08 resc_io: 13384.81 resc_cpu: 157767585
resp: 13390.08 resp_io: 13384.81 resp_cpu: 157767585
Best:: JoinMethod: NestedLoop
Cost: 338.30 Degree: 1 Resp: 338.30 Card: 1048.85 Bytes: 70
Now joining: XMFREPORTSTATE[R]#2
NL Join
Outer table: Card: 1048.85 Cost: 338.30 Resp: 338.30 Degree: 1 Bytes: 70
Inner table: XMFREPORTSTATE Alias: R
Access Path: TableScan
NL Join: Cost: 1489.04 Resp: 1489.04 Degree: 1
Cost_io: 1486.00 Cost_cpu: 91090703
Resp_io: 1486.00 Resp_cpu: 91090703
Access Path: index (UniqueScan)
Index: PK_XMFREPORTSTATE
resc_io: 1.00 resc_cpu: 8697
ix_sel: 0.030303 ix_sel_with_filters: 0.030303
NL Join: Cost: 1387.61 Resp: 1387.61 Degree: 1
Cost_io: 1386.00 Cost_cpu: 48201937
Resp_io: 1386.00 Resp_cpu: 48201937
Access Path: index (AllEqUnique)
Index: PK_XMFREPORTSTATE
resc_io: 1.00 resc_cpu: 8697
ix_sel: 0.030303 ix_sel_with_filters: 0.030303
NL Join: Cost: 1387.61 Resp: 1387.61 Degree: 1
Cost_io: 1386.00 Cost_cpu: 48201937
Resp_io: 1386.00 Resp_cpu: 48201937
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best NL cost: 1387.61
resc: 1387.61 resc_io: 1386.00 resc_cpu: 48201937
resp: 1387.61 resp_io: 1386.00 resp_cpu: 48201937
Join Card: 238.38 = outer (1048.85) * inner (5.00) * sel (0.045455)
Join Card - Rounded: 238 Computed: 238.38
SM Join
Outer table:
resc: 338.30 card 1048.85 bytes: 70 deg: 1 resp: 338.30
Inner table: XMFREPORTSTATE Alias: R
resc: 3.00 card: 5.00 bytes: 13 deg: 1 resp: 3.00
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 12 Row size: 87 Total Rows: 1049
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 30450620
Total Temp space used: 0
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 1 Row size: 25 Total Rows: 5
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 29976876
Total Temp space used: 0
SM join: Resc: 343.32 Resp: 343.32 [multiMatchCost=0.00]
SM cost: 343.32
resc: 343.32 resc_io: 340.00 resc_cpu: 99556133
resp: 343.32 resp_io: 340.00 resp_cpu: 99556133
HA Join
Outer table:
resc: 338.30 card 1048.85 bytes: 70 deg: 1 resp: 338.30
Inner table: XMFREPORTSTATE Alias: R
resc: 3.00 card: 5.00 bytes: 13 deg: 1 resp: 3.00
using dmeth: 2 #groups: 1
Cost per ptn: 0.51 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 11 probefrag: 1 ppasses: 1
Hash join: Resc: 341.81 Resp: 341.81 [multiMatchCost=0.00]
HA Join (swap)
Outer table:
resc: 3.00 card 5.00 bytes: 13 deg: 1 resp: 3.00
Inner table: XSVPATIENTRECORD Alias: D
resc: 338.30 card: 1048.85 bytes: 70 deg: 1 resp: 338.30
using dmeth: 2 #groups: 1
Cost per ptn: 0.50 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 1 probefrag: 11 ppasses: 1
Hash join: Resc: 341.81 Resp: 341.81 [multiMatchCost=0.00]
HA cost: 341.81
resc: 341.81 resc_io: 340.00 resc_cpu: 54222464
resp: 341.81 resp_io: 340.00 resp_cpu: 54222464
Best:: JoinMethod: Hash
Cost: 341.81 Degree: 1 Resp: 341.81 Card: 238.38 Bytes: 83
Now joining: XSVRECPERXREF[X]#5
NL Join
Outer table: Card: 238.38 Cost: 341.81 Resp: 341.81 Degree: 1 Bytes: 83
Inner table: XSVRECPERXREF Alias: X
Access Path: TableScan
NL Join: Cost: 280914.52 Resp: 280914.52 Degree: 1
Cost_io: 275752.00 Cost_cpu: 154753663635
Resp_io: 275752.00 Resp_cpu: 154753663635
kkofmx: index filter:
("X"."RPXTYPE"=1 OR "X"."RPXTYPE"=2 OR "X"."RPXTYPE"=3 OR "X"."RPXTYPE"=5 OR "X"."RPXTYPE"=6) AND ("R"."RSTSTATE"=202 OR "R"."RSTSTATE"=203 OR "R"."RSTSTATE"=206 OR "R"."RSTSTATE"=208 OR "R"."RSTSTATE"=210) AND "PER"."PERID"="X"."PERID" AND "X"."RECID"="D"."RECID" AND "D"."RSTID"="R"."RSTID" AND "D"."PRTID"="PRT"."PRTID" AND "D"."CASID"="C"."CASID" AND "C"."PATID"="P"."PATID" AND ("PRT"."PRTID"=72 OR "PRT"."PRTID"=165)
Access Path: index (AllEqJoinGuess)
Index: RPXIDXRECID
resc_io: 3.00 resc_cpu: 23984
ix_sel: 1.6577e-006 ix_sel_with_filters: 1.6577e-006
NL Join: Cost: 835.02 Resp: 835.02 Degree: 1
Cost_io: 833.08 Cost_cpu: 58098995
Resp_io: 833.08 Resp_cpu: 58098995
Access Path: index (RangeScan)
Index: URPXRECPERTYPE
resc_io: 3.00 resc_cpu: 23274
ix_sel: 1.6577e-006 ix_sel_with_filters: 9.4822e-007
NL Join: Cost: 835.02 Resp: 835.02 Degree: 1
Cost_io: 833.08 Cost_cpu: 58181005
Resp_io: 833.08 Resp_cpu: 58181005
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best NL cost: 835.02
resc: 835.02 resc_io: 833.08 resc_cpu: 58098995
resp: 835.02 resp_io: 833.08 resp_cpu: 58098995
Join Card: 378.67 = outer (238.38) * inner (835508.80) * sel (1.9013e-006)
Join Card - Rounded: 379 Computed: 378.67
SM Join
Outer table:
resc: 341.81 card 238.38 bytes: 83 deg: 1 resp: 341.81
Inner table: XSVRECPERXREF Alias: X
resc: 1180.68 card: 835508.80 bytes: 17 deg: 1 resp: 1180.68
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 3 Row size: 102 Total Rows: 238
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 30061009
Total Temp space used: 0
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 2967 Row size: 29 Total Rows: 835509
Initial runs: 2 Merge passes: 1 IO Cost / pass: 1608
Total IO sort cost: 4575 Total CPU sort cost: 843575684
Total Temp space used: 53699000
SM join: Resc: 6126.64 Resp: 6126.64 [multiMatchCost=0.00]
SM cost: 6126.64
resc: 6126.64 resc_io: 6074.00 resc_cpu: 1577856809
resp: 6126.64 resp_io: 6074.00 resp_cpu: 1577856809
HA Join
Outer table:
resc: 341.81 card 238.38 bytes: 83 deg: 1 resp: 341.81
Inner table: XSVRECPERXREF Alias: X
resc: 1180.68 card: 835508.80 bytes: 17 deg: 1 resp: 1180.68
using dmeth: 2 #groups: 1
Cost per ptn: 3.29 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 3 probefrag: 2958 ppasses: 1
Hash join: Resc: 1525.78 Resp: 1525.78 [multiMatchCost=0.00]
HA cost: 1525.78
resc: 1525.78 resc_io: 1499.00 resc_cpu: 802794893
resp: 1525.78 resp_io: 1499.00 resp_cpu: 802794893
Best:: JoinMethod: NestedLoop
Cost: 835.02 Degree: 1 Resp: 835.02 Card: 378.67 Bytes: 100
Now joining: PERPERSON[PER]#0
NL Join
Outer table: Card: 378.67 Cost: 835.02 Resp: 835.02 Degree: 1 Bytes: 100
Inner table: PERPERSON Alias: PER
Access Path: TableScan
NL Join: Cost: 409701.78 Resp: 409701.78 Degree: 1
Cost_io: 408070.08 Cost_cpu: 48912477468
Resp_io: 408070.08 Resp_cpu: 48912477468
Access Path: index (UniqueScan)
Index: PKPER
resc_io: 2.00 resc_cpu: 16603
ix_sel: 2.7682e-006 ix_sel_with_filters: 2.7682e-006
NL Join: Cost: 1593.23 Resp: 1593.23 Degree: 1
Cost_io: 1591.08 Cost_cpu: 64391486
Resp_io: 1591.08 Resp_cpu: 64391486
Access Path: index (AllEqJoin)
Index: PERIDXAGNEXTID
resc_io: 2.00 resc_cpu: 15703
ix_sel: 0.001065 ix_sel_with_filters: 0.001065
NL Join: Cost: 1593.22 Resp: 1593.22 Degree: 1
Cost_io: 1591.08 Cost_cpu: 64050386
Resp_io: 1591.08 Resp_cpu: 64050386
Access Path: index (AllEqUnique)
Index: PKPER
resc_io: 2.00 resc_cpu: 16603
ix_sel: 2.7682e-006 ix_sel_with_filters: 2.7682e-006
NL Join: Cost: 1593.23 Resp: 1593.23 Degree: 1
Cost_io: 1591.08 Cost_cpu: 64391486
Resp_io: 1591.08 Resp_cpu: 64391486
****** trying bitmap/domain indexes ******
Access Path: index (AllEqJoin)
Index: PERIDXAGNEXTID
resc_io: 1.00 resc_cpu: 8171
ix_sel: 0.001065 ix_sel_with_filters: 0.001065
NL Join: Cost: 1214.12 Resp: 1214.12 Degree: 1
Cost_io: 1212.08 Cost_cpu: 61195971
Resp_io: 1212.08 Resp_cpu: 61195971
Access Path: index (AllEqUnique)
Index: PKPER
resc_io: 1.00 resc_cpu: 9021
ix_sel: 2.7682e-006 ix_sel_with_filters: 2.7682e-006
NL Join: Cost: 1214.13 Resp: 1214.13 Degree: 1
Cost_io: 1212.08 Cost_cpu: 61518121
Resp_io: 1212.08 Resp_cpu: 61518121
Access path: Bitmap index - rejected
Cost: 3293.30 Cost_io: 3287.25 Cost_cpu: 181295210 Sel: 9.5086e-007
Not believed to be index-only
****** finished trying bitmap/domain indexes ******
Best NL cost: 1593.22
resc: 1593.22 resc_io: 1591.08 resc_cpu: 64050386
resp: 1593.22 resp_io: 1591.08 resp_cpu: 64050386
Join Card: 0.34 = outer (378.67) * inner (1.00) * sel (8.9286e-004)
Join Card - Rounded: 1 Computed: 0.34
SM Join
Outer table:
resc: 835.02 card 378.67 bytes: 100 deg: 1 resp: 835.02
Inner table: PERPERSON Alias: PER
resc: 2.00 card: 1.00 bytes: 29 deg: 1 resp: 2.00
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 6 Row size: 120 Total Rows: 379
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 30122624
Total Temp space used: 0
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 1 Row size: 42 Total Rows: 1
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 29976353
Total Temp space used: 0
SM join: Resc: 839.02 Resp: 839.02 [multiMatchCost=0.00]
SM cost: 839.02
resc: 839.02 resc_io: 835.08 resc_cpu: 118213674
resp: 839.02 resp_io: 835.08 resp_cpu: 118213674
HA Join
Outer table:
resc: 835.02 card 378.67 bytes: 100 deg: 1 resp: 835.02
Inner table: PERPERSON Alias: PER
resc: 2.00 card: 1.00 bytes: 29 deg: 1 resp: 2.00
using dmeth: 2 #groups: 1
Cost per ptn: 0.50 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 6 probefrag: 1 ppasses: 1
Hash join: Resc: 837.52 Resp: 837.52 [multiMatchCost=0.00]
HA Join (swap)
Outer table:
resc: 2.00 card 1.00 bytes: 29 deg: 1 resp: 2.00
Inner table: XSVRECPERXREF Alias: X
resc: 835.02 card: 378.67 bytes: 100 deg: 1 resp: 835.02
using dmeth: 2 #groups: 1
Cost per ptn: 0.50 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 1 probefrag: 6 ppasses: 1
Hash join: Resc: 837.52 Resp: 837.52 [multiMatchCost=0.00]
HA cost: 837.52
resc: 837.52 resc_io: 835.08 resc_cpu: 73140924
resp: 837.52 resp_io: 835.08 resp_cpu: 73140924
Best:: JoinMethod: Hash
Cost: 837.52 Degree: 1 Resp: 837.52 Card: 0.34 Bytes: 129
Now joining: ADTCASE[C]#6
NL Join
Outer table: Card: 0.34 Cost: 837.52 Resp: 837.52 Degree: 1 Bytes: 129
Inner table: ADTCASE Alias: C
Access Path: TableScan
NL Join: Cost: 6458.89 Resp: 6458.89 Degree: 1
Cost_io: 6414.08 Cost_cpu: 1343349671
Resp_io: 6414.08 Resp_cpu: 1343349671
Access Path: index (UniqueScan)
Index: PK_ADTCASE
resc_io: 2.00 resc_cpu: 16573
ix_sel: 3.9499e-007 ix_sel_with_filters: 3.9499e-007
NL Join: Cost: 839.52 Resp: 839.52 Degree: 1
Cost_io: 837.08 Cost_cpu: 73157497
Resp_io: 837.08 Resp_cpu: 73157497
Access Path: index (AllEqUnique)
Index: PK_ADTCASE
resc_io: 2.00 resc_cpu: 16573
ix_sel: 3.9478e-007 ix_sel_with_filters: 3.9478e-007
NL Join: Cost: 839.52 Resp: 839.52 Degree: 1
Cost_io: 837.08 Cost_cpu: 73157497
Resp_io: 837.08 Resp_cpu: 73157497
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best NL cost: 839.52
resc: 839.52 resc_io: 837.08 resc_cpu: 73157497
resp: 839.52 resp_io: 837.08 resp_cpu: 73157497
Join Card: 0.34 = outer (0.34) * inner (2531689.00) * sel (3.9478e-007)
Join Card - Rounded: 1 Computed: 0.34
SM Join
Outer table:
resc: 837.52 card 0.34 bytes: 129 deg: 1 resp: 837.52
Inner table: ADTCASE Alias: C
resc: 5621.37 card: 2531689.00 bytes: 34 deg: 1 resp: 5621.37
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 1 Row size: 152 Total Rows: 1
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 29976353
Total Temp space used: 0
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 14878 Row size: 48 Total Rows: 2531689
Initial runs: 2 Merge passes: 1 IO Cost / pass: 8060
Total IO sort cost: 22938 Total CPU sort cost: 2822696818
Total Temp space used: 264217000
SM join: Resc: 29492.06 Resp: 29492.06 [multiMatchCost=0.00]
SM cost: 29492.06
resc: 29492.06 resc_io: 29352.08 resc_cpu: 4196022842
resp: 29492.06 resp_io: 29352.08 resp_cpu: 4196022842
HA Join
Outer table:
resc: 837.52 card 0.34 bytes: 129 deg: 1 resp: 837.52
Inner table: ADTCASE Alias: C
resc: 5621.37 card: 2531689.00 bytes: 34 deg: 1 resp: 5621.37
using dmeth: 2 #groups: 1
Cost per ptn: 8.95 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 1 probefrag: 14217 ppasses: 1
Hash join: Resc: 6467.84 Resp: 6467.84 [multiMatchCost=0.00]
HA cost: 6467.84
resc: 6467.84 resc_io: 6414.08 resc_cpu: 1611506897
resp: 6467.84 resp_io: 6414.08 resp_cpu: 1611506897
Best:: JoinMethod: NestedLoop
Cost: 839.52 Degree: 1 Resp: 839.52 Card: 0.34 Bytes: 163
Now joining: ADTPATIENT[P]#4
NL Join
Outer table: Card: 0.34 Cost: 839.52 Resp: 839.52 Degree: 1 Bytes: 163
Inner table: ADTPATIENT Alias: P
Access Path: TableScan
NL Join: Cost: 2172.07 Resp: 2172.07 Degree: 1
Cost_io: 2161.08 Cost_cpu: 329395913
Resp_io: 2161.08 Resp_cpu: 329395913
Access Path: index (UniqueScan)
Index: PK_ADTPATIENT
resc_io: 2.00 resc_cpu: 16533
ix_sel: 1.8294e-006 ix_sel_with_filters: 1.8294e-006
NL Join: Cost: 841.52 Resp: 841.52 Degree: 1
Cost_io: 839.08 Cost_cpu: 73174030
Resp_io: 839.08 Resp_cpu: 73174030
Access Path: index (AllEqUnique)
Index: PK_ADTPATIENT
resc_io: 2.00 resc_cpu: 16533
ix_sel: 1.8294e-006 ix_sel_with_filters: 1.8294e-006
NL Join: Cost: 841.52 Resp: 841.52 Degree: 1
Cost_io: 839.08 Cost_cpu: 73174030
Resp_io: 839.08 Resp_cpu: 73174030
****** trying bitmap/domain indexes ******
****** finished trying bitmap/domain indexes ******
Best NL cost: 841.52
resc: 841.52 resc_io: 839.08 resc_cpu: 73174030
resp: 841.52 resp_io: 839.08 resp_cpu: 73174030
Join Card: 0.34 = outer (0.34) * inner (546621.00) * sel (1.8294e-006)
Join Card - Rounded: 1 Computed: 0.34
SM Join
Outer table:
resc: 839.52 card 0.34 bytes: 163 deg: 1 resp: 839.52
Inner table: ADTPATIENT Alias: P
resc: 1332.55 card: 546621.00 bytes: 41 deg: 1 resp: 1332.55
using dmeth: 2 #groups: 1
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 1 Row size: 190 Total Rows: 1
Initial runs: 1 Merge passes: 0 IO Cost / pass: 0
Total IO sort cost: 0 Total CPU sort cost: 29976353
Total Temp space used: 0
SORT resource Sort statistics
Sort width: 445 Area size: 390144 Max Area size: 78223360
Degree: 1
Blocks to Sort: 3748 Row size: 56 Total Rows: 546621
Initial runs: 2 Merge passes: 1 IO Cost / pass: 2032
Total IO sort cost: 5780 Total CPU sort cost: 591684408
Total Temp space used: 65872000
SM join: Resc: 7972.81 Resp: 7972.81 [multiMatchCost=0.00]
SM cost: 7972.81
resc: 7972.81 resc_io: 7941.08 resc_cpu: 951056673
resp: 7972.81 resp_io: 7941.08 resp_cpu: 951056673
HA Join
Outer table:
resc: 839.52 card 0.34 bytes: 163 deg: 1 resp: 839.52
Inner table: ADTPATIENT Alias: P
resc: 1332.55 card: 546621.00 bytes: 41 deg: 1 resp: 1332.55
using dmeth: 2 #groups: 1
Cost per ptn: 2.32 #ptns: 1
hash_area: 124 (max=19098) buildfrag: 1 probefrag: 3537 ppasses: 1
Hash join: Resc: 2174.39 Resp: 2174.39 [multiMatchCost=0.00]
HA cost: 2174.39
resc: 2174.39 resc_io: 2161.08 resc_cpu: 399046339
resp: 2174.39 resp_io: 2161.08 resp_cpu: 399046339
Plan cardinality mismatch: best card= 0.33796097408 curr card= 0.33791727990
Best:: JoinMethod: NestedLoop
Cost: 841.52 Degree: 1 Resp: 841.52 Card: 0.34 Bytes: 204
Best so far: Table#: 1 cost: 2.0007 card: 2.0000 bytes: 22
Table#: 3 cost: 338.3037 card: 1048.8517 bytes: 73430
Table#: 2 cost: 341.8088 card: 238.3754 bytes: 19754
Table#: 5 cost: 835.0191 card: 378.6697 bytes: 37900
Table#: 0 cost: 837.5209 card: 0.3381 bytes: 129
Table#: 6 cost: 839.5214 card: 0.3379 bytes: 163
Table#: 4 cost: 841.5220 card: 0.3379 bytes: 204
tage -
Need help in tuning a procedure
DECLARE
CURSOR Cur_sub_rp IS
SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID ;
TYPE t_values_tab IS TABLE OF cur_sub_rp%rowtype ;
values_tab t_values_tab := t_values_tab() ;
BEGIN
OPEN Cur_sub_rp ;
LOOP
FETCH Cur_sub_rp BULK COLLECT INTO Values_tab
LIMIT 1000;
EXIT WHEN Cur_sub_rp%NOTFOUND ;
END LOOP ;
CLOSE Cur_sub_rp;
FORALL i IN VALUES_TAB.first..values_tab.last
INSERT INTO SUB_PHN_1 VALUES VALUES_TAB(i);
commit;
END;
The tables used here has 9 million records each.
The total process takes around 19 minutes.
Need your help in optimizing the process.i have tried using
Create table as SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID (+);But still taking long time(apprx 15 min).
so used this...
help me in tuning the query in either of this.
DECLARE
CURSOR Cur_sub_rp IS
SELECT A.SUB_ACCOUNT, B.PH_basic_srv,B.PH_Salesman,A.SUB_SSN
FROM STG_SUB_MASTER_MONTH_HISTORY A, STG_PHN_MASTER_MONTH_HISTORY
B
WHERE A.SUB_ACCOUNT = B.PH_ACCOUNT (+)
AND A.MONTH_ID = B.MONTH_ID (+);
TYPE t_values_tab IS TABLE OF cur_sub_rp%rowtype ;
values_tab t_values_tab := t_values_tab() ;
BEGIN
OPEN Cur_sub_rp ;
LOOP
FETCH Cur_sub_rp BULK COLLECT INTO Values_tab
LIMIT 1000;
EXIT WHEN Cur_sub_rp%NOTFOUND ;
END LOOP ;
CLOSE Cur_sub_rp;
FORALL i IN VALUES_TAB.first..values_tab.last
INSERT INTO SUB_PHN_1 VALUES VALUES_TAB(i);
commit;
END;Message was edited by:
Vakeel
Message was edited by:
Vakeel -
Need help on tuning materialized view refresh
Hi All,
I am working on materialized view refresh tuning.Initially it was complete refresh and used to take more than 90 mins to complete.
I changed it to fast refresh now it is completing fast. Now i have partitioned the base tables gl_balances and gl_code_combinations of column code_combination_id and created a local index on column code_combination_id then i am trying to partition the materialized on the same column to take advantage of partition change tracking.
Size of gl_balances base tables is 40Gb and all others tables sizes are small. In where clause there all the 4 tables are mapped. If i will create the partition only on code_combination_id will i the materialized will become the candidate for partition change tracking. As i know it will be applicable for PCT. I need expert advice on this.
While doing a fast refresh. the refresh takes less time. when there is a change in gl_balances , gl_code_combinations or gl_periods it completes in 20-30 mins. When there is a change in gl_set_of_books tables. It creates a problem here.DEL query takes more than 48 hours to complete.
CREATE MATERIALIZED VIEW apps.BAL_PART
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE as
SELECT GL.GL_CODE_COMBINATIONS21.ROWID C1,GL.GL_BALANCES21.ROWID C2, GL.GL_SETS_OF_BOOKS.ROWID C3,
GL.GL_PERIOD.ROWID C4,
"GL"."GL_BALANCES21"."ACTUAL_FLAG" ,
"GL"."GL_BALANCES21"."CURRENCY_CODE" ,
"GL"."GL_BALANCES21"."PERIOD_NUM" ,
"GL"."GL_BALANCES21"."PERIOD_YEAR" ,
"GL"."GL_BALANCES21"."SET_OF_BOOKS_ID" "SOB_ID",
"GL"."GL_CODE_COMBINATIONS21"."CODE_COMBINATION_ID" "CCID",
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT1" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT10" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT11" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT12" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT13" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT14" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT2" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT3" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT4" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT5" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT6" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT7" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT8" ,
"GL"."GL_CODE_COMBINATIONS21"."SEGMENT9" ,
"GL"."GL_PERIODS"."PERIOD_NAME" ,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_CR", 0) Open_Bal_Cr,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_CR", 0) +
NVL("GL"."GL_BALANCES21"."PERIOD_NET_CR", 0) Close_Bal_Cr,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_DR", 0) Open_Bal_Dr,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_DR", 0) +
NVL("GL"."GL_BALANCES21"."PERIOD_NET_DR", 0) Close_Bal_Dr,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_DR", 0) -
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_CR", 0) Open_Bal,
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_DR", 0) -
NVL("GL"."GL_BALANCES21"."BEGIN_BALANCE_CR", 0) +
NVL("GL"."GL_BALANCES21"."PERIOD_NET_DR", 0) -
NVL("GL"."GL_BALANCES21"."PERIOD_NET_CR", 0) Close_Bal,
NVL("GL"."GL_BALANCES21"."PERIOD_NET_CR", 0) Period_Cr,
NVL("GL"."GL_BALANCES21"."PERIOD_NET_DR", 0) Period_Dr
FROM GL.GL_CODE_COMBINATIONS21,
GL.GL_BALANCES21,
GL.GL_SETS_OF_BOOKS,
GL.GL_PERIODS
WHERE GL.GL_BALANCES21.CODE_COMBINATION_ID =GL.GL_CODE_COMBINATIONS21.CODE_COMBINATION_ID
AND GL.GL_SETS_OF_BOOKS.SET_OF_BOOKS_ID = GL.GL_BALANCES21.SET_OF_BOOKS_ID
AND GL.GL_PERIODS.PERIOD_NUM = GL.GL_BALANCES21.PERIOD_NUM
AND GL.GL_PERIODS.PERIOD_YEAR = GL.GL_BALANCES21.PERIOD_YEAR
AND GL.GL_PERIODS.PERIOD_TYPE = GL.GL_BALANCES21.PERIOD_TYPE
AND GL.GL_PERIODS.PERIOD_NAME = GL.GL_BALANCES21.PERIOD_NAME
AND GL.GL_PERIODS.PERIOD_SET_NAME = GL.GL_SETS_OF_BOOKS.PERIOD_SET_NAME
and gl.GL_CODE_COMBINATIONS21.summary_flag != 'Y'TRACE 1046 del statement
DELETE FROM "APPS"."apps.BAL_PART" SNA$
WHERE "C3" IN (SELECT /*+ NO_MERGE */ * FROM (SELECT
CHARTOROWID("MAS$"."M_ROW$$") RID$ FROM "GL"."MLOG$_GL_SETS_OF_BOOKS"
"MAS$" WHERE "MAS$".SNAPTIME$$ > :B_ST1 ) AS OF SNAPSHOT(:B_SCN) MAS$)
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 17759.00 171782.99 159422121 1267371 2564144739 0
Fetch 0 0.00 0.00 0 0 0 0
total 2 17759.00 171782.99 159422121 1267371 2564144739 0
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 175 (APPS) (recursive depth: 1)
Rows Row Source Operation
0 DELETE apps.BAL_PART (cr=0 pr=0 pw=0 time=0 us)
193128740 NESTED LOOPS (cr=592437 pr=592422 pw=0 time=945244160 us cost=339302 size=168 card=1)
3 SORT UNIQUE (cr=7 pr=0 pw=0 time=15832 us cost=2 size=138 card=1)
24 TABLE ACCESS FULL MLOG$_GL_SETS_OF_BOOKS (cr=7 pr=0 pw=0 time=19 us cost=2 size=138 card=1)
193128740 INDEX RANGE SCAN C3BOOKS (cr=592430 pr=592422 pw=0 time=789499200 us cost=339299 size=3318314250 card=110610475)(object id 2114736)
error during execute of EXPLAIN PLAN statement
ORA-08187: snapshot expression not allowed here
parse error offset: 314
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file sequential read 159520897 2.12 144415.96
latch: cache buffers chains 134 0.06 0.68
latch: undo global data 33 0.02 0.15
latch: object queue header operation 521 0.02 0.53
log file switch (private strand flush incomplete)
532 0.31 28.26
resmgr:cpu quantum 155 1.40 13.49
resmgr:internal state change 25 0.11 2.21
latch free 10 0.00 0.00
latch: cache buffers lru chain 4 0.00 0.00
rdbms ipc reply 489 0.02 0.54
reliable message 587 0.00 0.56
latch: row cache objects 3 0.00 0.00
********************************************************************************GL_SETS_OF_BOOKS has only 6 rows. I know there is complete refresh as a option which will again take more than 90 mins.
I want to do the fast refresh. Tables rows details below.
SQL> select count(*) from gl.gl_code_combinations21;
COUNT(*)
3075255
SQL> select count(*) from gl.GL_PERIODS;
COUNT(*)
1160
SQL> select count(*) from gl.gl_balances21;
COUNT(*)
477613527
SQL> select count(*) from gl.gl_sets_of_books;
COUNT(*)
6gl_sets_of_books has less rows. Whenever there is a change then it mapped to huge rows hence during materialized view has delete huge number of rows.
select count(*) from apps.BAL_PART group by C3;
C3 is the rowid which is present in create materialized statement.
COUNT(*)
292927011
210215
69330
184406971
Is there any way to improve the plan. As i created a partition on code_combination_id and local index on code_combination_id which will not help in set_of_books_id case. I dont PCT will help here or not. Is it possible to use PCT refresh by equipartitioning only one column in where clause.
Please assist me in improving refresh of materialized view using fast refresh.
Thanks and Regards,
Edited by: user646034 on Feb 23, 2013 11:13 PM
Edited by: user646034 on Feb 23, 2013 11:19 PM
Edited by: user646034 on Feb 23, 2013 11:46 PM
Edited by: user646034 on Feb 25, 2013 11:46 AMHi
The below explain without index and with index.
/* MV_REFRESH (DEL) */ DELETE FROM "APPS"."BAL_PART
" SNA$ WHERE "C3" IN (SELECT /*+ NO_MERGE */ * FROM (SELECT
CHARTOROWID("MAS$"."M_ROW$$") RID$ FROM
"GL"."MLOG$_GL_SETS_OF_BOOKS" "MAS$" WHERE "MAS$".SNAPTIME$$ > :B_ST1
) AS OF SNAPSHOT(:B_SCN) MAS$)
Plan hash value: 2704021294
| Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time |
| 0 | DELETE STATEMENT | | | | 339K(100)| |
| 1 | DELETE | BAL_PART | | | | |
| 2 | NESTED LOOPS | | 1 | 168 | 339K (1)|999:59:59 |
| 3 | SORT UNIQUE | | 1 | 138 | 2 (0)| 00:02:31 |
| 4 | TABLE ACCESS FULL| MLOG$_GL_SETS_OF_BOOKS | 1 | 138 | 2 (0)| 00:02:31 |
| 5 | INDEX RANGE SCAN | C3BOOKS | 110M| 3164M| 339K (0)|999:59:59 |
If i will not use the C3 index then the query will use the belolw plan, I guess this will also take same time or more time.
| 0 | DELETE STATEMENT | | | | 9743K(100)| |
| 1 | DELETE | BAL_PART | | | |   -
Help needed using content and structure functionality
Several times now I have had users who wanted to move libraries or lists, etc. from one place within a site collection to another.
The problem is that often, when they go into content and structure, select their source, the only action that appears is Delete, rather than also the copy or move functionality.
Even when I connect to the farm with the farm account, I see the same issue - the copy and move actions are greyed out. The farm account is one of the site collection owners, as well as of course in the farm admin group.
Are there certain types of things which cannot be copied or moved? One user is just trying to move a folder of files from a document library to a different location (from working to completed), while another user wants to move most of the files from an old
project to a new project.
I am having a tough time understanding why sometimes this works and sometimes it doesn't.Thank you for your answer. The user did try to use the windows explorer method, and got an error saying that the operation could not find the source.
I appreciate the note about moving the files individually. I have suggested that.
I also appreciate the caution about using move not copy if the versions are needed.
In one case we have a user who is trying to consolidate 2 different sharepoint sites into 1 site.
She has asked about moving one into the other.
I presume that any moving that takes place will overwrite an object of the same name that exists on the other side? Or is there a prompt to the user before the overwrite takes place?
Thank you so much for your help. -
Need help understanding Time Capsule file structure and how to get it back
I have the original Time Capsule on which I backup both my Mac Pro and my wife’s Macbook. When Snow Leopard came out, I successfully used the ‘Restore from Time Machine’ feature on my Mac Pro so I know it has worked. However, my wife’s MacBook harddrive died the other day and I was trying to do the ‘Restore from Time Machine’ and all it would find was a backup from April (when I put her in a new larger drive). Time Machine would not find any backup files newer that April. She stated that she had seen the the Time Machine backup notices regularly and as recent as the day the haddrive died (Nov. 23) so I figured that I should have no problem. Here is what I have found in my trouble shooting and what leads to my questions below.
This is the file structure I found: (note that our ID’s are ‘Denise’ and ‘John’)
*Time Capsule* (the drive as listed in my Finder window sidebar under ‘shared’)
>Folder called ‘Time Capsule’ (when logged in as either ‘Denise’ or ‘John’)
>>Denise Sparsebundle
>>>Backup of Denise’s iBook (mounted image)
>>>>Folder called ‘Backups.backupdb’
>>>>>Folder called ‘Denise’s iBook
>>>>>>Single folder with old April backup (not the right files)
>>John Sparsebundle
>>>Backup of John’s Mac Pro (mounted image)
>>>>Folder called ‘Backups.backupdb’
>>>>>Folder called ‘John’s Mac Pro’
>>>>>>Folders containing all my backup files
>Folder Called ‘Denise’ (if logged as ‘Denise’)
>>Denise’s Sparsebundle (a disk image)
>>>Backup of Denise iBook (the mounted image. Name from old machine)
>>>>Backups.Backupdb
>>>>>Denise’s iBook (Contains the backup I need)
>Folder Called ‘John’ (if logged in as ‘John’)
>> (empty)
For some reason, my wife’s backup files are stored within a folder located at the top level of the Time Capsule drive called ‘Denise’, however, mine are within a folder called ‘Time Capsule’ which is at the same level as the ‘Denise’ folder.
For some reason, when trying to use Time Machine to recover, it bypasses the top level ‘Denise’ folder which contains the correct files and goes into the ‘Time Capsule’ folder and finds the outdated backup files.
I would assume that both my backup files and my wife’s should be at the same level of the Time Capsule.
I was eventually able to use Migration Assistant to recover the files after installing a fresh OS and mounting the correct Sparsebundle image.
So, my question, how do I get this fixed so that if I have to recover a drive with Time Capsule, it will find the correct files.
Sorry for the long post and thanks in advance for any help.John Ormsby wrote:
What I was trying to determine is why different backups for one particular machine are located at different file structure levels on my Time Capsule and why the most resent one for that machine is at a different level that for my other machine. Also, what is the correct level that both machines backups should be at.
well John, first can you clarify if you are on 10.4.8 as your profile suggests ? if so, i'm wondering how you can use TM at all because TM was introduced with Leo. if you're not on 10.4.8, please update your profile. if you could, please also indicate details of your machine such as available RAM, processor, etc.
second, what OS is your wife's machine running ?
third, i frankly don't know too much about TM's file structure or if there indeed is such a thing as the correct one. however, i do know that it is best to leave TM to do its thing (as long as it's working). FWIW, though off-topic, you may want to have a look at this read for further information.
last but not least, i see TM backups to my TC only as a part of my backup strategy. the backbone of my strategy is to create bootable clone of my startup disk(s) using e.g. Carbon Copy Cloner on a regular basis. while TM is capable of doing a full system restore, i don't trust it as much as a working clone. i use TM to retrieve a file i accidentally trashed a week ago but you cannot boot from a TM backup if your startup disk goes belly up.
If I have missed this information in either the FAQs or the Troubleshooting article, I would greatly appreciate being pointed to it .
i expect you didn't miss anything and i'm sorry you didn't find any help there. perhaps if Pondini (author of the FAQ and troubleshooting user tips) reads this thread, you will get the necessary advice on the file structure and more besides.
good luck to you ! -
Help with disk repair: "Volume Structure" failed
Hello all:
For the sake of full disclosure let me state right off that I am new to the world of MAC and my not have all the "MAC language" correct - so, if I misspeak (or miss-write) something I apologize.
I have recently purchased an iMac (21.5" - 3.06 GHz Intel Core 2 Duo - 4 GB 1067 MHz RAM - 1 TB harddrive) with OS X 10.6.2 installed. I have to say that after over 20 years with MicroSoft I am enjoying the stability and quality of the MAC.
Anyway, as part of my education in the care and feeding of a MAC I ran the TechTool app yesterday. I had no indication that anything was wrong with the computer - but, I would like to become familiar with the various utilities for the care of the machine "before" a problem occurs.
As the app ran I was pleased to see that all the tests passed (Processor, RAM, Video RAM, etc...). However the computer failed the last test: Volume Structure.
Here are the directions I was given at the end of the test:
Volume Structure
Failed
TechTool Deluxe can scan volumes for problems related to the numerous structures that are necessary for the volumes to operate correctly. If problems are found, TechTool Deluxe can attempt to repair the damage to help reduce the chance of future problems.
If TechTool Deluxe has discovered problems with the structure of a volume, allow the program to repair the problem. Quite often these issues are minor, but sometimes they can be indicative of a more serious problem. If the problem persists, consider backing up the device, reformatting the media, replacing the data, and then testing again.
I was also instructed to access the Apple site and download the most recent version of TechTool Deluxe that can perform repairs.
I downloaded the software and followed the instructions to open the file in the Disk Utility app and burn a CD. Following the directions I then booted up on the CD by restarting the computer while holding the "C" key.
The computer booted up on the CD and loaded TechTool Deluxe. I ran the same tests as above and once again the Volume Structure failed. When I clicked on repair it seemed as though the program was trying to fix the problem - then it abruptly stopped and stated that the Volume Structure could not be repaired.
I removed the TechTool CD, rebooted the computer, installed the TechTool Deluxe that I downloaded from Apple, and ran the Disk Utility. When I tried to "Verify" the disk this is what appeared:
Disk Utility stopped verifying "Macintosh HD"
This disk needs to be repaired. Start up your computer with another disk (such as your Mac OS X installation disc), and then use Disk Utility to repair this disk.
Following these instructions I rebooted the computer using the Mac OS X installation disk - and the only option I found was for an installation of the OS.
OK.... I give up. Where do I go from here? Is this a serious problem? What the £$%& is going on??!!
Any assistance would be GREATLY appreciated.
Thanks in advance,
MikeDon't worry - volume structure issues are not serious at all. Follow These Apple Instructions on how to repair your HD using Disk Utility on your installation discs.
You might also consider acquiring a good 3rd party Utility app as there are many things they can do that Apple's DU cannot. DiskWarrior and Drive Genius are my favourites. I use them as part of my routine maintenance schedule. Prevention is better than cure. I believe one should be in every Mac user's arsenal. -
Help me out with Directory structure for JSF+SPRING+HIBERNATE Project
Hi frnds ,
My name is Walter working for a startup software company . We are working on Hospital Management System (HMS) project .. MVC Architecture ...using Hibernate Spring and JSF ..we need to design Directory Structure for our project..
plzz help me friends in suggesting MVC Directory structure ...? also plzz help me by directing me with the navigation flow?
Thnxx in advance
Regards
WalterThank you so much .. friends ..for your kind replies..thanks to Illu, anguquga and special thanks to BalusC for giving me the advice for hiring EE Artitech ..
Anyways I have discussed with my teammates designing the directory structure
anguquga your directory structure is close to what I have designed ..referiing to a sample application on web..
Hospital Management system MVC architecture Directory structure
This is the way the structure goes on ..
model --> for Hibernate as well as Spring
View --> for JSF
src(-)
|
------(-) java
|
-------(-) model
|
------(+) businessobject
|
------(-) dao
|
------(+) hibernate
|
------(+) exception
|
------(-) service
|
------ (+) impl
|
------(+) util
(-) view
|
------(+) bean
|
------(+) builder
|
------(+) bundle
|
------(+) servicelocator
|
------(+) util
|
------(+) validator
(-) Web or WebRoot
|
----- (-) JSP Files�etc.,
|
----- (-) META-INF
|
------ (+) Images
|
------ (+) Scripts ==== CSS (cascading style sheets, JavaScript files etc.,)
|
----- (-) WEB-INF =========xml files web.xml, faces-config.xml etc.,
|
-----(-) Classes
|
-----(-) HMS
|
----- (+) model
|
----- (+) view
|
----- (+) lib
I am sure you may notice few errors .. if u find any plzz reply me back.... thnxx in advance for replies...and thnxx for giving your valuable replies...
Walter (Kaleem) -
Please help me in tuning sql queries. I am a bit new to this. I have generated an Explain plan(plan table) for a particular sql statement using sql navigator. What do i do with this information exactly in order to tune the statement. It is showing some table access full,merge join cartesian, hash join semi and so on. Can anyone guide me with the general tuning procedure with respect to using the plan table analysis.
Hi,
There is a good metalink note about this one
46234.1 : Interpreting Explain plan
Nicolas. -
Hi All,
I have the following query which seems to be blowing our temp tablespace.
Can anyone help me in tuning this?
The query and explian plan are below.
Thanks for all your help
select trim(b.pnr_reference) || ',"' || to_char(b.booking_date, 'DD-MON-YY') || '","' || trim(p.title) || '","' ||
trim(p.forename) || '","' || trim(p.surname) || '
","' || trim(p.email) || '","' || trim(b.home_phone) || '","' || trim(b.address_line_1) || '","' ||
trim(b.address_line_2) || '","' || trim(b.address_line_3)
|| '","' || trim(b.postcode) || '","' || trim(b.country_code) || '","' || null || '","' || -- frequent flyer number
trim(b.promo_opt_in) || '","' || trim(bsout.flight_number) || '","' || to_char(bsout.departure_date, 'DD-MON-YY') || '","' ||trim(bsret.flight_number) ||
'","' || to_char(bsret.departure_date, 'DD-MON-YY') || ' ","' || pax_cnt.num_adults || '","' || pax_cnt.num_children || '","' || pax_cnt.num_infants || '","' ||fares_by_booking.gross_fare_adult || '","' || fares_by_booking.gross_fare_child || '","' ||fares_by_booking.gross_fare_infant || '","' || fares_by_booking.total_gross_fare || '","' || trim(ps.fare_basis) || '","' ||trim(ps1.fare_basis) || '","' || null || '","' || -- user_id null || '","' || -- ip_address
fares_by_booking.currency || '","' || trim(bsout.dep_airport_code) || '","' ||trim(bsout.dest_airport_code) || '","' ||fares_by_booking.gross_fare_adult*ex.exchange_rate || '","' || null || '","' || -- iata_no
trim(b.other_opt_in) || '","' || c.returned || '","' || c.not_available ||'","' || c.on_request || '","' || c.matched || '"
,"' || trim(c.location_code) || '","' || to_char(c.pickup_date, 'DD-MON-YY') || '","' || to_char(c.return_date, 'DD-MON-YY') || '","' || c.period || '","' ||
trim(cb.book_ref) || '","' || cb.car_num || '","' ||
c.avail_warn_code || '","' || c.avail_err_code || '",
"' || c.res_warn_code || '","' || c.res_err_code |
| '"' from bookings b, car_hire_transactions c, car_hire_bookings cb, pax p, booking_sectors bsout, booking_sectors bsret, pax_sectors ps, pax_sectors ps1,
exchange_rates ex, (select b2.booking_id, sum(decode(p2.pax_type,'A',1,0)) num_adults, sum(decode(p2.pax_type,'C',1,0)) num_children, sum(decode(p2.pax_type,'I',1
,0)) num_infants from pax p2, bookings b2
where b2.booking_id = p2.booking_id and b2.booking_date
between TO_DATE('08-08-2005/00:00', 'DD-MM-YYYY/HH24:MI') and TO_DATE('15-08-2005/00:00', 'DD-MM-YYYY/HH24:MI') group by
b2.booking_id) pax_cnt, (select booking_id, currency, sum(gross_fare_adult) gross_fare_adult,
sum(gross_fare_child) gross_fare_child, sum(gross_fare_infant) gross_fare_infant,sum(total_gross_fare) total_gross_fare from (select b3.booking_id booking_id, ps3.sector_seq,
ps3.currency_code currency, max(decode(p3.pax_type,'A',ps3.gross_fare,0)) gross_fare_adult,
max(decode(p3.pax_type,'C',ps3.gross_fare,0)) gross_fare_child
, max(decode(p3.pax_type,'I',ps3.gross_fare,0
)) gross_fare_infant, sum(ps3.gross_fare) total_gross_fare from pax p3,pax_sectors ps3, bookings b3 where b3.booking_id = p3.booking_id and b3.booking_id = ps3.booking_id and p3.pax_seq = ps3.pax_seq and b3.booking_date between TO_DATE('08-08-2005/00:00', 'DD-MM-Y
YYY/HH24:MI') and TO_DATE('15-08-2005/00:00', 'DD-MM-YYYY/HH24:M
I') group by b3.booking_id, ps3
.currency_code, ps3.sector_seq) fares_by_sector group by booking_id, currency) fares_by_booking where
b.booking_date between TO_DATE('08-08-2005/00:00', 'DD-MM-YYYY/
HH24:MI') and TO_DATE('15-08-2005/00:00', 'DD-MM-YYYY/HH24:MI')
and b.car_hire_id = c.car_hire_id(+) and c.car_hire_id = cb.
car_hire_id(+) and p.booking_id = b.booking_id and p.pax_seq
= 1 and b.booking_id = bsout.booking_id and bsout.sector_seq = 1 and b.booking_id = bsret.booking_id(+) and bsret.sector_seq(+) = 2 and p.booking_id = ps.booking_id and p.pax_seq
= ps.pax_seq and ps.sector_seq = 1 and p.booking_id = ps1.booking_id(+) and p.pax_seq = ps1.pax_seq(+) and ps1.sector_seq(+) = 2 and b.booking_id = pax_cnt.booking_id and b.booking_id = fares_by_booking.booking_id and ex.currency_from = fares_by_booking.currency and ex.currency_to = 'GBP' and ex.date_entered = (select max(ex2.date_entered) from exchange_rates ex2 where currency_from = fares_by_booking.currency and currency_to = 'GBP' and ex2.date_entered < b.booking_date)
Explain plan
11:34:28 sqlpplus> /
Elapsed: 00:00:00.00
Execution Plan
0
SELECT STATEMENT Optimizer=CHOOSE (Cost=16 Card=1 Bytes=973)
1 0
HASH JOIN (OUTER) (Cost=16 Card=1 Bytes=973)
2 1
HASH JOIN (Cost=9 Card=1 Bytes=958)
3 2
NESTED LOOPS (OUTER) (Cost=6 Card=1 Bytes=902)
4 3
NESTED LOOPS (Cost=6 Card=1 Bytes=871)
5 4
NESTED LOOPS (OUTER) (Cost=6 Card=1 Bytes=812)
6 5
NESTED LOOPS (Cost=6 Card=1 Bytes=753)
7 6
NESTED LOOPS (Cost=6 Card=1 Bytes=533)
8 7
NESTED LOOPS (OUTER) (Cost=6 Card=1 Bytes=475)
9 8
NESTED LOOPS (Cost=6 Card=1 Bytes=429)
10 9
NESTED LOOPS (Cost=6 Card=1 Bytes=412)
11 10
VIEW (Cost=6 Card=1 Bytes=75)
12 11
SORT (GROUP BY) (Cost=6 Card=1 Bytes=84)
13 12
VIEW (Cost=6 Card=1 Bytes=84)
14 13
SORT (GROUP BY) (Cost=6 Card=1 Bytes=118)
15 14
FILTER
16 15
TABLE ACCESS (BY INDEX ROWID) OF 'PAX_SECTORS'
17 16
NESTED LOOPS (Cost=4 Card=1 Bytes=118)
18 17
NESTED LOOPS (Cost=4 Card=1 Bytes=60)
19 18
VIEW OF 'index$_join$_017' (Cost=4 Card=1
Bytes=31)
20 19
HASH JOIN
21 20
INDEX (FAST FULL SCAN) OF 'BOO_PK' (UN
IQUE) (Cost=1 Card=1 Bytes=31)
22 20
INDEX (FAST FULL SCAN) OF 'BOO_SHARES_
UID_UK' (UNIQUE) (Cost=1 Card=1 Bytes=31)
23 18
TABLE ACCESS (BY INDEX ROWID) OF 'PAX'
24 23
INDEX (RANGE SCAN) OF 'PAX_PK' (UNIQUE)
25 17
INDEX (RANGE SCAN) OF 'PXS_PAX_FK_I' (NON-UN
IQUE)
26 10
TABLE ACCESS (BY INDEX ROWID) OF 'BOOKINGS'
27 26
INDEX (UNIQUE SCAN) OF 'BOO_PK' (UNIQUE)
28 9
TABLE ACCESS (BY INDEX ROWID) OF 'EXCHANGE_RATES'
29 28
INDEX (UNIQUE SCAN) OF 'EXR_PK' (UNIQUE)
30 29
SORT (AGGREGATE)
31 30
FIRST ROW (Cost=2 Card=284 Bytes=3692)
32 31
INDEX (RANGE SCAN (MIN/MAX)) OF 'EXR_PK' (UNIQUE) (C
ost=2 Card=200)
33 8
TABLE ACCESS (BY INDEX ROWID) OF 'BOOKING_SECTORS'
34 33
INDEX (UNIQUE SCAN) OF 'BKS_PK' (UNIQUE)
35 7
TABLE ACCESS (BY INDEX ROWID) OF 'BOOKING_SECTORS'
36 35
INDEX (UNIQUE SCAN) OF 'BKS_PK' (UNIQUE)
37 6
TABLE ACCESS (BY INDEX ROWID) OF 'PAX'
38 37
INDEX (UNIQUE SCAN) OF 'PAX_PK' (UNIQUE)
39 5
TABLE ACCESS (BY INDEX ROWID) OF 'PAX_SECTORS'
40 39
INDEX (UNIQUE SCAN) OF 'PXS_UK' (UNIQUE)
41 4
TABLE ACCESS (BY INDEX ROWID) OF 'PAX_SECTORS'
42 41
INDEX (UNIQUE SCAN) OF 'PXS_UK' (UNIQUE)
43 3
TABLE ACCESS (BY INDEX ROWID) OF 'CAR_HIRE_TRANSACTIONS'
44 43
INDEX (UNIQUE SCAN) OF 'CHT_PK' (UNIQUE)
45 2
VIEW (Cost=3 Card=1 Bytes=56)
46 45
SORT (GROUP BY) (Cost=3 Card=1 Bytes=47)
47 46
FILTER
48 47
TABLE ACCESS (BY INDEX ROWID) OF 'PAX'
49 48
NESTED LOOPS (Cost=1 Card=1 Bytes=47)
50 49
TABLE ACCESS (BY INDEX ROWID) OF 'BOOKINGS' (Cost=1 Card=1 Bytes
=31)
51 50
INDEX (SKIP SCAN) OF 'BOO_SHARES_UID_UK' (UNIQUE)
52 49
INDEX (RANGE SCAN) OF 'PAX_PK' (UNIQUE)
53 1
TABLE ACCESS (FULL) OF 'CAR_HIRE_BOOKINGS' (Cost=6 Card=7 Bytes=105)Hi Guys,
As requested here is the formatted sql.
We are using pga_aggregate_target which is set to 25165824. I dont know if this is relevant but the sort_area_size is set to 524288.
Thanks
SQL
SELECT trim(b.pnr_reference) || ',"' || to_char(b.booking_date, 'DD-MON-YY')
|| '","' || trim(p.title) || '","' || trim(p.forename) || '","' ||
trim(p.surname) || '","' || trim(p.email) || '","' || trim(b.home_phone)
|| '","' || trim(b.address_line_1) || '","' || trim(b.address_line_2)
|| '","' || trim(b.address_line_3) || '","' || trim(b.postcode) ||
'","' || trim(b.country_code) || '","' || null || '","' || trim(
b.promo_opt_in) || '","' || trim(bsout.flight_number) || '","' ||
to_char(bsout.departure_date, 'DD-MON-YY') || '","' || trim(
bsret.flight_number) || '","' || to_char(bsret.departure_date,
'DD-MON-YY') || '","' || pax_cnt.num_adults || '","' ||
pax_cnt.num_children || '","' || pax_cnt.num_infants || '","' ||
fares_by_booking.gross_fare_adult || '","' ||
fares_by_booking.gross_fare_child || '","' ||
fares_by_booking.gross_fare_infant || '","' ||
fares_by_booking.total_gross_fare || '","' || trim(ps.fare_basis) ||
'","' || trim(ps1.fare_basis) || '","' || null || '","' || null || '","'
|| fares_by_booking.currency || '","' || trim(bsout.dep_airport_code)
|| '","' || trim(bsout.dest_airport_code) || '","' ||
fares_by_booking.gross_fare_adult * ex.exchange_rate || '","' || null
|| '","' || trim(b.other_opt_in) || '","' || c.returned || '","' ||
c.not_available || '","' || c.on_request || '","' || c.matched || '","'
|| trim(c.location_code) || '","' || to_char(c.pickup_date, 'DD-MON-YY'
) || '","' || to_char(c.return_date, 'DD-MON-YY') || '","' || c.period
|| '","' || trim(cb.book_ref) || '","' || cb.car_num || '","' ||
c.avail_warn_code || '","' || c.avail_err_code || '","' ||
c.res_warn_code || '","' || c.res_err_code || '"'
FROM bookings b, car_hire_transactions c, car_hire_bookings cb, pax p,
booking_sectors bsout, booking_sectors bsret, pax_sectors ps,
pax_sectors ps1, exchange_rates ex, (SELECT b2.booking_id, sum(
decode(p2.pax_type, 'A', 1,
0)) num_adults, sum(
decode(p2.pax_type, 'C', 1,
0)) num_children,
sum(decode(p2.pax_type,
'I', 1, 0)) num_infants
FROM pax p2, bookings b2
WHERE b2.booking_id = p2.booking_id
AND b2.booking_date BETWEEN to_date('08-08-2005/00:00',
'DD-MM-YYYY/HH24:MI') AND to_date('15-08-2005/00:00',
'DD-MM-YYYY/HH24:MI')
GROUP BY b2.booking_id) pax_cnt, (SELECT booking_id, currency,
sum(gross_fare_adult)
gross_fare_adult,
sum(gross_fare_child)
gross_fare_child,
sum(gross_fare_infant)
gross_fare_infant,
sum(total_gross_fare)
total_gross_fare
FROM (SELECT b3.booking_id booking_id, ps3.sector_seq,
ps3.currency_code currency, max(decode(p3.pax_type,
'A', ps3.gross_fare, 0)) gross_fare_adult, max(
decode(p3.pax_type, 'C', ps3.gross_fare, 0))
gross_fare_child, max(decode(p3.pax_type, 'I',
ps3.gross_fare, 0)) gross_fare_infant, sum(
ps3.gross_fare) total_gross_fare
FROM pax p3, pax_sectors ps3, bookings b3
WHERE b3.booking_id = p3.booking_id
AND b3.booking_id = ps3.booking_id
AND p3.pax_seq = ps3.pax_seq
AND b3.booking_date BETWEEN to_date(
'08-08-2005/00:00', 'DD-MM-YYYY/HH24:MI') AND
to_date('15-08-2005/00:00', 'DD-MM-YYYY/HH24:MI')
GROUP BY b3.booking_id, ps3.currency_code,
ps3.sector_seq) fares_by_sector
GROUP BY booking_id, currency) fares_by_booking
WHERE b.booking_date BETWEEN to_date('08-08-2005/00:00',
'DD-MM-YYYY/HH24:MI') AND to_date('15-08-2005/00:00',
'DD-MM-YYYY/HH24:MI')
AND b.car_hire_id = c.car_hire_id (+)
AND c.car_hire_id = cb.car_hire_id (+)
AND p.booking_id = b.booking_id
AND p.pax_seq = 1
AND b.booking_id = bsout.booking_id
AND bsout.sector_seq = 1
AND b.booking_id = bsret.booking_id (+)
AND bsret.sector_seq (+) = 2
AND p.booking_id = ps.booking_id
AND p.pax_seq = ps.pax_seq
AND ps.sector_seq = 1
AND p.booking_id = ps1.booking_id (+)
AND p.pax_seq = ps1.pax_seq (+)
AND ps1.sector_seq (+) = 2
AND b.booking_id = pax_cnt.booking_id
AND b.booking_id = fares_by_booking.booking_id
AND ex.currency_from = fares_by_booking.currency
AND ex.currency_to = 'GBP'
AND ex.date_entered = (SELECT max(ex2.date_entered)
FROM exchange_rates ex2
WHERE currency_from = fares_by_booking.currency
AND currency_to = 'GBP'
AND ex2.date_entered < b.booking_date)
explain_plan
Execution Steps:
Step # Step Name
41 SELECT STATEMENT
40 FILTER
36 NESTED LOOPS [OUTER]
33 NESTED LOOPS
30 HASH JOIN [OUTER]
28 NESTED LOOPS [OUTER]
25 HASH JOIN
23 HASH JOIN [OUTER]
21 HASH JOIN
15 HASH JOIN
5 HASH JOIN
3 HASH JOIN
1 CAM_OWNER.PAX_SECTORS TABLE ACCESS [FULL]
2 CAM_OWNER.PAX TABLE ACCESS [FULL]
4 CAM_OWNER.BOOKINGS TABLE ACCESS [FULL]
14 . VIEW
13 SORT [GROUP BY]
12 . VIEW
11 SORT [GROUP BY]
10 HASH JOIN
8 HASH JOIN
6 CAM_OWNER.BOOKINGS TABLE ACCESS [FULL]
7 CAM_OWNER.PAX_SECTORS TABLE ACCESS [FULL]
9 CAM_OWNER.PAX TABLE ACCESS [FULL]
20 . VIEW
19 SORT [GROUP BY]
18 HASH JOIN
16 CAM_OWNER.BOOKINGS TABLE ACCESS [FULL]
17 CAM_OWNER.PAX TABLE ACCESS [FULL]
22 CAM_OWNER.PAX_SECTORS TABLE ACCESS [FULL]
24 CAM_OWNER.EXCHANGE_RATES TABLE ACCESS [FULL]
27 CAM_OWNER.CAR_HIRE_TRANSACTIONS TABLE ACCESS [BY INDEX ROWID]
26 CAM_OWNER.CHT_PK INDEX [UNIQUE SCAN]
29 CAM_OWNER.CAR_HIRE_BOOKINGS TABLE ACCESS [FULL]
32 CAM_OWNER.BOOKING_SECTORS TABLE ACCESS [BY INDEX ROWID]
31 CAM_OWNER.BKS_PK INDEX [UNIQUE SCAN]
35 CAM_OWNER.BOOKING_SECTORS TABLE ACCESS [BY INDEX ROWID]
34 CAM_OWNER.BKS_PK INDEX [UNIQUE SCAN]
39 SORT [AGGREGATE]
38 FIRST ROW
37 CAM_OWNER.EXR_PK INDEX [RANGE SCAN (MIN/MAX)] -
F4 Help for Training Event -Tree structure like in PSV2
Hi,
There is any function module to give the F4 help in custome development for Training Event like Tree structure in PSV2.Check AL S's response here for how to do this. CVI 6.0 does not have a native Tree control. This was introduced with CVI 7.0.
Bilal Durrani
NI -
Hi,
I work on below version of oracle.
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.5.0 - Productio
NLSRTL Version 10.2.0.5.0 - ProductionI have below the table structure and index created on the table. I have given the update and it's execution plan also. Can you please suggest a way to tune this query
Table has close to 50 million records in it.
Thanks much in advance for helping
SQL> CREATE TABLE TABLE1
2 (
3 COL1 CHAR(6 BYTE) NOT NULL,
4 COL2 NUMBER(13) NOT NULL,
5 COL3 CHAR(2 BYTE),
6 COL4 CHAR(3 BYTE),
7 COL5 CHAR(5 BYTE),
8 COL6 CHAR(7 BYTE),
9 COL7 NUMBER(4),
10 COL8 NUMBER(6),
11 COL9 NUMBER(9),
12 COL10 NUMBER(6),
13 COL11 CHAR(1 BYTE),
14 COL12 CHAR(2 BYTE)
15 )
16 TABLESPACE AGGREGNAT_DAT_2012T4
17 PCTUSED 0
18 PCTFREE 5
19 INITRANS 1
20 MAXTRANS 255
21 STORAGE (
22 INITIAL 80K
23 NEXT 1M
24 MINEXTENTS 1
25 MAXEXTENTS 2147483645
26 PCTINCREASE 0
27 BUFFER_POOL DEFAULT
28 )
29 NOLOGGING
30 COMPRESS
31 NOCACHE
32 NOPARALLEL
33 MONITORING;
Table created.
SQL> CREATE INDEX IND_TABLE1 ON TABLE1
2 (COL1, COL3, COL4, COL5, COL6,COL7)
3 NOLOGGING
4 TABLESPACE AGGREGNAT_IDX_2012T4
5 PCTFREE 5
6 INITRANS 2
7 MAXTRANS 255
8 STORAGE (
9 INITIAL 64K
10 NEXT 256K
11 MINEXTENTS 1
12 MAXEXTENTS 2147483645
13 PCTINCREASE 0
14 BUFFER_POOL DEFAULT
15 )
16 NOPARALLEL
17 COMPRESS 6;
Index created.
SQL> explain plan for UPDATE TABLE1 o1
2 SET o1.COL12 = 1
3 WHERE COL4 <> 'MDD'
4 AND EXISTS
5 ( SELECT 'E' FROM TABLE1 o2
6 WHERE o2.COL3 = o1.COL3 AND o2.COL4 = o1.COL4
7 AND o2.COL6 = o1.COL6 AND o2.COL7 = o1.COL7 AND o2.COL1 = o1.COL1
8 AND ( o2.COL9 < o1.COL9 OR ( o2.COL9 = o1.COL9 AND o2.rowid < o1.rowid))AND o2.COL5 = o1.COL5);
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 3057860847
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | UPDATE STATEMENT | | 9868K| 705M| 126M (1)|422:03:56 |
| 1 | UPDATE | TABLE1 | | | | |
|* 2 | FILTER | | | | | |
|* 3 | TABLE ACCESS FULL | TABLE1 | 25M| 1808M| 87011 (4)| 00:17:25 |
|* 4 | TABLE ACCESS BY INDEX ROWID| TABLE1 | 1 | 71 | 5 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | IND_TABLE1 | 1 | | 4 (0)| 00:00:01 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter( EXISTS (SELECT 0 FROM "TABLE1" "O2" WHERE "O2"."COL7"=:B1 AND
"O2"."COL6"=:B2 AND "O2"."COL5"=:B3 AND "O2"."COL4"=:B4 AND "O2"."COL3"=:B5 AND
"O2"."COL1"=:B6 AND ("O2"."COL9"<:B7 OR "O2"."COL9"=:B8 AND "O2".ROWID<:B9)))
3 - filter("COL4"<>'MDD')
4 - filter("O2"."COL9"<:B1 OR "O2"."COL9"=:B2 AND "O2".ROWID<:B3)
5 - access("O2"."COL1"=:B1 AND "O2"."COL3"=:B2 AND "O2"."COL4"=:B3 AND
PLAN_TABLE_OUTPUT
"O2"."COL5"=:B4 AND "O2"."COL6"=:B5 AND "O2"."COL7"=:B6)
Note
- dynamic sampling used for this statement
27 rows selected.Thank you very much for guiding
Edited by: user12869307 on Feb 6, 2013 8:52 PM
Edited by: user12869307 on Feb 6, 2013 9:09 PM
Edited by: user12869307 on Feb 6, 2013 9:11 PMWell,
it depends. The query is still a bit confusing to me.
You are trying to update rows having col4 different than 'MDD' if exists another row having same value for (COL1, COL3, COL4, COL5, COL6,COL7) and having a lower or equal value of col9.
What are the business requirements? Do you have some sample data and can explain the logic of this update?
This one:
( o2.COL9 < o1.COL9 OR ( o2.COL9 = o1.COL9 AND o2.rowid < o1.rowid))can actually be written in this way
(o2.COL9 <= o1.COL9 AND o2.rowid < o1.rowid)but why using o2.rowid < o1.rowid?
.>
You should not trust on rowid order.
Check what Tom Kyte is saying in Fetching last record from a table
the rowid is not "generated" in as much as "derived"
The rowid is the address of the row on disk.
Since space can and will be reused, rowids can and will be "reused"
A rowid implies NOTHING other than the location of the row physically. It does not imply age, order of insertion, or anything like that. Regards.
Al
Edited by: Alberto Faenza on Feb 6, 2013 5:10 PM -
Help needed on designing the structure of a flash game
Hi,
I am studying the codes from http://www.emanueleferonato.com/2009/01/16/designing-the-structure-of-a-flash-game-as3-ver sion-part-3/. What I don't get is at level_selection.as. Where does main_menu_button come from? I can't find where it has been created. I only see main_menu, not main_menu_button.
Please help.The codes in level_selection.as looks like this, but the problem is I cannot find main_menu_button anywhere, except for main_menu.
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.SimpleButton;
public class level_selection extends Sprite {
public var main_class:the_game;
private var level_thumb:level_thumbnail;
public function level_selection(passed_class:the_game) {
main_class = passed_class;
for (var i:int = 1; i<=5; i++) {
level_thumb = new level_thumbnail(i,main_class);
addChild(level_thumb);
main_menu_button.addEventListener(MouseEvent.CLICK, on_main_menu_button_clicked);
public function on_main_menu_button_clicked(event:MouseEvent) {
main_class.show_splash();
Maybe you are looking for
-
Import audio book to itunes but it won't sync to my ipod
I am at a complete loss. I have been importing audio books from the public library to itunes and then putting them on my ipod for months. All of a sudden the books won't sync to my ipod. Songs work ok, but my audio books don't. The little sync icon s
-
Macbook pro (early 2008): Trackpad not working under Windows XP
My Trackpad worked regularly under Windows (Bootcamp) and Mac OSx until some months ago my Motherboard had to be exchanged because of a fault function of the graphics card. When I started Macintosh after the Macbook pro was repaired the Trackpad work
-
FF7B Liquidity Forecast report
Hi, After the expiry of the cash discount period (as per vendor/invoice payment terms) the liquidity forecast report should show the full invoice amount. In my case, i am seeing the discounted amount of the invoice after the end of the cash discount
-
Hello Another N900 problem... I use skype and msn accounts, and when I'm on the road, it constantly updates my location and puts it in my nickname. Now it doesn't do that anymore: the location thing in the status bar has dissapeared. When I click on
-
I need to configure a redundant IPSec Connection Profile
I'm moving off of a single RADIUS server on a Windows 2003 domain controller, and onto a pair of Network Access Protection / Network Policy domain controllers on Windows 2008 servers. I've set up the Windows server side. My questions are regarding th