22101 Segmentation Fault - core dumped & Parallel job re
Posted: Thu Jun 18, 2009 4:36 am
Hi All,
We are facing performence problem in a job which will execute merge query in Oracle database. I tried to modify the query to split the volume & run it paralley.Below is the original query,
MERGE INTO #$DM_SCHEMA_PREFIX#PART_FACT a
USING #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT b
ON ( a.dealer_key = b.dealer_key
AND a.part_key = b.part_key
AND a.time_dim_key = b.time_dim_key
AND a.purchase_order_number = b.purchase_order_number
AND a.sales_ord_inv_flag = b.sales_ord_inv_flag
AND a.invoice_line_number = '-1001'
AND a.purchase_order_number = '-1001'
AND a.order_line = '-1001')
WHEN MATCHED THEN
UPDATE
SET a.sales_quantity = b.sales_quantity,
a.lost_sales_quantity = b.lost_sales_quantity,
a.source_system_id = b.source_system_id,
a.update_user_id = b.update_user_id,
a.update_date = b.update_date, a.tstamp = b.tstamp
WHEN NOT MATCHED THEN
INSERT (a.dealer_key, a.part_key, a.time_dim_key, a.sales_quantity,
a.purchase_order_number, a.lost_sales_quantity, a.create_date,
a.source_system_id, a.create_user_id, a.tstamp, a.sales_ord_inv_flag)
VALUES (b.dealer_key, b.part_key, b.time_dim_key, b.sales_quantity,
b.purchase_order_number, b.lost_sales_quantity, b.create_date,
b.source_system_id, b.create_user_id, b.tstamp, b.sales_ord_inv_flag)
Modified query:
*************
MERGE INTO #$DM_SCHEMA_PREFIX#PART_FACT a
USING ( SELECT * FROM #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT WHERE MOD(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)-2,4)=0 ) b
ON ( a.dealer_key = b.dealer_key
AND a.part_key = b.part_key
AND a.time_dim_key = b.time_dim_key
AND a.purchase_order_number = b.purchase_order_number
AND a.sales_ord_inv_flag = b.sales_ord_inv_flag
AND a.invoice_line_number = '-1001'
AND a.purchase_order_number = '-1001'
AND a.order_line = '-1001')
WHEN MATCHED THEN
UPDATE
SET a.sales_quantity = b.sales_quantity,
a.lost_sales_quantity = b.lost_sales_quantity,
a.source_system_id = b.source_system_id,
a.update_user_id = b.update_user_id,
a.update_date = b.update_date, a.tstamp = b.tstamp
WHEN NOT MATCHED THEN
INSERT (a.dealer_key, a.part_key, a.time_dim_key, a.sales_quantity,
a.purchase_order_number, a.lost_sales_quantity, a.create_date,
a.source_system_id, a.create_user_id, a.tstamp, a.sales_ord_inv_flag)
VALUES (b.dealer_key, b.part_key, b.time_dim_key, b.sales_quantity,
b.purchase_order_number, b.lost_sales_quantity, b.create_date,
b.source_system_id, b.create_user_id, b.tstamp, b.sales_ord_inv_flag)
Difference between the above queries is :,
We included the below statement , but the job is aborting saying
Parallel job reports failure (code 139).
SELECT * FROM #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT WHERE MOD(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)-2,4)=0 )
Is there any environment variable do I need to set?
Thanks in advance.
We are facing performence problem in a job which will execute merge query in Oracle database. I tried to modify the query to split the volume & run it paralley.Below is the original query,
MERGE INTO #$DM_SCHEMA_PREFIX#PART_FACT a
USING #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT b
ON ( a.dealer_key = b.dealer_key
AND a.part_key = b.part_key
AND a.time_dim_key = b.time_dim_key
AND a.purchase_order_number = b.purchase_order_number
AND a.sales_ord_inv_flag = b.sales_ord_inv_flag
AND a.invoice_line_number = '-1001'
AND a.purchase_order_number = '-1001'
AND a.order_line = '-1001')
WHEN MATCHED THEN
UPDATE
SET a.sales_quantity = b.sales_quantity,
a.lost_sales_quantity = b.lost_sales_quantity,
a.source_system_id = b.source_system_id,
a.update_user_id = b.update_user_id,
a.update_date = b.update_date, a.tstamp = b.tstamp
WHEN NOT MATCHED THEN
INSERT (a.dealer_key, a.part_key, a.time_dim_key, a.sales_quantity,
a.purchase_order_number, a.lost_sales_quantity, a.create_date,
a.source_system_id, a.create_user_id, a.tstamp, a.sales_ord_inv_flag)
VALUES (b.dealer_key, b.part_key, b.time_dim_key, b.sales_quantity,
b.purchase_order_number, b.lost_sales_quantity, b.create_date,
b.source_system_id, b.create_user_id, b.tstamp, b.sales_ord_inv_flag)
Modified query:
*************
MERGE INTO #$DM_SCHEMA_PREFIX#PART_FACT a
USING ( SELECT * FROM #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT WHERE MOD(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)-2,4)=0 ) b
ON ( a.dealer_key = b.dealer_key
AND a.part_key = b.part_key
AND a.time_dim_key = b.time_dim_key
AND a.purchase_order_number = b.purchase_order_number
AND a.sales_ord_inv_flag = b.sales_ord_inv_flag
AND a.invoice_line_number = '-1001'
AND a.purchase_order_number = '-1001'
AND a.order_line = '-1001')
WHEN MATCHED THEN
UPDATE
SET a.sales_quantity = b.sales_quantity,
a.lost_sales_quantity = b.lost_sales_quantity,
a.source_system_id = b.source_system_id,
a.update_user_id = b.update_user_id,
a.update_date = b.update_date, a.tstamp = b.tstamp
WHEN NOT MATCHED THEN
INSERT (a.dealer_key, a.part_key, a.time_dim_key, a.sales_quantity,
a.purchase_order_number, a.lost_sales_quantity, a.create_date,
a.source_system_id, a.create_user_id, a.tstamp, a.sales_ord_inv_flag)
VALUES (b.dealer_key, b.part_key, b.time_dim_key, b.sales_quantity,
b.purchase_order_number, b.lost_sales_quantity, b.create_date,
b.source_system_id, b.create_user_id, b.tstamp, b.sales_ord_inv_flag)
Difference between the above queries is :,
We included the below statement , but the job is aborting saying
Parallel job reports failure (code 139).
SELECT * FROM #$DM_TMP_SCHEMA_PREFIX#TMP_PART_FACT WHERE MOD(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)-2,4)=0 )
Is there any environment variable do I need to set?
Thanks in advance.