Wrapping a "select" into a "select * from (SQL select)" costs much more
I had a SELECT statement which works OK. It takes about 10-20 seconds to respond.
However, I need to order it and use rownum so I figured by wrapping the statement in a SELECT * FROM (...) would be the same difference, pretty much.
However, before I even add a sort or use rownum, it costs so much more.
How can that be? Surely it runs the subquery and then just shows the columns from that?
Here are the details for both:
SELECT ms.component_part, ip."DESCRIPTION", ms.qty_per_assembly, ipp.
mrp_order_code, ip.planner_buyer, ip.type_code, pps.vendor_no, pps.
vendor_manuf_leadtime, ipp.min_order_qty, ipp.maxweek_supply
period_order_quantity, ipp.safety_stock,
ifsapp.inventory_part_in_stock_api.GET_INVENTORY_QTY_ONHAND(ms.contract,
ms.component_part, NULL) qty_onhand, ip.estimated_material_cost, (SELECT
SUM(ex.qty_demand)
FROM ifsinfo.km_order_supply_demand_mfg ex
WHERE ex.date_required BETWEEN TO_DATE(SYSDATE) AND TO_DATE('01/05/2007',
'DD/MM/YYYY') + 1 - 1 / ((60 * 60) * 24)
AND ex.part_no = ms.component_part
AND ex.contract = ms.contract
GROUP BY ex.part_no) manu_sum_dmd, (SELECT SUM(ex.qty_demand)
FROM ifsinfo.km_order_supply_demand_pur ex
WHERE ex.date_required BETWEEN
TO_DATE(SYSDATE) AND
TO_DATE('01/05/2007',
'DD/MM/YYYY') + 1 - 1 / ((60
* 60) * 24)
AND ex.part_no = ms.
component_part
AND ex.contract = ms.contract
GROUP BY ex.part_no) purch_sum_dmd
FROM ifsapp.manuf_structure ms, ifsapp.inventory_part ip, ifsapp.
inventory_part_planning ipp, ifsapp.purchase_part_supplier pps
WHERE ms.component_part = ip.part_no
AND ms.contract = ip.contract
AND ms.component_part = ipp.part_no
AND ms.contract = ipp.contract
AND ms.component_part = pps.part_no(+)
AND ms.contract = pps.contract(+)
AND NVL(pps.primary_vendor_db, 'Y') = 'Y'
CONNECT BY PRIOR ms.component_part = ms.part_no
AND PRIOR ms.contract = ms.contract
AND ms.eff_phase_in_date <= SYSDATE
AND NVL(ms.eff_phase_out_date, SYSDATE) >= SYSDATE
START WITH ms.part_no = 'K7501890'
AND ms.contract = 'OKMMN'
AND ms.bom_type = 'Manufacturing'
AND ms.eng_chg_level = '1'
Get Explain Plan By:
Cost All Rows
Execution Steps:
328 SELECT STATEMENT
155 SORT (GROUP BY NOSORT)
154 MERGE JOIN (CARTESIAN)
5 FILTER
4 NESTED LOOPS (OUTER)
1 INDEX (RANGE SCAN), INVENTORY_PART_CONFIG_PK (IFSAPP)
3 TABLE ACCESS (BY INDEX ROWID), INVENTORY_PART_TAB (IFSAPP)
2 INDEX (UNIQUE SCAN), INVENTORY_PART_PK (IFSAPP)
153 BUFFER (SORT)
152 VIEW, ORDER_SUPPLY_DEMAND_EXT (IFSAPP)
151 UNION-ALL
9 FILTER
8 INLIST ITERATOR
7 TABLE ACCESS (BY INDEX ROWID), SHOP_MATERIAL_ALLOC_TAB (IFSAPP)
6 INDEX (RANGE SCAN), SHOP_MATERIAL_ALLOC_1_IX (IFSAPP)
13 FILTER
12 INLIST ITERATOR
11 TABLE ACCESS (BY INDEX ROWID), CUSTOMER_ORDER_LINE_TAB (IFSAPP)
10 INDEX (RANGE SCAN), CUSTOMER_ORDER_LINE_2_IX (IFSAPP)
17 FILTER
16 INLIST ITERATOR
15 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_TAB (IFSAPP)
14 INDEX (RANGE SCAN), PURCHASE_ORDER_LINE_1_IX (IFSAPP)
20 FILTER
19 TABLE ACCESS (BY INDEX ROWID), SHOP_ORD_TAB (IFSAPP)
18 INDEX (RANGE SCAN), SHOP_ORD_TAB_1_IX (IFSAPP)
26 FILTER
25 NESTED LOOPS
22 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_COMP_TAB (IFSAPP)
21 INDEX (RANGE SCAN), PURCHASE_ORDER_LINE_COMP_1_IX (IFSAPP)
24 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_TAB (IFSAPP)
23 INDEX (UNIQUE SCAN), PURCHASE_ORDER_LINE_PK (IFSAPP)
30 FILTER
29 INLIST ITERATOR
28 TABLE ACCESS (BY INDEX ROWID), MATERIAL_REQUIS_LINE_TAB (IFSAPP)
27 INDEX (RANGE SCAN), MATERIAL_REQUIS_LINE_1_IX (IFSAPP)
39 FILTER
38 NESTED LOOPS
35 NESTED LOOPS
32 TABLE ACCESS (BY INDEX ROWID), MAINT_MATERIAL_REQ_LINE_TAB (IFSAPP)
31 INDEX (RANGE SCAN), MAINT_MATERIAL_REQ_LINE_IX2 (IFSAPP)
34 TABLE ACCESS (BY INDEX ROWID), MAINT_MATERIAL_REQUISITION_TAB (IFSAPP)
33 INDEX (UNIQUE SCAN), MAINT_MATERIAL_REQUISITION_PK (IFSAPP)
37 TABLE ACCESS (BY INDEX ROWID), ACTIVE_WORK_ORDER_TAB (IFSAPP)
36 INDEX (UNIQUE SCAN), ACTIVE_WORK_ORDER_PK (IFSAPP)
42 FILTER
41 TABLE ACCESS (BY INDEX ROWID), PURCHASE_REQ_LINE_TAB (IFSAPP)
40 INDEX (RANGE SCAN), PURCHASE_REQ_LINE1_IX (IFSAPP)
79 VIEW, MRP_PART_SUPPLY_DEMAND_EXT (IFSAPP)
78 SORT (UNIQUE)
77 UNION-ALL
57 FILTER
56 NESTED LOOPS (ANTI)
44 TABLE ACCESS (BY INDEX ROWID), MRP_PART_SUPPLY_DEMAND_TAB (IFSAPP)
43 INDEX (RANGE SCAN), MRP_PART_SUPPLY_DEMAND_PK (IFSAPP)
55 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
54 UNION-ALL (PARTITION)
48 NESTED LOOPS
46 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
45 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
47 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
53 NESTED LOOPS
50 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
49 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
52 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
51 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
76 FILTER
75 NESTED LOOPS (ANTI)
62 NESTED LOOPS
59 TABLE ACCESS (BY INDEX ROWID), MRP_PART_SUPPLY_DEMAND_TAB (IFSAPP)
58 INDEX (RANGE SCAN), MRP_PART_SUPPLY_DEMAND_PK (IFSAPP)
61 TABLE ACCESS (BY INDEX ROWID), INVENTORY_PART_PLANNING_TAB (IFSAPP)
60 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
74 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
73 UNION-ALL (PARTITION)
67 NESTED LOOPS
64 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
63 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
66 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_TAB (IFSAPP)
65 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
72 NESTED LOOPS
69 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
68 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
71 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
70 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
84 FILTER
83 NESTED LOOPS
80 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
82 TABLE ACCESS (BY INDEX ROWID), SHOP_ORDER_PROP_TAB (IFSAPP)
81 INDEX (RANGE SCAN), SHOP_ORDER_PROP_1_IX (IFSAPP)
90 FILTER
89 NESTED LOOPS
86 TABLE ACCESS (BY INDEX ROWID), LEVEL_1_PART_TAB (IFSAPP)
85 INDEX (UNIQUE SCAN), LEVEL_1_PART_PK (IFSAPP)
88 TABLE ACCESS (BY INDEX ROWID), LEVEL_1_FORECAST_TAB (IFSAPP)
87 INDEX (RANGE SCAN), LEVEL_1_FORECAST_PK (IFSAPP)
96 FILTER
93 FILTER
92 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
91 INDEX (RANGE SCAN), DOP_ORDER_1_IX (IFSAPP)
95 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
94 INDEX (UNIQUE SCAN), DOP_ORDER_PK (IFSAPP)
99 FILTER
98 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
97 INDEX (RANGE SCAN), DOP_ORDER_1_IX (IFSAPP)
112 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
111 UNION-ALL
104 FILTER
103 NESTED LOOPS
101 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
100 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
102 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
110 FILTER
109 NESTED LOOPS
106 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
105 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
108 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
107 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
117 FILTER
116 NESTED LOOPS
113 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
115 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_TAB (IFSAPP)
114 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_2_IX (IFSAPP)
120 FILTER
119 TABLE ACCESS (BY INDEX ROWID), ACTIVE_WORK_ORDER_TAB (IFSAPP)
118 INDEX (RANGE SCAN), ACTIVE_WORK_ORDER_IX2 (IFSAPP)
123 FILTER
122 TABLE ACCESS (BY INDEX ROWID), SPARE_PART_FORECAST_TAB (IFSAPP)
121 INDEX (RANGE SCAN), SPARE_PART_FORECAST_PK (IFSAPP)
126 FILTER
125 TABLE ACCESS (BY INDEX ROWID), CUST_SCHED_PLAN_DEMAND_TAB (IFSAPP)
124 INDEX (RANGE SCAN), CUST_SCHED_PLAN_DEMAND_1_IX (IFSAPP)
138 FILTER
137 HASH JOIN (ANTI)
135 HASH JOIN (ANTI)
133 NESTED LOOPS
130 NESTED LOOPS
128 TABLE ACCESS (BY INDEX ROWID), MATERIAL_PROCUREMENT_LIST_TAB (IFSAPP)
127 INDEX (RANGE SCAN), MPL_AK1 (IFSAPP)
129 INDEX (UNIQUE SCAN), ACTIVITY_PK (IFSAPP)
132 TABLE ACCESS (BY INDEX ROWID), PROJECT_PRODUCT_STRUCTURE_TAB (IFSAPP)
131 INDEX (UNIQUE SCAN), PROJECT_PRODUCT_STRUCTURE_PK (IFSAPP)
134 TABLE ACCESS (FULL), PROCURED_MATERIAL_TAB (IFSAPP)
136 TABLE ACCESS (FULL), PROCURED_MATERIAL_TAB (IFSAPP)
141 FILTER
140 TABLE ACCESS (BY INDEX ROWID), HPM_PART_SUPPLY_DEMAND_TAB (IFSAPP)
139 INDEX (RANGE SCAN), HPM_PART_SUPPLY_DEMAND_PK (IFSAPP)
144 FILTER
143 TABLE ACCESS (BY INDEX ROWID), SUPP_SCHED_PLAN_SUPPLY_TAB (IFSAPP)
142 INDEX (RANGE SCAN), SUPP_SCHED_PLAN_SUPPLY_1_IX (IFSAPP)
147 FILTER
146 TABLE ACCESS (BY INDEX ROWID), ORDER_QUOTATION_LINE_TAB (IFSAPP)
145 INDEX (RANGE SCAN), ORDER_QUOTATION_LINE_2_IX (IFSAPP)
150 FILTER
149 TABLE ACCESS (BY INDEX ROWID), PROMISE_INVENTORY_ORDER_TAB (IFSAPP)
148 INDEX (FULL SCAN), PROMISE_INVENTORY_ORDER_PK (IFSAPP)
306 SORT (GROUP BY NOSORT)
305 NESTED LOOPS
157 TABLE ACCESS (BY INDEX ROWID), PURCHASE_PART_TAB (IFSAPP)
156 INDEX (UNIQUE SCAN), PURCHASE_PART_PK (IFSAPP)
304 VIEW, ORDER_SUPPLY_DEMAND_EXT (IFSAPP)
303 UNION-ALL
161 FILTER
160 INLIST ITERATOR
159 TABLE ACCESS (BY INDEX ROWID), SHOP_MATERIAL_ALLOC_TAB (IFSAPP)
158 INDEX (RANGE SCAN), SHOP_MATERIAL_ALLOC_1_IX (IFSAPP)
165 FILTER
164 INLIST ITERATOR
163 TABLE ACCESS (BY INDEX ROWID), CUSTOMER_ORDER_LINE_TAB (IFSAPP)
162 INDEX (RANGE SCAN), CUSTOMER_ORDER_LINE_2_IX (IFSAPP)
169 FILTER
168 INLIST ITERATOR
167 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_TAB (IFSAPP)
166 INDEX (RANGE SCAN), PURCHASE_ORDER_LINE_1_IX (IFSAPP)
172 FILTER
171 TABLE ACCESS (BY INDEX ROWID), SHOP_ORD_TAB (IFSAPP)
170 INDEX (RANGE SCAN), SHOP_ORD_TAB_1_IX (IFSAPP)
178 FILTER
177 NESTED LOOPS
174 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_COMP_TAB (IFSAPP)
173 INDEX (RANGE SCAN), PURCHASE_ORDER_LINE_COMP_1_IX (IFSAPP)
176 TABLE ACCESS (BY INDEX ROWID), PURCHASE_ORDER_LINE_TAB (IFSAPP)
175 INDEX (UNIQUE SCAN), PURCHASE_ORDER_LINE_PK (IFSAPP)
182 FILTER
181 INLIST ITERATOR
180 TABLE ACCESS (BY INDEX ROWID), MATERIAL_REQUIS_LINE_TAB (IFSAPP)
179 INDEX (RANGE SCAN), MATERIAL_REQUIS_LINE_1_IX (IFSAPP)
191 FILTER
190 NESTED LOOPS
187 NESTED LOOPS
184 TABLE ACCESS (BY INDEX ROWID), MAINT_MATERIAL_REQ_LINE_TAB (IFSAPP)
183 INDEX (RANGE SCAN), MAINT_MATERIAL_REQ_LINE_IX2 (IFSAPP)
186 TABLE ACCESS (BY INDEX ROWID), MAINT_MATERIAL_REQUISITION_TAB (IFSAPP)
185 INDEX (UNIQUE SCAN), MAINT_MATERIAL_REQUISITION_PK (IFSAPP)
189 TABLE ACCESS (BY INDEX ROWID), ACTIVE_WORK_ORDER_TAB (IFSAPP)
188 INDEX (UNIQUE SCAN), ACTIVE_WORK_ORDER_PK (IFSAPP)
194 FILTER
193 TABLE ACCESS (BY INDEX ROWID), PURCHASE_REQ_LINE_TAB (IFSAPP)
192 INDEX (RANGE SCAN), PURCHASE_REQ_LINE1_IX (IFSAPP)
231 VIEW, MRP_PART_SUPPLY_DEMAND_EXT (IFSAPP)
230 SORT (UNIQUE)
229 UNION-ALL
209 FILTER
208 NESTED LOOPS (ANTI)
196 TABLE ACCESS (BY INDEX ROWID), MRP_PART_SUPPLY_DEMAND_TAB (IFSAPP)
195 INDEX (RANGE SCAN), MRP_PART_SUPPLY_DEMAND_PK (IFSAPP)
207 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
206 UNION-ALL (PARTITION)
200 NESTED LOOPS
198 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
197 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
199 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
205 NESTED LOOPS
202 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
201 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
204 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
203 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
228 FILTER
227 NESTED LOOPS (ANTI)
214 NESTED LOOPS
211 TABLE ACCESS (BY INDEX ROWID), MRP_PART_SUPPLY_DEMAND_TAB (IFSAPP)
210 INDEX (RANGE SCAN), MRP_PART_SUPPLY_DEMAND_PK (IFSAPP)
213 TABLE ACCESS (BY INDEX ROWID), INVENTORY_PART_PLANNING_TAB (IFSAPP)
212 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
226 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
225 UNION-ALL (PARTITION)
219 NESTED LOOPS
216 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
215 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
218 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_TAB (IFSAPP)
217 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
224 NESTED LOOPS
221 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
220 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
223 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
222 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
236 FILTER
235 NESTED LOOPS
232 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
234 TABLE ACCESS (BY INDEX ROWID), SHOP_ORDER_PROP_TAB (IFSAPP)
233 INDEX (RANGE SCAN), SHOP_ORDER_PROP_1_IX (IFSAPP)
242 FILTER
241 NESTED LOOPS
238 TABLE ACCESS (BY INDEX ROWID), LEVEL_1_PART_TAB (IFSAPP)
237 INDEX (UNIQUE SCAN), LEVEL_1_PART_PK (IFSAPP)
240 TABLE ACCESS (BY INDEX ROWID), LEVEL_1_FORECAST_TAB (IFSAPP)
239 INDEX (RANGE SCAN), LEVEL_1_FORECAST_PK (IFSAPP)
248 FILTER
245 FILTER
244 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
243 INDEX (RANGE SCAN), DOP_ORDER_1_IX (IFSAPP)
247 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
246 INDEX (UNIQUE SCAN), DOP_ORDER_PK (IFSAPP)
251 FILTER
250 TABLE ACCESS (BY INDEX ROWID), DOP_ORDER_TAB (IFSAPP)
249 INDEX (RANGE SCAN), DOP_ORDER_1_IX (IFSAPP)
264 VIEW, LINE_SCHED_COMP_EXT (IFSAPP)
263 UNION-ALL
256 FILTER
255 NESTED LOOPS
253 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_MTRL_TAB (IFSAPP)
252 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_MTRL_1_IX (IFSAPP)
254 INDEX (UNIQUE SCAN), LINE_SCHED_RECEIPT_PK (IFSAPP)
262 FILTER
261 NESTED LOOPS
258 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_MTRL_TAB (IFSAPP)
257 INDEX (RANGE SCAN), PRODUCTION_RECEIPT_MTRL_1_IX (IFSAPP)
260 TABLE ACCESS (BY INDEX ROWID), PRODUCTION_RECEIPT_TAB (IFSAPP)
259 INDEX (UNIQUE SCAN), PRODUCTION_RECEIPT_PK (IFSAPP)
269 FILTER
268 NESTED LOOPS
265 INDEX (UNIQUE SCAN), INVENTORY_PART_PLANNING_PK (IFSAPP)
267 TABLE ACCESS (BY INDEX ROWID), LINE_SCHED_RECEIPT_TAB (IFSAPP)
266 INDEX (RANGE SCAN), LINE_SCHED_RECEIPT_2_IX (IFSAPP)
272 FILTER
271 TABLE ACCESS (BY INDEX ROWID), ACTIVE_WORK_ORDER_TAB (IFSAPP)
270 INDEX (RANGE SCAN), ACTIVE_WORK_ORDER_IX2 (IFSAPP)
275 FILTER
274 TABLE ACCESS (BY INDEX ROWID), SPARE_PART_FORECAST_TAB (IFSAPP)
273 INDEX (RANGE SCAN), SPARE_PART_FORECAST_PK (IFSAPP)
278 FILTER
277 TABLE ACCESS (BY INDEX ROWID), CUST_SCHED_PLAN_DEMAND_TAB (IFSAPP)
276 INDEX (RANGE SCAN), CUST_SCHED_PLAN_DEMAND_1_IX (IFSAPP)
290 FILTER
289 HASH JOIN (ANTI)
287 HASH JOIN (ANTI)
285 NESTED LOOPS
282 NESTED LOOPS
280 TABLE ACCESS (BY INDEX ROWID), MATERIAL_PROCUREMENT_LIST_TAB (IFSAPP)
279 INDEX (RANGE SCAN), MPL_AK1 (IFSAPP)
281 INDEX (UNIQUE SCAN), ACTIVITY_PK (IFSAPP)
284 TABLE ACCESS (BY INDEX ROWID), PROJECT_PRODUCT_STRUCTURE_TAB (IFSAPP)
283 INDEX (UNIQUE SCAN), PROJECT_PRODUCT_STRUCTURE_PK (IFSAPP)
286 TABLE ACCESS (FULL), PROCURED_MATERIAL_TAB (IFSAPP)
288 TABLE ACCESS (FULL), PROCURED_MATERIAL_TAB (IFSAPP)
293 FILTER
292 TABLE ACCESS (BY INDEX ROWID), HPM_PART_SUPPLY_DEMAND_TAB (IFSAPP)
291 INDEX (RANGE SCAN), HPM_PART_SUPPLY_DEMAND_PK (IFSAPP)
296 FILTER
295 TABLE ACCESS (BY INDEX ROWID), SUPP_SCHED_PLAN_SUPPLY_TAB (IFSAPP)
294 INDEX (RANGE SCAN), SUPP_SCHED_PLAN_SUPPLY_1_IX (IFSAPP)
299 FILTER
298 TABLE ACCESS (BY INDEX ROWID), ORDER_QUOTATION_LINE_TAB (IFSAPP)
297 INDEX (RANGE SCAN), ORDER_QUOTATION_LINE_2_IX (IFSAPP)
302 FILTER
301 TABLE ACCESS (BY INDEX ROWID), PROMISE_INVENTORY_ORDER_TAB (IFSAPP)
300 INDEX (FULL SCAN), PROMISE_INVENTORY_ORDER_PK (IFSAPP)
327 FILTER
326 CONNECT BY (WITH FILTERING)
315 FILTER
314 COUNT
313 HASH JOIN
307 TABLE ACCESS (FULL), INVENTORY_PART_TAB (IFSAPP)
312 HASH JOIN (OUTER)
310 HASH JOIN
308 TABLE ACCESS (FULL), INVENTORY_PART_PLANNING_TAB (IFSAPP)
309 TABLE ACCESS (FULL), MANUF_STRUCTURE_TAB (IFSAPP)
311 TABLE ACCESS (FULL), PURCHASE_PART_SUPPLIER_TAB (IFSAPP)
325 HASH JOIN
316 CONNECT BY PUMP
324 COUNT
323 HASH JOIN
317 TABLE ACCESS (FULL), INVENTORY_PART_TAB (IFSAPP)
322 HASH JOIN (OUTER)
320 HASH JOIN
318 TABLE ACCESS (FULL), INVENTORY_PART_PLANNING_TAB (IFSAPP)
319 TABLE ACCESS (FULL), MANUF_STRUCTURE_TAB (IFSAPP)
321 TABLE ACCESS (FULL), PURCHASE_PART_SUPPLIER_TAB (IFSAPP)
Step Description Est Cost Est Row Count Est Byte Count
1 This operation retrieves multiple ROWIDs by scanning index INVENTORY_PART_CONFIG_PK (ascending by key). 3 1 15
2 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PK. 1 1
3 This operation retrieves a row of table INVENTORY_PART_TAB based on its ROWID. 1 1 17
4 This operation performs an outer join by comparing each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds.
5 This operation takes a row source and rejects some of the rows, returning the accepted rows.
6 This operation retrieves multiple ROWIDs by scanning index SHOP_MATERIAL_ALLOC_1_IX (ascending by key). 3 106
7 This operation retrieves a row of table SHOP_MATERIAL_ALLOC_TAB based on its ROWID. 11 1 41
8 This operation represents an iteration over each element in the list represented by its child node.
9 This operation takes a row source and rejects some of the rows, returning the accepted rows.
10 This operation retrieves multiple ROWIDs by scanning index CUSTOMER_ORDER_LINE_2_IX (ascending by key). 3 10
11 This operation retrieves a row of table CUSTOMER_ORDER_LINE_TAB based on its ROWID. 2 1 48
12 This operation represents an iteration over each element in the list represented by its child node.
13 This operation takes a row source and rejects some of the rows, returning the accepted rows.
14 This operation retrieves multiple ROWIDs by scanning index PURCHASE_ORDER_LINE_1_IX (ascending by key). 3 2
15 This operation retrieves a row of table PURCHASE_ORDER_LINE_TAB based on its ROWID. 1 1 48
16 This operation represents an iteration over each element in the list represented by its child node.
17 This operation takes a row source and rejects some of the rows, returning the accepted rows.
18 This operation retrieves multiple ROWIDs by scanning index SHOP_ORD_TAB_1_IX (ascending by key). 1 21
19 This operation retrieves a row of table SHOP_ORD_TAB based on its ROWID. 2 1 46
20 This operation takes a row source and rejects some of the rows, returning the accepted rows.
21 This operation retrieves multiple ROWIDs by scanning index PURCHASE_ORDER_LINE_COMP_1_IX (ascending by key). 1 12
22 This operation retrieves a row of table PURCHASE_ORDER_LINE_COMP_TAB based on its ROWID. 1 1 43
23 This operation retrieves a single ROWID by an index lookup of PURCHASE_ORDER_LINE_PK. 1 1
24 This operation retrieves a row of table PURCHASE_ORDER_LINE_TAB based on its ROWID. 1 1 25
25 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 68
26 This operation takes a row source and rejects some of the rows, returning the accepted rows.
27 This operation retrieves multiple ROWIDs by scanning index MATERIAL_REQUIS_LINE_1_IX (ascending by key). 2 1
28 This operation retrieves a row of table MATERIAL_REQUIS_LINE_TAB based on its ROWID. 1 1 37
29 This operation represents an iteration over each element in the list represented by its child node.
30 This operation takes a row source and rejects some of the rows, returning the accepted rows.
31 This operation retrieves multiple ROWIDs by scanning index MAINT_MATERIAL_REQ_LINE_IX2 (ascending by key). 1 1
32 This operation retrieves a row of table MAINT_MATERIAL_REQ_LINE_TAB based on its ROWID. 1 1 79
33 This operation retrieves a single ROWID by an index lookup of MAINT_MATERIAL_REQUISITION_PK. 1
34 This operation retrieves a row of table MAINT_MATERIAL_REQUISITION_TAB based on its ROWID. 1 1 43
35 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 122
36 This operation retrieves a single ROWID by an index lookup of ACTIVE_WORK_ORDER_PK. 1
37 This operation retrieves a row of table ACTIVE_WORK_ORDER_TAB based on its ROWID. 1 1 30
38 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 152
39 This operation takes a row source and rejects some of the rows, returning the accepted rows.
40 This operation retrieves multiple ROWIDs by scanning index PURCHASE_REQ_LINE1_IX (ascending by key). 3 3
41 This operation retrieves a row of table PURCHASE_REQ_LINE_TAB based on its ROWID. 1 1 40
42 This operation takes a row source and rejects some of the rows, returning the accepted rows.
43 This operation retrieves multiple ROWIDs by scanning index MRP_PART_SUPPLY_DEMAND_PK (ascending by key). 3 17
44 This operation retrieves a row of table MRP_PART_SUPPLY_DEMAND_TAB based on its ROWID. 2 1 49
45 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
46 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 48
47 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1 8
48 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 56
49 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
50 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
51 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
52 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
53 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 64
54 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
55 This operation yields the result of performing the query of views. 1 1 40
56 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 89
57 This operation takes a row source and rejects some of the rows, returning the accepted rows.
58 This operation retrieves multiple ROWIDs by scanning index MRP_PART_SUPPLY_DEMAND_PK (ascending by key). 3 17
59 This operation retrieves a row of table MRP_PART_SUPPLY_DEMAND_TAB based on its ROWID. 2 1 49
60 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 1 1
61 This operation retrieves a row of table INVENTORY_PART_PLANNING_TAB based on its ROWID. 1 1 17
62 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 66
63 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
64 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
65 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1
66 This operation retrieves a row of table LINE_SCHED_RECEIPT_TAB based on its ROWID. 1 1 22
67 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 61
68 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
69 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 26
70 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
71 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
72 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 51
73 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
74 This operation yields the result of performing the query of views. 1 1 32
75 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 4 1 98
76 This operation takes a row source and rejects some of the rows, returning the accepted rows.
77 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
78 This operation returns the distinct rows from its child row source, in order. 11 2 187
79 This operation yields the result of performing the query of views. 11 2 80
80 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 2 1 15
81 This operation retrieves multiple ROWIDs by scanning index SHOP_ORDER_PROP_1_IX (ascending by key). 2 30
82 This operation retrieves a row of table SHOP_ORDER_PROP_TAB based on its ROWID. 2 1 44
83 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 59
84 This operation takes a row source and rejects some of the rows, returning the accepted rows.
85 This operation retrieves a single ROWID by an index lookup of LEVEL_1_PART_PK. 1 1
86 This operation retrieves a row of table LEVEL_1_PART_TAB based on its ROWID. 1 1 17
87 This operation retrieves multiple ROWIDs by scanning index LEVEL_1_FORECAST_PK (ascending by key). 1 16
88 This operation retrieves a row of table LEVEL_1_FORECAST_TAB based on its ROWID. 1 1 31
89 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 48
90 This operation takes a row source and rejects some of the rows, returning the accepted rows.
91 This operation retrieves multiple ROWIDs by scanning index DOP_ORDER_1_IX (ascending by key). 1 1
92 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 96
93 This operation takes a row source and rejects some of the rows, returning the accepted rows.
94 This operation retrieves a single ROWID by an index lookup of DOP_ORDER_PK. 1
95 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 43
96 This operation takes a row source and rejects some of the rows, returning the accepted rows.
97 This operation retrieves multiple ROWIDs by scanning index DOP_ORDER_1_IX (ascending by key). 1 1
98 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 69
99 This operation takes a row source and rejects some of the rows, returning the accepted rows.
100 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
101 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 48
102 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1 8
103 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 56
104 This operation takes a row source and rejects some of the rows, returning the accepted rows.
105 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
106 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
107 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
108 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
109 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 64
110 This operation takes a row source and rejects some of the rows, returning the accepted rows.
111 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
112 This operation yields the result of performing the query of views. 4 2 80
113 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 2 1 15
114 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_2_IX (ascending by key). 1
115 This operation retrieves a row of table LINE_SCHED_RECEIPT_TAB based on its ROWID. 1 1 53
116 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 68
117 This operation takes a row source and rejects some of the rows, returning the accepted rows.
118 This operation retrieves multiple ROWIDs by scanning index ACTIVE_WORK_ORDER_IX2 (ascending by key). 1 1
119 This operation retrieves a row of table ACTIVE_WORK_ORDER_TAB based on its ROWID. 1 1 73
120 This operation takes a row source and rejects some of the rows, returning the accepted rows.
121 This operation retrieves multiple ROWIDs by scanning index SPARE_PART_FORECAST_PK (ascending by key). 1
122 This operation retrieves a row of table SPARE_PART_FORECAST_TAB based on its ROWID. 1 1 53
123 This operation takes a row source and rejects some of the rows, returning the accepted rows.
124 This operation retrieves multiple ROWIDs by scanning index CUST_SCHED_PLAN_DEMAND_1_IX (ascending by key). 1 1
125 This operation retrieves a row of table CUST_SCHED_PLAN_DEMAND_TAB based on its ROWID. 1 1 40
126 This operation takes a row source and rejects some of the rows, returning the accepted rows.
127 This operation retrieves multiple ROWIDs by scanning index MPL_AK1 (ascending by key). 2 3
128 This operation retrieves a row of table MATERIAL_PROCUREMENT_LIST_TAB based on its ROWID. 1 1 52
129 This operation retrieves a single ROWID by an index lookup of ACTIVITY_PK. 1 7
130 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 59
131 This operation retrieves a single ROWID by an index lookup of PROJECT_PRODUCT_STRUCTURE_PK. 1
132 This operation retrieves a row of table PROJECT_PRODUCT_STRUCTURE_TAB based on its ROWID. 1 1 12
133 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 71
134 This operation retrieves all rows of table PROCURED_MATERIAL_TAB using a full table scan. 2 77 616
135 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 6 1 79
136 This operation retrieves all rows of table PROCURED_MATERIAL_TAB using a full table scan. 2 273 2730
137 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 9 1 89
138 This operation takes a row source and rejects some of the rows, returning the accepted rows.
139 This operation retrieves multiple ROWIDs by scanning index HPM_PART_SUPPLY_DEMAND_PK (ascending by key). 1
140 This operation retrieves a row of table HPM_PART_SUPPLY_DEMAND_TAB based on its ROWID. 1 1 64
141 This operation takes a row source and rejects some of the rows, returning the accepted rows.
142 This operation retrieves multiple ROWIDs by scanning index SUPP_SCHED_PLAN_SUPPLY_1_IX (ascending by key). 1 1
143 This operation retrieves a row of table SUPP_SCHED_PLAN_SUPPLY_TAB based on its ROWID. 1 1 27
144 This operation takes a row source and rejects some of the rows, returning the accepted rows.
145 This operation retrieves multiple ROWIDs by scanning index ORDER_QUOTATION_LINE_2_IX (ascending by key). 3 27
146 This operation retrieves a row of table ORDER_QUOTATION_LINE_TAB based on its ROWID. 3 1 48
147 This operation takes a row source and rejects some of the rows, returning the accepted rows.
148 This operation retrieves all ROWIDs via a full index lookup of PROMISE_INVENTORY_ORDER_PK. 1
149 This operation retrieves a row of table PROMISE_INVENTORY_ORDER_TAB based on its ROWID. 1 1 46
150 This operation takes a row source and rejects some of the rows, returning the accepted rows.
151 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
152 This operation yields the result of performing the query of views. 61 25 1000
153 This plan step has no supplementary description information. 62 25 1000
154 This operation denotes a cartesian product between its two children row sources. Cartesian products are extremely inefficient. 63 8 576
155 63 8 576
156 This operation retrieves a single ROWID by an index lookup of PURCHASE_PART_PK. 2 1
157 This operation retrieves a row of table PURCHASE_PART_TAB based on its ROWID. 1 1 22
158 This operation retrieves multiple ROWIDs by scanning index SHOP_MATERIAL_ALLOC_1_IX (ascending by key). 3 106
159 This operation retrieves a row of table SHOP_MATERIAL_ALLOC_TAB based on its ROWID. 11 1 41
160 This operation represents an iteration over each element in the list represented by its child node.
161 This operation takes a row source and rejects some of the rows, returning the accepted rows.
162 This operation retrieves multiple ROWIDs by scanning index CUSTOMER_ORDER_LINE_2_IX (ascending by key). 3 10
163 This operation retrieves a row of table CUSTOMER_ORDER_LINE_TAB based on its ROWID. 2 1 48
164 This operation represents an iteration over each element in the list represented by its child node.
165 This operation takes a row source and rejects some of the rows, returning the accepted rows.
166 This operation retrieves multiple ROWIDs by scanning index PURCHASE_ORDER_LINE_1_IX (ascending by key). 3 2
167 This operation retrieves a row of table PURCHASE_ORDER_LINE_TAB based on its ROWID. 1 1 48
168 This operation represents an iteration over each element in the list represented by its child node.
169 This operation takes a row source and rejects some of the rows, returning the accepted rows.
170 This operation retrieves multiple ROWIDs by scanning index SHOP_ORD_TAB_1_IX (ascending by key). 1 21
171 This operation retrieves a row of table SHOP_ORD_TAB based on its ROWID. 2 1 46
172 This operation takes a row source and rejects some of the rows, returning the accepted rows.
173 This operation retrieves multiple ROWIDs by scanning index PURCHASE_ORDER_LINE_COMP_1_IX (ascending by key). 1 12
174 This operation retrieves a row of table PURCHASE_ORDER_LINE_COMP_TAB based on its ROWID. 1 1 43
175 This operation retrieves a single ROWID by an index lookup of PURCHASE_ORDER_LINE_PK. 1 1
176 This operation retrieves a row of table PURCHASE_ORDER_LINE_TAB based on its ROWID. 1 1 25
177 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 68
178 This operation takes a row source and rejects some of the rows, returning the accepted rows.
179 This operation retrieves multiple ROWIDs by scanning index MATERIAL_REQUIS_LINE_1_IX (ascending by key). 2 1
180 This operation retrieves a row of table MATERIAL_REQUIS_LINE_TAB based on its ROWID. 1 1 37
181 This operation represents an iteration over each element in the list represented by its child node.
182 This operation takes a row source and rejects some of the rows, returning the accepted rows.
183 This operation retrieves multiple ROWIDs by scanning index MAINT_MATERIAL_REQ_LINE_IX2 (ascending by key). 1 1
184 This operation retrieves a row of table MAINT_MATERIAL_REQ_LINE_TAB based on its ROWID. 1 1 79
185 This operation retrieves a single ROWID by an index lookup of MAINT_MATERIAL_REQUISITION_PK. 1
186 This operation retrieves a row of table MAINT_MATERIAL_REQUISITION_TAB based on its ROWID. 1 1 43
187 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 122
188 This operation retrieves a single ROWID by an index lookup of ACTIVE_WORK_ORDER_PK. 1
189 This operation retrieves a row of table ACTIVE_WORK_ORDER_TAB based on its ROWID. 1 1 30
190 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 152
191 This operation takes a row source and rejects some of the rows, returning the accepted rows.
192 This operation retrieves multiple ROWIDs by scanning index PURCHASE_REQ_LINE1_IX (ascending by key). 3 3
193 This operation retrieves a row of table PURCHASE_REQ_LINE_TAB based on its ROWID. 1 1 40
194 This operation takes a row source and rejects some of the rows, returning the accepted rows.
195 This operation retrieves multiple ROWIDs by scanning index MRP_PART_SUPPLY_DEMAND_PK (ascending by key). 3 17
196 This operation retrieves a row of table MRP_PART_SUPPLY_DEMAND_TAB based on its ROWID. 2 1 49
197 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
198 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 48
199 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1 8
200 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 56
201 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
202 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
203 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
204 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
205 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 64
206 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
207 This operation yields the result of performing the query of views. 1 1 40
208 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 89
209 This operation takes a row source and rejects some of the rows, returning the accepted rows.
210 This operation retrieves multiple ROWIDs by scanning index MRP_PART_SUPPLY_DEMAND_PK (ascending by key). 3 17
211 This operation retrieves a row of table MRP_PART_SUPPLY_DEMAND_TAB based on its ROWID. 2 1 49
212 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 1 1
213 This operation retrieves a row of table INVENTORY_PART_PLANNING_TAB based on its ROWID. 1 1 17
214 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 66
215 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
216 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
217 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1
218 This operation retrieves a row of table LINE_SCHED_RECEIPT_TAB based on its ROWID. 1 1 22
219 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 61
220 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
221 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 26
222 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
223 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
224 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 51
225 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
226 This operation yields the result of performing the query of views. 1 1 32
227 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 4 1 98
228 This operation takes a row source and rejects some of the rows, returning the accepted rows.
229 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
230 This operation returns the distinct rows from its child row source, in order. 11 2 187
231 This operation yields the result of performing the query of views. 11 2 80
232 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 2 1 15
233 This operation retrieves multiple ROWIDs by scanning index SHOP_ORDER_PROP_1_IX (ascending by key). 2 30
234 This operation retrieves a row of table SHOP_ORDER_PROP_TAB based on its ROWID. 2 1 44
235 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 59
236 This operation takes a row source and rejects some of the rows, returning the accepted rows.
237 This operation retrieves a single ROWID by an index lookup of LEVEL_1_PART_PK. 1 1
238 This operation retrieves a row of table LEVEL_1_PART_TAB based on its ROWID. 1 1 17
239 This operation retrieves multiple ROWIDs by scanning index LEVEL_1_FORECAST_PK (ascending by key). 1 16
240 This operation retrieves a row of table LEVEL_1_FORECAST_TAB based on its ROWID. 1 1 31
241 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 48
242 This operation takes a row source and rejects some of the rows, returning the accepted rows.
243 This operation retrieves multiple ROWIDs by scanning index DOP_ORDER_1_IX (ascending by key). 1 1
244 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 96
245 This operation takes a row source and rejects some of the rows, returning the accepted rows.
246 This operation retrieves a single ROWID by an index lookup of DOP_ORDER_PK. 1
247 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 43
248 This operation takes a row source and rejects some of the rows, returning the accepted rows.
249 This operation retrieves multiple ROWIDs by scanning index DOP_ORDER_1_IX (ascending by key). 1 1
250 This operation retrieves a row of table DOP_ORDER_TAB based on its ROWID. 1 1 69
251 This operation takes a row source and rejects some of the rows, returning the accepted rows.
252 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_MTRL_1_IX (ascending by key). 1 1
253 This operation retrieves a row of table LINE_SCHED_RECEIPT_MTRL_TAB based on its ROWID. 1 1 48
254 This operation retrieves a single ROWID by an index lookup of LINE_SCHED_RECEIPT_PK. 1 8
255 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 56
256 This operation takes a row source and rejects some of the rows, returning the accepted rows.
257 This operation retrieves multiple ROWIDs by scanning index PRODUCTION_RECEIPT_MTRL_1_IX (ascending by key). 1 1
258 This operation retrieves a row of table PRODUCTION_RECEIPT_MTRL_TAB based on its ROWID. 1 1 39
259 This operation retrieves a single ROWID by an index lookup of PRODUCTION_RECEIPT_PK. 1
260 This operation retrieves a row of table PRODUCTION_RECEIPT_TAB based on its ROWID. 1 1 25
261 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 64
262 This operation takes a row source and rejects some of the rows, returning the accepted rows.
263 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
264 This operation yields the result of performing the query of views. 4 2 80
265 This operation retrieves a single ROWID by an index lookup of INVENTORY_PART_PLANNING_PK. 2 1 15
266 This operation retrieves multiple ROWIDs by scanning index LINE_SCHED_RECEIPT_2_IX (ascending by key). 1
267 This operation retrieves a row of table LINE_SCHED_RECEIPT_TAB based on its ROWID. 1 1 53
268 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 68
269 This operation takes a row source and rejects some of the rows, returning the accepted rows.
270 This operation retrieves multiple ROWIDs by scanning index ACTIVE_WORK_ORDER_IX2 (ascending by key). 1 1
271 This operation retrieves a row of table ACTIVE_WORK_ORDER_TAB based on its ROWID. 1 1 73
272 This operation takes a row source and rejects some of the rows, returning the accepted rows.
273 This operation retrieves multiple ROWIDs by scanning index SPARE_PART_FORECAST_PK (ascending by key). 1
274 This operation retrieves a row of table SPARE_PART_FORECAST_TAB based on its ROWID. 1 1 53
275 This operation takes a row source and rejects some of the rows, returning the accepted rows.
276 This operation retrieves multiple ROWIDs by scanning index CUST_SCHED_PLAN_DEMAND_1_IX (ascending by key). 1 1
277 This operation retrieves a row of table CUST_SCHED_PLAN_DEMAND_TAB based on its ROWID. 1 1 40
278 This operation takes a row source and rejects some of the rows, returning the accepted rows.
279 This operation retrieves multiple ROWIDs by scanning index MPL_AK1 (ascending by key). 2 3
280 This operation retrieves a row of table MATERIAL_PROCUREMENT_LIST_TAB based on its ROWID. 1 1 52
281 This operation retrieves a single ROWID by an index lookup of ACTIVITY_PK. 1 7
282 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 2 1 59
283 This operation retrieves a single ROWID by an index lookup of PROJECT_PRODUCT_STRUCTURE_PK. 1
284 This operation retrieves a row of table PROJECT_PRODUCT_STRUCTURE_TAB based on its ROWID. 1 1 12
285 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 3 1 71
286 This operation retrieves all rows of table PROCURED_MATERIAL_TAB using a full table scan. 2 77 616
287 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 6 1 79
288 This operation retrieves all rows of table PROCURED_MATERIAL_TAB using a full table scan. 2 273 2730
289 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 9 1 89
290 This operation takes a row source and rejects some of the rows, returning the accepted rows.
291 This operation retrieves multiple ROWIDs by scanning index HPM_PART_SUPPLY_DEMAND_PK (ascending by key). 1
292 This operation retrieves a row of table HPM_PART_SUPPLY_DEMAND_TAB based on its ROWID. 1 1 64
293 This operation takes a row source and rejects some of the rows, returning the accepted rows.
294 This operation retrieves multiple ROWIDs by scanning index SUPP_SCHED_PLAN_SUPPLY_1_IX (ascending by key). 1 1
295 This operation retrieves a row of table SUPP_SCHED_PLAN_SUPPLY_TAB based on its ROWID. 1 1 27
296 This operation takes a row source and rejects some of the rows, returning the accepted rows.
297 This operation retrieves multiple ROWIDs by scanning index ORDER_QUOTATION_LINE_2_IX (ascending by key). 3 27
298 This operation retrieves a row of table ORDER_QUOTATION_LINE_TAB based on its ROWID. 3 1 48
299 This operation takes a row source and rejects some of the rows, returning the accepted rows.
300 This operation retrieves all ROWIDs via a full index lookup of PROMISE_INVENTORY_ORDER_PK. 1
301 This operation retrieves a row of table PROMISE_INVENTORY_ORDER_TAB based on its ROWID. 1 1 46
302 This operation takes a row source and rejects some of the rows, returning the accepted rows.
303 This operation accepts two sets of rows and returns the conglomerate of both sets, including all duplicates.
304 This operation yields the result of performing the query of views. 61 25 1000
305 This operation compares each row of its first child row source with all rows of its second child row source, joining those row pairs for which some condition holds. 62 25 1550
306 62 25 1550
307 This operation retrieves all rows of table INVENTORY_PART_TAB using a full table scan. 169 138200 6633600
308 This operation retrieves all rows of table INVENTORY_PART_PLANNING_TAB using a full table scan. 56 137844 3721788
309 This operation retrieves all rows of table MANUF_STRUCTURE_TAB using a full table scan. 107 132824 5844256
310 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 358 133076 9448396
311 This operation retrieves all rows of table PURCHASE_PART_SUPPLIER_TAB using a full table scan. 103 128836 3607408
312 This operation performs an anti join by taking its two child row sources and hashing their join columns to find row pairs which satisfy the join condition. 708 133076 13174524
313 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 1228 133674 19650078
314 This operation counts the number of rows in its child row source.
315 This operation takes a row source and rejects some of the rows, returning the accepted rows.
316 This plan step has no supplementary description information.
317 This operation retrieves all rows of table INVENTORY_PART_TAB using a full table scan. 169 138200 6633600
318 This operation retrieves all rows of table INVENTORY_PART_PLANNING_TAB using a full table scan. 56 137844 3721788
319 This operation retrieves all rows of table MANUF_STRUCTURE_TAB using a full table scan. 107 132824 5844256
320 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 358 133076 9448396
321 This operation retrieves all rows of table PURCHASE_PART_SUPPLIER_TAB using a full table scan. 103 128836 3607408
322 This operation performs an anti join by taking its two child row sources and hashing their join columns to find row pairs which satisfy the join condition. 708 133076 13174524
323 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 1228 133674 19650078
324 This operation counts the number of rows in its child row source.
325 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition.
326 This operation reorders the rows so that they are retrieved hierarchically (parent rows precede their children rows).
327 This operation takes a row source and rejects some of the rows, returning the accepted rows.
328 This step in the plan designates this statement as a SELECT statement.
and
SELECT l.*
FROM (SELECT ms.component_part, ip."DESCRIPTION", ms.qty_per_assembly, ipp.
mrp_order_code, ip.planner_buyer, ip.type_code, pps.vendor_no,
pps.vendor_manuf_leadtime, ipp.min_order_qty, ipp.
maxweek_supply period_order_quantity, ipp.safety_stock,
ifsapp.inventory_part_in_stock_api.GET_INVENTORY_QTY_ONHAND(
ms.contract, ms.component_part, NULL) qty_onhand,
ip.estimated_material_cost, (SELECT SUM(ex.qty_demand)
FROM ifsinfo.km_order_supply_demand_mfg ex
WHERE ex.date_required
BETWEEN TO_DATE(SYSDATE)
AND TO_DATE(
'01/05/2007',
'DD/MM/YYYY') + 1 - 1 /
((60 * 60) * 24)
AND ex.part_no = ms.
component_part
AND ex.contract = ms.
contract
GROUP BY ex.part_no)
manu_sum_dmd, (SELECT SUM(ex.qty_demand)
FROM ifsinfo.km_order_supply_demand_pur ex
WHERE ex.date_required BETWEEN TO_DATE(
SYSDATE) AND TO_DATE('01/05/2007',
'DD/MM/YYYY') + 1 - 1 / ((60 * 60) *
24)
AND ex.part_no = ms.component_part
AND ex.contract = ms.contract
GROUP BY ex.part_no) purch_sum_dmd
FROM ifsapp.manuf_structure ms, ifsapp.inventory_part ip, ifsapp.
inventory_part_planning ipp, ifsapp.purchase_part_supplier
pps
WHERE ms.component_part = ip.part_no
AND ms.contract = ip.contract
AND ms.component_part = ipp.part_no
AND ms.contract = ipp.contract
AND ms.component_part = pps.part_no(+)
AND ms.contract = pps.contract(+)
AND NVL(pps.primary_vendor_db, 'Y') = 'Y'
CONNECT BY PRIOR ms.component_part = ms.part_no
AND PRIOR ms.contract = ms.contract
AND ms.eff_phase_in_date <= SYSDATE
AND NVL(ms.eff_phase_out_date, SYSDATE) >= SYSDATE
START WITH ms.part_no = 'K7501890'
AND ms.contract = 'OKMMN'
AND ms.bom_type = 'Manufacturing'
AND ms.eng_chg_level = '1') l
Get Explain Plan By:
Cost All Rows
Execution Steps:
23 SELECT STATEMENT
22 VIEW
21 FILTER
20 CONNECT BY (WITH FILTERING)
9 FILTER
8 COUNT
7 HASH JOIN
1 TABLE ACCESS (FULL), INVENTORY_PART_TAB (IFSAPP)
6 HASH JOIN (OUTER)
4 HASH JOIN
2 TABLE ACCESS (FULL), INVENTORY_PART_PLANNING_TAB (IFSAPP)
3 TABLE ACCESS (FULL), MANUF_STRUCTURE_TAB (IFSAPP)
5 TABLE ACCESS (FULL), PURCHASE_PART_SUPPLIER_TAB (IFSAPP)
19 HASH JOIN
10 CONNECT BY PUMP
18 COUNT
17 HASH JOIN
11 TABLE ACCESS (FULL), INVENTORY_PART_TAB (IFSAPP)
16 HASH JOIN (OUTER)
14 HASH JOIN
12 TABLE ACCESS (FULL), INVENTORY_PART_PLANNING_TAB (IFSAPP)
13 TABLE ACCESS (FULL), MANUF_STRUCTURE_TAB (IFSAPP)
15 TABLE ACCESS (FULL), PURCHASE_PART_SUPPLIER_TAB (IFSAPP)
Step Description Est Cost Est Row Count Est Byte Count
1 This operation retrieves all rows of table INVENTORY_PART_TAB using a full table scan. 169 138200 6633600
2 This operation retrieves all rows of table INVENTORY_PART_PLANNING_TAB using a full table scan. 56 137844 3721788
3 This operation retrieves all rows of table MANUF_STRUCTURE_TAB using a full table scan. 107 132824 5844256
4 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 358 133076 9448396
5 This operation retrieves all rows of table PURCHASE_PART_SUPPLIER_TAB using a full table scan. 103 128836 3607408
6 This operation performs an anti join by taking its two child row sources and hashing their join columns to find row pairs which satisfy the join condition. 708 133076 13174524
7 This operation takes its two child row sources and hashes their join columns to find row pairs which satisfy the join condition. 1228 133674 19650078
8 This operation counts the number of rows in its child row source.
9 This operation takes a row source and rejects some of the rows, returning the accepted rows.
10 This plan step has no supplementary description information.
11 This operation retrieves all rows of table INVENTORY_PART_TAB using a full table scan. 169 138200 6633600
12 This
I really do not understand.
If I use a simple example, it keeps the cost and explain plan the same.
Ie
SELECT part_no, "DESCRIPTION"
FROM inventory_partand
SELECT l.*
FROM (SELECT part_no, "DESCRIPTION"
FROM inventory_part) lhave the same cost plan.
This is what I would have expected.
How can it change so dramatically in my other example?
Similar Messages
-
Unable To Select From SQL Server table with more than 42 columns
I have set up a link between a Microsoft SQL Server 2003 database and an Oracle 9i database using Heterogeneous Services (HSODBC). It's working well with most of the schema I'm selecting from except for 3 tables. I don't know why. The common denominator between all the tables is that they all have at least 42 columns each, two have 42 columns, one has 56, and the other one, 66. Two of the tables are empty, one has almost 100k records, one has has 170k records. So I don't think the size of the table matters.
Is there a limitation on the number of table columns you can select from through a dblink? Even the following statement errors out:
select 1
from "Table_With_42_Cols"@sqlserver_db
The error message I get is:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message [Generic Connectivity Using ODBC]
ORA-02063: preceding 2 lines from sqlserver_db
Any assistance would be greatly appreciated. Thanks!Not a very efficient and space friendly design to do name-value pairs like that.
Other methods to consider is splitting those 1500 parameters up into groupings of similar parameters, and then have a table per group.
Another option would be to use "vertical table partitioning" (as oppose to the more standard horizontal partitionining provided by the Oracle partition option) - this can be achieved (kind of) in Oracle using clusters.
Sooner or later this name-value design is going to bite you hard. It has 1500 rows where there should be only 1 row. It is not scalable.. and as you're discovering, it is unnatural to use. I would rather change that table and design sooner than later. -
Tuning PL/SQL - tkprof shows much more work for RECURSIVE STATEMENTS
Hi,
Firstly I'm not sure if this should be in "Database - General" or "SQL and PL/SQL". Since it's more of a performance tuning question than specifically about the PL/SQL, I'm going to put it here in "Database - General". I hope that doesn't offend anyone.
I've just started looking at a reported performance problem in our app. One of the developers set me up a procedure that replicates the issue, I ran it while tracing the session and then fed the trace file to tkprof. The results at the bottom of my tkprof output file look like this:
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 3 0.01 0.07 10 60 0 0
Execute 3 0.01 0.01 0 3 0 3
Fetch 0 0.00 0.00 0 0 0 0
total 6 0.03 0.08 10 63 0 3
Misses in library cache during parse: 1
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 5 0.00 0.00
SQL*Net message from client 4 1.68 1.70
db file sequential read 18 0.01 0.10
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 416 0.00 0.01 0 0 2 0
Execute 1456 0.71 0.75 26 1739 425 590
Fetch 2932 0.12 2.21 337 6338 0 3061
total 4804 0.84 2.98 363 8077 427 3651
Misses in library cache during parse: 25
Misses in library cache during execute: 24
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file sequential read 343 0.08 2.09
db file scattered read 1 0.00 0.00
47 user SQL statements in session.
888 internal SQL statements in session.
935 SQL statements in session.
31 statements EXPLAINed in this session.I'm looking in particular at that relatively high activity for RECURSIVE STATEMENTS, because to me, the NON-RECURSIVE (ie the actual submitted statements that form our code) looks pretty harmless. This is my first experience of trying to tune some complex looking PL/SQL and I've no idea what could be considered more "normal", but from what I think I know, and google searches, the results look quite odd to me.
Is this high activity for RECURSIVE STATEMENTS a problem, and if so, what should I start looking at to reduce that activity?
Regards,
AdosIf you have a PLSQL block or stored procedure running SQL statements, the SQL statements, too, will appear as RECURSIVE STATEMENTS in the trace file and tkprof.
It is a misconception that RECURSIVE STATEMENTS are only SYS statements doing data dictionary lookups / updates.
For example, I ran this :
SQL> create or replace procedure test_procedure as
2 begin
3 insert into my_emp_table select * from my_emp_table;
4 dbms_output.put_line('Rows Inserted : ' || sql%rowcount);
5 insert into my_emp_table select * from my_emp_table where emplid=1;
6 dbms_output.put_line('Rows Inserted : ' || sql%rowcount);
7 end;
8 /
Procedure created.
SQL> alter session set events '10046 trace name context forever, level 8';
Session altered.
SQL> execute test_procedure;
PL/SQL procedure successfully completed.
SQL> commit;
Commit complete.
SQL> select 'x' from dual;
x
SQL> exitThe tkprof shows ;
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 3 0.00 0.00 0 0 0 0
Execute 3 0.00 0.00 0 0 1 1
Fetch 2 0.00 0.00 0 0 0 1
total 8 0.00 0.00 0 0 1 2
Misses in library cache during parse: 2
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 5 0.00 0.00
SQL*Net message from client 5 5.31 11.97
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 4 0.00 0.00 0 2 0 0
Execute 4 0.00 0.00 2 16 7 5
Fetch 2 0.00 0.00 0 14 0 2
total 10 0.01 0.01 2 32 7 7
Misses in library cache during parse: 2
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file sequential read 2 0.00 0.00
7 user SQL statements in session.
0 internal SQL statements in session.
7 SQL statements in session.Which were the Non-Recursive statements ?
BEGIN test_procedure; END;
commit
select 'x' from dualWhich were the RECURSIVE statements (which you can identify by the keywords : (recursive depth) ?
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE
NO_PARALLEL(SAMPLESUB) opt_param('parallel_execution_enabled', 'false')
NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),:"SYS_B_0"),
NVL(SUM(C2),:"SYS_B_1")
FROM
(SELECT /*+ NO_PARALLEL("MY_EMP_TABLE") FULL("MY_EMP_TABLE")
NO_PARALLEL_INDEX("MY_EMP_TABLE") */ :"SYS_B_2" AS C1, :"SYS_B_3" AS C2
FROM "MY_EMP_TABLE" "MY_EMP_TABLE") SAMPLESUB
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 1
total 3 0.00 0.00 0 7 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 64 (recursive depth: 2)
INSERT INTO MY_EMP_TABLE SELECT * FROM MY_EMP_TABLE
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.00 0.00 2 8 4 3
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.00 0.00 2 9 4 3
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 64 (recursive depth: 1)
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE
NO_PARALLEL(SAMPLESUB) opt_param('parallel_execution_enabled', 'false')
NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),:"SYS_B_0"),
NVL(SUM(C2),:"SYS_B_1")
FROM
(SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("MY_EMP_TABLE")
FULL("MY_EMP_TABLE") NO_PARALLEL_INDEX("MY_EMP_TABLE") */ :"SYS_B_2" AS C1,
CASE WHEN "MY_EMP_TABLE"."EMPLID"=:"SYS_B_3" THEN :"SYS_B_4" ELSE
:"SYS_B_5" END AS C2 FROM "MY_EMP_TABLE" "MY_EMP_TABLE") SAMPLESUB
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 1
total 3 0.00 0.00 0 7 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 64 (recursive depth: 2)
INSERT INTO MY_EMP_TABLE SELECT * FROM MY_EMP_TABLE WHERE EMPLID=1
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.00 0.00 0 8 3 2
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.00 0.00 0 9 3 2
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 64 (recursive depth: 1)The INSERT statments are recursive depth 1 while the SELECTS they cause are recursive depth 2.
Note that neither of these are are actually SYS statements agaisnt the data dictionary !!
Edit :
IF you read the last few lines, it would become evident that some (in my case all) the RECURSIVE STATEMENTS are non-SYS statements, actually being my code, not Oracle's code.
1 session in tracefile.
7 user SQL statements in trace file.
0 internal SQL statements in trace file.
7 SQL statements in trace file.
7 unique SQL statements in trace file.
87 lines in trace file.
6 elapsed seconds in trace file.I have 3 non-recursive and 4 "RECURSIVE" statements. All 7 are correctly identified as "user SQL statements in trace file".
Hemant K Chitale
http://hemantoracledba.blogspot.com
Edited by: Hemant K Chitale on Jul 29, 2009 11:44 PM
Edited by: Hemant K Chitale on Jul 29, 2009 11:47 PM -
Hi folks,
We are using Oracle application 12.1.1 , Database version 10.2.0.4 on Solaris 10 plaform, and we have Micorsoft SQl server 2012 Database on windows
2008 server service pack 2.
i have created the same tables which i need to fetching data from SQL server database to EBS application i mean oracle Database
So my question is here how can i fetch the data from Oracle application and load into Oracle Database from SQL 2012.
can one suggest me or give any link which tell about details steps.
thanks & Regards.Hi,
There are 2 different ways you could do this.
1. You could use an Oracle Gateway product - either Database Gateway for SQL*Server (Dg4MSQL) or Database Gateway for ODBC (Dg4ODBC) - and use SQL to select from the SQL*Server tables and put into Oracle tables.
If you have access to My Oracle Support then the following note has links to further details -
Master Note for Oracle Gateway Products (Doc ID 1083703.1)
or this link if you do not -
Oracle Database Gateways
2. Oracle GoldenGate
This can automatically replicate data from SQL*Server to Oracle or vice versa if necessary.
See here for further details -
Oracle GoldenGate
Regards,
Mike -
"Select * into table internal_table from database_table" in native SQL
Dear All,
Is it possible to insert into internal table from database table in native sql instead of open sql? Regarding single values it's clear, just to use ":variable_name". But how to map internal table? RDBMS Oracle version > 9. If it's possible and you know how to do it, please, give some code example.
Thank you,
PavelHi ,
Here is the code snippet for the native sql .
select * from zwf_role into table i_wfroles." where role_id ='CAO'.
loop at i_wfroles into wa_wfroles.
EXEC sql.
insert into ROLES_MASTER_SAP
values (:wa_wfroles-ROLE_ID,:wa_wfroles-ROLE_NM,
:wa_wfroles-ROLE_DESC,:wa_wfroles-PAR_ROLE_ID,
:wa_wfroles-WF_ROLE_ORDER,:wa_wfroles-ROLE_TYPE )
ENDEXEC.
if sy-subrc = 0 .
suc_rec_cnt = suc_rec_cnt + 1.
else.
fail_rec_cnt = fail_rec_cnt + 1.
endif.
* ( ROLE_ID,ROLE_NAME, ROLE_DESC,PARENT_ROLE_ID,ROLE_ORDER,
* ROLE_TYPE )
endloop.
zwf_role database table has the same files
Regards
Girish -
No rows returned by spatial query wrapped in SELECT * FROM ...
Hi,
I'm getting some really weird behaviour when running a sub query with SDO_EQUAL. The SDO_EQUAL query on its own works fine, but if I wrap it in SELECT * FROM then I get no results. If I wrap SDO_ANYINTERACT in SELECT * FROM then I get the expected result.
It looks like the spatial index is used when running the regular SDO_EQUAL query, but not when wrapped in SELECT * FROM. Weird. The spatial index is also not used when SDO_ANYINTERACT is wrapped in SELECT * FROM... so I'm not sure why that returns the right answer.
I am getting this problem on 11.2.0.2 on Red Hat Linux 64bit and 11.2.0.1 on Windows XP 32bit (that's all the 11g versions I've tried). The query works as expected on 10.2.0.5 on Windows Server 2003 64bit.
Any ideas?
Confused in Dublin (John)
Test case...SQL>
SQL> -- Create a table and insert the same geometry twice
SQL> DROP TABLE sdo_equal_query_test;
Table dropped.
SQL> CREATE TABLE sdo_equal_query_test (
2 id NUMBER,
3 geometry SDO_GEOMETRY);
Table created.
SQL>
SQL> INSERT INTO sdo_equal_query_test VALUES (1,
2 SDO_GEOMETRY(3003, 81989, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
3 SDO_ORDINATE_ARRAY(1057.39, 1048.23, 4, 1057.53, 1046.04, 4, 1057.67, 1043.94, 4, 1061.17, 1044.60, 5, 1060.95, 1046.49, 5, 1060.81, 1047.78, 5, 1057.39, 1048.23, 4)));
1 row created.
SQL>
SQL> INSERT INTO sdo_equal_query_test VALUES (2,
2 SDO_GEOMETRY(3003, 81989, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1),
3 SDO_ORDINATE_ARRAY(1057.39, 1048.23, 4, 1057.53, 1046.04, 4, 1057.67, 1043.94, 4, 1061.17, 1044.60, 5, 1060.95, 1046.49, 5, 1060.81, 1047.78, 5, 1057.39, 1048.23, 4)));
1 row created.
SQL>
SQL> -- Setup metadata
SQL> DELETE FROM user_sdo_geom_metadata WHERE table_name = 'SDO_EQUAL_QUERY_TEST';
1 row deleted.
SQL> INSERT INTO user_sdo_geom_metadata VALUES ('SDO_EQUAL_QUERY_TEST','GEOMETRY',
2 SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 100000, .0001), SDO_DIM_ELEMENT('Y', 0, 100000, .0001), SDO_DIM_ELEMENT('Z', -100, 4000, .0001))
3 ,81989);
1 row created.
SQL>
SQL> -- Create spatial index
SQL> DROP INDEX sdo_equal_query_test_spind;
DROP INDEX sdo_equal_query_test_spind
ERROR at line 1:
ORA-01418: specified index does not exist
SQL> CREATE INDEX sdo_equal_query_test_spind ON sdo_equal_query_test(geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
Index created.
SQL>
SQL> -- Ensure data is valid
SQL> SELECT sdo_geom.validate_geometry_with_context(sdo_cs.make_2d(geometry), 0.0001) is_valid
2 FROM sdo_equal_query_test;
IS_VALID
TRUE
TRUE
2 rows selected.
SQL>
SQL> -- Check query results using sdo_equal
SQL> SELECT b.id
2 FROM sdo_equal_query_test a, sdo_equal_query_test b
3 WHERE a.id = 1
4 AND b.id != a.id
5 AND sdo_equal(a.geometry, b.geometry) = 'TRUE';
ID
2
1 row selected.
SQL>
SQL> -- Check query results using sdo_equal wrapped in SELECT * FROM
SQL> -- Results should be the same as above, but... no rows selected
SQL> SELECT * FROM (
2 SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 AND sdo_equal(a.geometry, b.geometry) = 'TRUE'
7 );
no rows selected
SQL>
SQL> -- So that didn't work. Now try sdo_anyinteract... this works ok
SQL> SELECT * FROM (
2 SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 AND sdo_anyinteract(a.geometry, b.geometry) = 'TRUE'
7 );
ID
2
1 row selected.
SQL>
SQL> -- Now try a scalar query
SQL> SELECT * FROM (
2 SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 );
ID
2
1 row selected.
SQL> spool offHere's the explain plan for the query that works. Note that the spatial index is used.
SQL> EXPLAIN PLAN FOR
2 SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 AND sdo_equal(a.geometry, b.geometry) = 'TRUE';
Explained.
SQL> @?/rdbms/admin/utlxpls.sql
PLAN_TABLE_OUTPUT
Plan hash value: 3529470109
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 7684 | 3 (0)| 00:00:01 |
| 1 | RESULT CACHE | f5p63r46pbzty4sr45td1uv5g8 | | | | |
| 2 | NESTED LOOPS | | 1 | 7684 | 3 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | SDO_EQUAL_QUERY_TEST | 1 | 3836 | 3 (0)| 00:00:01 |
|* 4 | TABLE ACCESS BY INDEX ROWID| SDO_EQUAL_QUERY_TEST | 1 | 3848 | 3 (0)| 00:00:01 |
|* 5 | DOMAIN INDEX | SDO_EQUAL_QUERY_TEST_SPIND | | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - filter("B"."ID"!=1)
4 - filter("A"."ID"=1 AND "B"."ID"!="A"."ID")
5 - access("MDSYS"."SDO_EQUAL"("A"."GEOMETRY","B"."GEOMETRY")='TRUE')
..... other stuff ..... Here's the explain plan for the query that does not work. Note that the spatial index is not used.
SQL> EXPLAIN PLAN FOR
2 SELECT * FROM (
3 SELECT b.id
4 FROM sdo_equal_query_test a, sdo_equal_query_test b
5 WHERE a.id = 1
6 AND b.id != a.id
7 AND sdo_equal(a.geometry, b.geometry) = 'TRUE'
8 );
Explained.
SQL> @?/rdbms/admin/utlxpls.sql
PLAN_TABLE_OUTPUT
Plan hash value: 1024466006
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 7684 | 6 (0)| 00:00:01 |
| 1 | RESULT CACHE | 2sd35wrcw3jr411bcg3sz161f6 | | | | |
| 2 | NESTED LOOPS | | 1 | 7684 | 6 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| SDO_EQUAL_QUERY_TEST | 1 | 3836 | 3 (0)| 00:00:01 |
|* 4 | TABLE ACCESS FULL| SDO_EQUAL_QUERY_TEST | 1 | 3848 | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - filter("B"."ID"!=1)
4 - filter("A"."ID"=1 AND "B"."ID"!="A"."ID" AND
"MDSYS"."SDO_EQUAL"("A"."GEOMETRY","B"."GEOMETRY")='TRUE')
..... other stuff .....That looks like a bug to me. As a workaround, you can materialize the inline view by adding rownum>0. Please see the reproduction and workaround below.
SCOTT@orcl_11gR2> SELECT *
2 FROM (SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 AND sdo_equal (a.geometry, b.geometry) = 'TRUE')
7 /
no rows selected
Execution Plan
Plan hash value: 1024466006
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 7676 | 6 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 1 | 7676 | 6 (0)| 00:00:01 |
|* 2 | TABLE ACCESS FULL| SDO_EQUAL_QUERY_TEST | 1 | 3832 | 3 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| SDO_EQUAL_QUERY_TEST | 1 | 3844 | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("B"."ID"<>1)
3 - filter("A"."ID"=1 AND "B"."ID"<>"A"."ID" AND
"MDSYS"."SDO_EQUAL"("A"."GEOMETRY","B"."GEOMETRY")='TRUE')
Note
- dynamic sampling used for this statement (level=2)
SCOTT@orcl_11gR2> SELECT *
2 FROM (SELECT b.id
3 FROM sdo_equal_query_test a, sdo_equal_query_test b
4 WHERE a.id = 1
5 AND b.id != a.id
6 AND sdo_equal (a.geometry, b.geometry) = 'TRUE'
7 AND ROWNUM > 0)
8 /
ID
2
1 row selected.
Execution Plan
Plan hash value: 2329953927
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 13 | 3 (0)| 00:00:01 |
| 1 | VIEW | | 1 | 13 | 3 (0)| 00:00:01 |
| 2 | COUNT | | | | | |
|* 3 | FILTER | | | | | |
| 4 | NESTED LOOPS | | 1 | 7676 | 3 (0)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | SDO_EQUAL_QUERY_TEST | 1 | 3832 | 3 (0)| 00:00:01 |
|* 6 | TABLE ACCESS BY INDEX ROWID| SDO_EQUAL_QUERY_TEST | 1 | 3844 | 3 (0)| 00:00:01 |
|* 7 | DOMAIN INDEX | SDO_EQUAL_QUERY_TEST_SPIND | | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - filter(ROWNUM>0)
5 - filter("B"."ID"<>1)
6 - filter("A"."ID"=1 AND "B"."ID"<>"A"."ID")
7 - access("MDSYS"."SDO_EQUAL"("A"."GEOMETRY","B"."GEOMETRY")='TRUE')
Note
- dynamic sampling used for this statement (level=2)
SCOTT@orcl_11gR2> -
How to exit from SQL*Plus based on the return value of a SQL select stment?
Hi
I have a SQL script executed from SQL*Plus. I would like to know if SQL*Plus
supports any kind of branching or exiting from script execution based on a
returned value of a SQL select statement. I am on 9i.
Regards,
Tamas Szecsyin sqlplus, you have whenever
ex:
whenever sqlerror exit failure
insert into ...
-- if this fails, then you will be out
insert into ...
-- if this fails, then you will be out
whenever sqlerror continue
insert into ...
-- if this fails, this continues
insert into ...and you have PL/SQL
declare x number;
begin
select count(*) into x from emp;
if (x=14) then null; end if;
end;
/note that you can mix those in some case
-- exit if there is no row in emp
whenever sqlerror exit 1
var dummy number
exec select count(*) into :dummy from emp having count(*)!=0 -
Select *, rowid into var1, var2 from...
Hello,
as mentioned in the subject, I want to do the following in plsql:
var1 table%rowtype;
var2 rowid;
select *, rowid into var1, var2 from table where ...;
So this is not possible yet, what else can I do instead as I ...
1. don't want to split one select statement into two.
2. don't know the columns of the table at compile time.
3. would like to use the rowtype, if possible.
Any ideas?
Thanx a lot
MatthiasIf you do not know the columns at compile-time then how is your update-statement working? Is that getting generated dynamically too? And are your updating all the columns in the table?
PS: Btw, you can declare a cursor and have a %rowtype variable based on that. Like this:
declare
cursor c1
is
select t.*,
t.rowid
from table1 t
r_cursor c1%rowtype;
begin
for r_cursor in c1
loop
dbms_output.put_line ( 'Col2: [' || r_cursor.col2 || ']' );
update table1
set col2 = r_cursor.col2 + 10
where table1.rowid = r_cursor.rowid
end loop;
end;
/ -
Limit users to execute "SELECT" statemes only from SQL Developer
Hi:
Is there a way to control what SQL command can be executed from SQL Developer?
I am trying to limit users to execute "SELECT" statements only from SQL Developer.
I believe SQL*Plus used to have the product profile where I can control what SQL command can be executed from what user.
Thanks in advance.There's nothing special in sqldev to enforce privileges, the database does all that already. See the database documentation on the GRANT and REVOKE statements. Basically, you would only want to grant SELECT privileges to your users...
Have fun,
K. -
Select from SQL Server Activity
Hi,
I'm using the Select from SQL Server Activity in CPO to look up some values in a table, straightforward SQL queries like select * from Table work 100% but when I start applying a WHERE clause to the query it fails to return the results even though when running query in SQL studio it returns results successfully.
The issue seems to be when trying to use brackets in a OR statement:
The SQL Statement is:
SELECT AppName FROM METADaaS WHERE
NCCX NOT LIKE '%18421%'
AND RTYPE='A'
AND BUNDLEDWITH LIKE '%GOL Back Office%'
AND (NCC = '0' OR NCC LIKE '%18421%')
This returns no results in CPO but in SQL Studio returns the results as expected.
If I remove the "(NCC = '0' OR NCC LIKE '%18421%')" I get results in CPO.
thanksAny SQL statement should work. I would suggest you open a TAC case.
-
How to select data from Sql server 2005 database tableinto oracle database table
Hi,
I have table text1 in sql server database and text2 in oracle database (11g). Now how to move data from SQL Server table into oracle table. So please help me how to do it.
Thanks a lot in advance.
rk
OS: Windows 7 professionalHi,
you can use export/import wizard and specify sql server as a source and oracle as destination.
I hope this is helpful.
Please Mark it as Answered if it answered your question
OR mark it as Helpful if it help you to solve your problem
Elmozamil Elamir Hamid
MCSE Data Platform
MCITP: SQL Server 2008 Administration/Development
MCSA SQL Server 2012
MCTS: SQL Server Administration/Development
MyBlog -
Reading milliseconds from Sql server into oracle 10g
Hi,
We have a very time sensitive pressing requirements to be addressed immediately.
We need to read the date time column from sql server 2008 into oracle 10g.
We have a dblink established between the two servers and have tried to use sql server and sql native client 10 driver to read the dates from sql into oracle.This we are able to do very successfully.
The issue is in reading milliseconds stored in sql server.The millisecond part comes in as 00000 from sqlserver to oracle.These milliseconds are needed to identlfy the unique records.
For instance
SQL SERVER Oracle
source_id source id
01/01/2012 6:30:35:456 01/01/2012 6:30:35:000000.
Im issuing my query through Toad via Oracle to remote sql server using a dblink which connects using HS ODBC connection to sql server 2008(remote).
We have no control over sql server Db as this is remote third party DB.We just have select access to their tables to bring into our own oracle DB.
Any insight or help will be much appreciated.Hi,
Could you please send the following information -
- what version of HSODBC are you using ? Is it a 10.2 version ?
- what is the SQL*Server datatype of the column you are reading ?
- from Oracle could you issue -
describe sql_server_table@hsodbc
- what is the Oracle datatype shown for the column ?
Could you also run your tests using SQLPLUS instead of TOAD ? We don't support TOAD and need to know if the problem also happens when using SQLPLUS, to avoid it being a TOAD problem.
Also, 10.2 HSODBC is now desupported and you should be using the 11g Database Gateway for ODBC (DG4ODBC) which is a direct replacement for HSODBC. To use DG4ODBC your RDBMS needs to be at 10.2.0.4 or higher and DG4ODBC should be installed in a completely separate ORACLE_HOME from the existing 10.2 install.
Regards,
Mike -
Problems with loading source model using omw from sql server 7 into oracle 9i
I am migrating data from sql servr 7 into oracle 9i. when doing capture phase i get the following error.
==>failed to load source model.[microsoft][odbc sql server][sql server]select permission
denied on column 'password' of object 'syslogins', database master, owner dbo.
Why is this so...is it bcz of something with my odbc link...
also is there any way to load only tables and not system tables when doing capture phase.
any help asap will be much appreciated.
thanksHi,
You must ensure that you have the correct password to login to SQL Server.
The Workbench requires some of the tables in the Master database.
Regards
John -
Importing Database from SQL Server into Oracle 8i
Hello Friends,
Cuurentlly we are using SQL Server as our application database, Now we want to switch on at Oracle 8i,bcz of some problems,
If anybody had done so,then please help me in solving this problem,
I wana Import whole database from SQL server to Oracle
Lot of thanksHi,
Use the SQL Server Enterprise Manager to export all the tables from SQL to oralce.
When selecting the target database use the Oracle native driver (the name is not on top of my head) and not the ODBC one.
You will have problems with datatypes. Make sure to edit the mappings for the proper datatype if required.
If you have ntext columns, make sure they are translated to CLOB and not long.
Regards,
Wasim. -
Sql data into Existing PDF from ASP page
I have a property form that was created use Adobe Pro X with various data fields, and a signature block. How can I get that form to get data from SQL database, then either print it out or email to the user for digital signature. So on this webpage you select
the user, and there would be buttons to generate a property form for print out or email the pdf for digital signature then the user would email that back.
thanks in advance.I have a property form that was created use Adobe Pro X with various data fields, and a signature block. How can I get that form to get data from SQL database, then either print it out or email to the user for digital signature. So on this webpage you select
the user, and there would be buttons to generate a property form for print out or email the pdf for digital signature then the user would email that back.
thanks in advance.
Hi,
I am afraid that for web development issues, please post them in
https://forums.asp.net forum since it is dedicated for issues about web development issues.
And you could have a check the following thread.
http://forums.asp.net/t/1317979.aspx?Writing+PDF+documents+using+VB+Net
Thanks for your understanding.
Regards.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.
Maybe you are looking for
-
How to connect my Mac to the tv screen
Can someone explain to me how I can watch on the (big) tv screen the downloaded content from my laptop?
-
Hello experts; I would like to design a date range query where the beginning of the week is always sunday and the end of the week is always monday. All help is appreciated. Thank you
-
Hi all, I have created user A.I want A to SELECT,INSERT,UPDATE the tables of user B,but A should not have DELETE privis. For granting this privilege. If i give GRANT SELECT ANY TABLE TO USER A.? for SELECTing tables.. Is it right or will the user be
-
[SOLVED] Default Gnome File Manager
Hello, I installed Thunar and it has become the default file manager in Gnome, how can I change this back to Nautalis? Thanks. Last edited by RAH (2009-02-16 20:10:26)
-
Problems upgrading my ac OS X 10.5 to OS X 10.5.7
whwnever i try to upgrade my mac it get stuck while preparing to install, the blue bar does not move, even if i let it there for a day or so...