Hi All,
Our db version 12.1.0.2
We have a query running from sql developer since yesterday.Can you pls suggest if we can reduce the runtime.GSS is running daily in the environment.
We have also attached the plan with better format for review.
SQL> set pagesize 10000 linesize 300 trimspool on serveroutput off
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('6fj39gqsfshu8',0));
SQL>
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 6fj39gqsfshu8, child number 0
-------------------------------------
SELECT COUNT(1) FROM ( SELECT po_num, receipt_num,
quantity, invoice_date, value, rate_of_gst igst,
cgst, transaction_id FROM ( SELECT
mmt.shipment_number po_num, rsh.receipt_num,
decode(mln.primary_quantity, NULL, mmt.primary_quantity,
mln.primary_quantity) quantity, to_char(rsh.shipped_date,
'DD-MON-YYYY') invoice_date,
nvl(((nvl(mmt.transaction_cost, mmt.actual_cost) *
abs(decode(mln.primary_quantity, NULL, mmt.primary_quantity,
mln.primary_quantity )))), 0) value, decode((
SELECT xxgst.gst FROM
apps.xxttd_inv_gst_items_tbl xxgst
WHERE 1 = 1 AND
msi.inventory_item_id = xxgst.inventory_item_id AND
xxgst.to_date IS NULL AND mmt.transaction_date >=
xxgst.from_date
Plan hash value: 591239370
-------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 6404G(100)| |
| 1 | SORT AGGREGATE | | 1 | 111 | | |
| 2 | MERGE JOIN CARTESIAN | | 9671T| 953P| 6404G (3)|999:59:59 |
| 3 | MERGE JOIN CARTESIAN | | 11T| 1162T| 7624M (3)| 82:44:02 |
| 4 | MERGE JOIN CARTESIAN | | 13G| 1416G| 9244K (3)| 00:06:02 |
| 5 | MERGE JOIN CARTESIAN | | 33M| 3504M| 50351 (2)| 00:00:02 |
| 6 | MERGE JOIN CARTESIAN | | 79969 | 8668K| 28140 (2)| 00:00:02 |
| 7 | MERGE JOIN CARTESIAN | | 1 | 111 | 27948 (2)| 00:00:02 |
| 8 | NESTED LOOPS | | 1 | 111 | 27947 (2)| 00:00:02 |
| 9 | NESTED LOOPS | | 123 | 111 | 27947 (2)| 00:00:02 |
| 10 | NESTED LOOPS | | 123 | 12423 | 27702 (2)| 00:00:02 |
| 11 | NESTED LOOPS | | 123 | 11808 | 27702 (2)| 00:00:02 |
| 12 | NESTED LOOPS | | 123 | 9840 | 27456 (2)| 00:00:02 |
| 13 | NESTED LOOPS OUTER | | 123 | 8733 | 27333 (2)| 00:00:02 |
|* 14 | HASH JOIN | | 113 | 7345 | 27220 (2)| 00:00:02 |
|* 15 | TABLE ACCESS FULL | MTL_TRANSACTION_TYPES | 1 | 36 | 6 (0)| 00:00:01 |
|* 16 | TABLE ACCESS FULL | MTL_MATERIAL_TRANSACTIONS | 3676 | 104K| 27213 (2)| 00:00:02 |
|* 17 | INDEX RANGE SCAN | MTL_TRANSACTION_LOT_NUMBERS_N1 | 1 | 6 | 1 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | MTL_SYSTEM_ITEMS_B_U1 | 1 | 9 | 1 (0)| 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID| RCV_TRANSACTIONS | 1 | 16 | 2 (0)| 00:00:01 |
|* 20 | INDEX UNIQUE SCAN | RCV_TRANSACTIONS_U1 | 1 | | 1 (0)| 00:00:01 |
|* 21 | INDEX UNIQUE SCAN | RCV_SHIPMENT_HEADERS_U1 | 1 | 5 | 0 (0)| |
|* 22 | INDEX UNIQUE SCAN | RCV_SHIPMENT_LINES_U1 | 1 | | 1 (0)| 00:00:01 |
|* 23 | TABLE ACCESS BY INDEX ROWID | RCV_SHIPMENT_LINES | 1 | 10 | 2 (0)| 00:00:01 |
| 24 | BUFFER SORT | | 414 | | 27946 (2)| 00:00:02 |
| 25 | INDEX FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 1 (0)| 00:00:01 |
| 26 | BUFFER SORT | | 219K| | 28139 (2)| 00:00:02 |
| 27 | INDEX FAST FULL SCAN | MTL_SYSTEM_ITEMS_B_N10 | 219K| | 192 (3)| 00:00:01 |
| 28 | BUFFER SORT | | 414 | | 50159 (2)| 00:00:02 |
| 29 | INDEX FAST FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 0 (0)| |
| 30 | BUFFER SORT | | 414 | | 9244K (3)| 00:06:02 |
| 31 | INDEX FAST FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 0 (0)| |
| 32 | BUFFER SORT | | 840 | | 7624M (3)| 82:44:02 |
| 33 | INDEX FAST FULL SCAN | HR_ORGANIZATION_UNITS_FK1 | 840 | | 1 (0)| 00:00:01 |
| 34 | BUFFER SORT | | 840 | | 6404G (3)|999:59:59 |
| 35 | INDEX FAST FULL SCAN | HR_ORGANIZATION_UNITS_FK1 | 840 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
14 - access("MMT"."TRANSACTION_TYPE_ID"="TRANSACTION_TYPE_ID")
15 - filter(("TRANSACTION_TYPE_NAME"='Intransit Receipt' AND NVL("ZD_EDITION_NAME",'ORA$BASE')='ORA$BASE'))
16 - filter(("MMT"."RCV_TRANSACTION_ID" IS NOT NULL AND
TRUNC(INTERNAL_FUNCTION("MMT"."CREATION_DATE"))=TRUNC(SYSDATE@!)))
17 - access("MLN"."TRANSACTION_ID"="MMT"."TRANSACTION_ID")
18 - access("MSI"."INVENTORY_ITEM_ID"="MMT"."INVENTORY_ITEM_ID" AND
"MSI"."ORGANIZATION_ID"="MMT"."ORGANIZATION_ID")
20 - access("MMT"."RCV_TRANSACTION_ID"="RT"."TRANSACTION_ID")
21 - access("RSH"."SHIPMENT_HEADER_ID"="RT"."SHIPMENT_HEADER_ID")
22 - access("RT"."SHIPMENT_LINE_ID"="RSL"."SHIPMENT_LINE_ID")
23 - filter("RSH"."SHIPMENT_HEADER_ID"="RSL"."SHIPMENT_HEADER_ID")
77 rows selected.
SQL>SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('6fj39gqsfshu8',0,'outline'));
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 6fj39gqsfshu8, child number 0
-------------------------------------
SELECT COUNT(1) FROM ( SELECT po_num, receipt_num,
quantity, invoice_date, value, rate_of_gst igst,
cgst, transaction_id FROM ( SELECT
mmt.shipment_number po_num, rsh.receipt_num,
decode(mln.primary_quantity, NULL, mmt.primary_quantity,
mln.primary_quantity) quantity, to_char(rsh.shipped_date,
'DD-MON-YYYY') invoice_date,
nvl(((nvl(mmt.transaction_cost, mmt.actual_cost) *
abs(decode(mln.primary_quantity, NULL, mmt.primary_quantity,
mln.primary_quantity )))), 0) value, decode((
SELECT xxgst.gst FROM
apps.xxttd_inv_gst_items_tbl xxgst
WHERE 1 = 1 AND
msi.inventory_item_id = xxgst.inventory_item_id AND
xxgst.to_date IS NULL AND mmt.transaction_date >=
xxgst.from_date
Plan hash value: 591239370
-------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 6404G(100)| |
| 1 | SORT AGGREGATE | | 1 | 111 | | |
| 2 | MERGE JOIN CARTESIAN | | 9671T| 953P| 6404G (3)|999:59:59 |
| 3 | MERGE JOIN CARTESIAN | | 11T| 1162T| 7624M (3)| 82:44:02 |
| 4 | MERGE JOIN CARTESIAN | | 13G| 1416G| 9244K (3)| 00:06:02 |
| 5 | MERGE JOIN CARTESIAN | | 33M| 3504M| 50351 (2)| 00:00:02 |
| 6 | MERGE JOIN CARTESIAN | | 79969 | 8668K| 28140 (2)| 00:00:02 |
| 7 | MERGE JOIN CARTESIAN | | 1 | 111 | 27948 (2)| 00:00:02 |
| 8 | NESTED LOOPS | | 1 | 111 | 27947 (2)| 00:00:02 |
| 9 | NESTED LOOPS | | 123 | 111 | 27947 (2)| 00:00:02 |
| 10 | NESTED LOOPS | | 123 | 12423 | 27702 (2)| 00:00:02 |
| 11 | NESTED LOOPS | | 123 | 11808 | 27702 (2)| 00:00:02 |
| 12 | NESTED LOOPS | | 123 | 9840 | 27456 (2)| 00:00:02 |
| 13 | NESTED LOOPS OUTER | | 123 | 8733 | 27333 (2)| 00:00:02 |
|* 14 | HASH JOIN | | 113 | 7345 | 27220 (2)| 00:00:02 |
|* 15 | TABLE ACCESS FULL | MTL_TRANSACTION_TYPES | 1 | 36 | 6 (0)| 00:00:01 |
|* 16 | TABLE ACCESS FULL | MTL_MATERIAL_TRANSACTIONS | 3676 | 104K| 27213 (2)| 00:00:02 |
|* 17 | INDEX RANGE SCAN | MTL_TRANSACTION_LOT_NUMBERS_N1 | 1 | 6 | 1 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | MTL_SYSTEM_ITEMS_B_U1 | 1 | 9 | 1 (0)| 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID| RCV_TRANSACTIONS | 1 | 16 | 2 (0)| 00:00:01 |
|* 20 | INDEX UNIQUE SCAN | RCV_TRANSACTIONS_U1 | 1 | | 1 (0)| 00:00:01 |
|* 21 | INDEX UNIQUE SCAN | RCV_SHIPMENT_HEADERS_U1 | 1 | 5 | 0 (0)| |
|* 22 | INDEX UNIQUE SCAN | RCV_SHIPMENT_LINES_U1 | 1 | | 1 (0)| 00:00:01 |
|* 23 | TABLE ACCESS BY INDEX ROWID | RCV_SHIPMENT_LINES | 1 | 10 | 2 (0)| 00:00:01 |
| 24 | BUFFER SORT | | 414 | | 27946 (2)| 00:00:02 |
| 25 | INDEX FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 1 (0)| 00:00:01 |
| 26 | BUFFER SORT | | 219K| | 28139 (2)| 00:00:02 |
| 27 | INDEX FAST FULL SCAN | MTL_SYSTEM_ITEMS_B_N10 | 219K| | 192 (3)| 00:00:01 |
| 28 | BUFFER SORT | | 414 | | 50159 (2)| 00:00:02 |
| 29 | INDEX FAST FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 0 (0)| |
| 30 | BUFFER SORT | | 414 | | 9244K (3)| 00:06:02 |
| 31 | INDEX FAST FULL SCAN | MTL_PARAMETERS_N1 | 414 | | 0 (0)| |
| 32 | BUFFER SORT | | 840 | | 7624M (3)| 82:44:02 |
| 33 | INDEX FAST FULL SCAN | HR_ORGANIZATION_UNITS_FK1 | 840 | | 1 (0)| 00:00:01 |
| 34 | BUFFER SORT | | 840 | | 6404G (3)|999:59:59 |
| 35 | INDEX FAST FULL SCAN | HR_ORGANIZATION_UNITS_FK1 | 840 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------------------
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
IGNORE_OPTIM_EMBEDDED_HINTS
OPTIMIZER_FEATURES_ENABLE('12.1.0.2')
DB_VERSION('12.1.0.2')
OPT_PARAM('_optimizer_use_feedback' 'false')
OPT_PARAM('_px_adaptive_dist_method' 'off')
OPT_PARAM('_optimizer_dsdir_usage_control' 0)
OPT_PARAM('_optimizer_adaptive_plans' 'false')
OPT_PARAM('_optimizer_strans_adaptive_pruning' 'false')
OPT_PARAM('_optimizer_gather_feedback' 'false')
OPT_PARAM('_optimizer_nlj_hj_adaptive_join' 'false')
ALL_ROWS
OUTLINE_LEAF(@"SEL$1E32DDA5")
MERGE(@"SEL$F317E779")
OUTLINE(@"SEL$1")
OUTLINE(@"SEL$F317E779")
MERGE(@"SEL$0964E3CA")
OUTLINE(@"SEL$2")
OUTLINE(@"SEL$0964E3CA")
MERGE(@"SEL$68B588A0")
OUTLINE(@"SEL$3")
OUTLINE(@"SEL$68B588A0")
MERGE(@"SEL$7")
OUTLINE(@"SEL$6")
OUTLINE(@"SEL$7")
FULL(@"SEL$1E32DDA5" "MTL_TRANSACTION_TYPES"@"SEL$7")
FULL(@"SEL$1E32DDA5" "MMT"@"SEL$3")
INDEX(@"SEL$1E32DDA5" "MLN"@"SEL$3" ("MTL_TRANSACTION_LOT_NUMBERS"."TRANSACTION_ID"))
INDEX(@"SEL$1E32DDA5" "MSI"@"SEL$3" ("MTL_SYSTEM_ITEMS_B"."INVENTORY_ITEM_ID"
"MTL_SYSTEM_ITEMS_B"."ORGANIZATION_ID"))
INDEX_RS_ASC(@"SEL$1E32DDA5" "RT"@"SEL$3" ("RCV_TRANSACTIONS"."TRANSACTION_ID"))
INDEX(@"SEL$1E32DDA5" "RSH"@"SEL$3" ("RCV_SHIPMENT_HEADERS"."SHIPMENT_HEADER_ID"))
INDEX(@"SEL$1E32DDA5" "RSL"@"SEL$3" ("RCV_SHIPMENT_LINES"."SHIPMENT_LINE_ID"))
INDEX(@"SEL$1E32DDA5" "MP1"@"SEL$3" ("MTL_PARAMETERS"."MASTER_ORGANIZATION_ID"))
INDEX_FFS(@"SEL$1E32DDA5" "MSI1"@"SEL$3" ("MTL_SYSTEM_ITEMS_B"."ORGANIZATION_ID"
"MTL_SYSTEM_ITEMS_B"."PLANNER_CODE"))
INDEX_FFS(@"SEL$1E32DDA5" "MP2"@"SEL$3" ("MTL_PARAMETERS"."MASTER_ORGANIZATION_ID"))
INDEX_FFS(@"SEL$1E32DDA5" "MP"@"SEL$3" ("MTL_PARAMETERS"."MASTER_ORGANIZATION_ID"))
INDEX_FFS(@"SEL$1E32DDA5" "HAOU1"@"SEL$3" ("HR_ALL_ORGANIZATION_UNITS"."BUSINESS_GROUP_ID"))
INDEX_FFS(@"SEL$1E32DDA5" "HAOU2"@"SEL$3" ("HR_ALL_ORGANIZATION_UNITS"."BUSINESS_GROUP_ID"))
LEADING(@"SEL$1E32DDA5" "MTL_TRANSACTION_TYPES"@"SEL$7" "MMT"@"SEL$3" "MLN"@"SEL$3" "MSI"@"SEL$3" "RT"@"SEL$3"
"RSH"@"SEL$3" "RSL"@"SEL$3" "MP1"@"SEL$3" "MSI1"@"SEL$3" "MP2"@"SEL$3" "MP"@"SEL$3" "HAOU1"@"SEL$3"
"HAOU2"@"SEL$3")
USE_HASH(@"SEL$1E32DDA5" "MMT"@"SEL$3")
USE_NL(@"SEL$1E32DDA5" "MLN"@"SEL$3")
USE_NL(@"SEL$1E32DDA5" "MSI"@"SEL$3")
USE_NL(@"SEL$1E32DDA5" "RT"@"SEL$3")
USE_NL(@"SEL$1E32DDA5" "RSH"@"SEL$3")
USE_NL(@"SEL$1E32DDA5" "RSL"@"SEL$3")
NLJ_BATCHING(@"SEL$1E32DDA5" "RSL"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "MP1"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "MSI1"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "MP2"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "MP"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "HAOU1"@"SEL$3")
USE_MERGE_CARTESIAN(@"SEL$1E32DDA5" "HAOU2"@"SEL$3")
END_OUTLINE_DATA
*/
Predicate Information (identified by operation id):
---------------------------------------------------
14 - access("MMT"."TRANSACTION_TYPE_ID"="TRANSACTION_TYPE_ID")
15 - filter(("TRANSACTION_TYPE_NAME"='Intransit Receipt' AND NVL("ZD_EDITION_NAME",'ORA$BASE')='ORA$BASE'))
16 - filter(("MMT"."RCV_TRANSACTION_ID" IS NOT NULL AND
TRUNC(INTERNAL_FUNCTION("MMT"."CREATION_DATE"))=TRUNC(SYSDATE@!)))
17 - access("MLN"."TRANSACTION_ID"="MMT"."TRANSACTION_ID")
18 - access("MSI"."INVENTORY_ITEM_ID"="MMT"."INVENTORY_ITEM_ID" AND
"MSI"."ORGANIZATION_ID"="MMT"."ORGANIZATION_ID")
20 - access("MMT"."RCV_TRANSACTION_ID"="RT"."TRANSACTION_ID")
21 - access("RSH"."SHIPMENT_HEADER_ID"="RT"."SHIPMENT_HEADER_ID")
22 - access("RT"."SHIPMENT_LINE_ID"="RSL"."SHIPMENT_LINE_ID")
23 - filter("RSH"."SHIPMENT_HEADER_ID"="RSL"."SHIPMENT_HEADER_ID")
140 rows selected.
SQL>
=========
SELECT COUNT(1) FROM ( SELECT po_num, receipt_num, q
uantity, invoice_date, value, rate_of_gst igst,
cgst, transaction_id FROM ( SELECT
mmt.shipment_number po_num, rsh.receipt_num,
decode(mln.primary_quantity, NULL, mmt.pri
mary_quantity, mln.primary_quantity) quantity, to_c
har(rsh.shipped_date, 'DD-MON-YYYY') invoice_date, n
vl(((nvl(mmt.transaction_cost, mmt.actual_cost) * abs(decode(mln
.primary_quantity, NULL, mmt.primary_quantity, mln.primary_quant
ity )))), 0) value, decode((
SELECT xxgst.gst FROM
apps.xxttd_inv_gst_items_tbl xxgst
WHERE 1 = 1 AND ms
i.inventory_item_id = xxgst.inventory_item_id
AND xxgst.to_date IS NULL AND mmt.transact
ion_date >= xxgst.from_date AND mmt.transact
ion_date <= nvl(xxgst.to_date, mmt.transaction_date)
), '', 0,( SELECT xxgst.gst
FROM apps.xxttd_inv_gst_ite
ms_tbl xxgst WHERE 1 = 1
AND msi.inventory_item_id = xxgst.inventory_ite
m_id AND xxgst.to_date IS NULL
AND mmt.transaction_date >= xxgst.from_date
AND mmt.transaction_date <= nvl(xxgst.to_date, mmt.transa
ction_date) )) "RATE_OF_GST", nvl(
CASE WHEN apps.xxttd_inv_gtn_mkt_
pkg.xxttd_inv_gtn_mkt_fun(mp1.organization_code, mp2.organizatio
n_code) = 'Out of State' THEN
nvl(((round(round(((((mmt.primary_quantity * mmt.actua
l_cost) / mmt.transaction_quantity) *(abs(mmt.transaction_quanti
ty ))) - nvl(abs(nvl(((nvl(mmt.attribute
3, 0) / mmt.transaction_quantity) * nvl(mln.transaction_quantity
, 1) ), 0)), 0)), 2) /(100 +((apps.xxttd
_inv_gst_rcm_pkg.func_gst_per(msi.inventory_item_id, mmt.transac
tion_date , mmt.transaction_date)))) *((
(apps.xxttd_inv_gst_rcm_pkg.func_gst_per(msi.inventory_item_id,
mmt.transaction_date , mmt.transaction_d
ate)))), 0))), 0) END, 0) igst, nvl(
CASE WHEN apps.xxttd_inv_gt
n_mkt_pkg.xxttd_inv_gtn_mkt_fun(mp1.organization_code, mp2.organ
ization_code) = 'NonMKT' OR apps.xxttd_
inv_gtn_mkt_pkg.xxttd_inv_gtn_mkt_fun(mp1.organization_code, mp2
.organization_code) = 'MKT' THEN
nvl(((round(round((((mmt.primary_quantity * mm
t.actual_cost) / mmt.transaction_quantity) *(abs(mmt.transaction
_quantity )) - nvl(abs(nvl(((nvl(mmt.att
ribute3, 0) / mmt.transaction_quantity) * nvl(mln.transaction_qu
antity, 1)) , 0)), 0)), 2) /(100 +((apps
.xxttd_inv_gst_rcm_pkg.func_gst_per(msi.inventory_item_id, mmt.t
ransaction_date , mmt.transaction_date))
)) *(((apps.xxttd_inv_gst_rcm_pkg.func_gst_per(msi.inventory_ite
m_id, mmt.transaction_date , mmt.transac
tion_date))) / 2), 0))), 0) END, 0) cgst,
rt.transaction_id FROM apps.mtl_parame
ters mp1, apps.mtl_parameters
mp2, apps.mtl_parameters mp,
apps.mtl_material_transactions mmt,
apps.mtl_transaction_types mtt, apps.mtl_sys
tem_items_b msi, apps.mtl_system_items_b
msi1, apps.hr_all_organization_units
haou1, apps.hr_all_organization_units haou2,
apps.mtl_transaction_lot_numbers mln, app
s.rcv_shipment_headers rsh, apps.rcv_shipme
nt_lines rsl, apps.rcv_transactions
rt WHERE msi.organization_id = mmt.o
rganization_id AND mmt.rcv_transaction_id = rt.trans
action_id AND rsh.shipment_header_id = rsl.shipment_
header_id AND rsh.shipment_header_id = rt.shipment_h
eader_id--added AND rt.shipment_line_id = rsl.shipme
nt_line_id AND mln.transaction_id = mmt.transact
ion_id AND msi.inventory_item_id = mmt.inventory_ite
m_id AND mmt.transaction_type_id = mtt.transaction_t
ype_id AND mtt.transaction_type_name = 'Intransit Re
ceipt' AND TRUNC(mmt.CREATION_DATE) =TRUNC(SYSDATE)
) ) sub1
Thanks and Regards,
Kumar