106: PROCEDURE TRC( pBUFF IN VARCHAR2)
107: IS
108: BEGIN
109: IF fnd_global.conc_request_id > 0 THEN
110: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1, '
112: --DBMS_OUTPUT.PUT_LINE( '
114: END IF;
144: EXCEPTION
145: WHEN OTHERS THEN
146: IF c_msc%ISOPEN THEN CLOSE c_msc; END IF;
147:
148: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
150: RETURN FALSE;
151: END Initialize_Schema_PVT;
152:
145: WHEN OTHERS THEN
146: IF c_msc%ISOPEN THEN CLOSE c_msc; END IF;
147:
148: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
149: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
150: RETURN FALSE;
151: END Initialize_Schema_PVT;
152:
153: /* =========== Initialize Temporary Table List ============= */
160: /* concatenate the tempTblList with the instance_code to be the exact
161: temp table name */
162: IF NOT v_is_TTL_initialized THEN
163: trc( 'ST:V_PARTtBLlIST COUNT = '|| to_char(v_partTblList.COUNT));
164: IF ( (MSC_CL_COLLECTION.v_apps_ver >= MSC_UTIL.G_EAM_CMRO_SUP_VER)
165: AND (MSC_UTIL.G_CMRO_EAM_INT_ENABLED = 'Y')) THEN
166: FOR i IN 1..v_partTblList.COUNT LOOP
167: v_tempTblList(i):= v_tempTblList(i)||v_instance_code;
168: END LOOP;
161: temp table name */
162: IF NOT v_is_TTL_initialized THEN
163: trc( 'ST:V_PARTtBLlIST COUNT = '|| to_char(v_partTblList.COUNT));
164: IF ( (MSC_CL_COLLECTION.v_apps_ver >= MSC_UTIL.G_EAM_CMRO_SUP_VER)
165: AND (MSC_UTIL.G_CMRO_EAM_INT_ENABLED = 'Y')) THEN
166: FOR i IN 1..v_partTblList.COUNT LOOP
167: v_tempTblList(i):= v_tempTblList(i)||v_instance_code;
168: END LOOP;
169: ELSE
170: -- USAF entities are not supported.
171: -- Here, we will remove the new tables for eAM/cMRO integration
172: -- from v_partTblList and v_tempTblList
173:
174: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
175: 'eAM/cMRO integration disabled');
176:
177: tbl_count := 0;
178: FOR i IN 1..v_partTblList.COUNT LOOP
187: 'MSC_WORK_BREAKDOWN_STRUCT',
188: 'MSC_WO_SUB_COMP')) THEN
189:
190: IF (tbl_count = 0) THEN
191: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
192: 'Initializing v_partTblList1 and v_tempTblList.');
193:
194: v_partTblList1 := TblNmTblTyp('INITIALIZE');
195: v_tempTblList1 := TblNmTblTyp('INITIALIZE');
195: v_tempTblList1 := TblNmTblTyp('INITIALIZE');
196:
197: ELSE
198:
199: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
200: 'tbl_count : '|| tbl_count
201: ||' . Extending temp PL/SQL tables');
202:
203: v_partTblList1.extend;
210: v_partTblList1(tbl_count) := v_partTblList(i) ;
211: v_tempTblList1(tbl_count) := v_tempTblList(i)||v_instance_code;
212:
213: ELSE
214: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
215: 'Ignoring table: ' || v_partTblList(i) );
216: END IF;
217:
218: END LOOP;
218: END LOOP;
219: -- Now the copy the temporary table v_partTblList1 and v_tempTblList1
220: -- into v_partTblList and v_tempTblList respectively.
221:
222: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
223: 'Variable tbl_count : ' || tbl_count);
224:
225: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
226: 'Truncating v_partTblList and v_tempTblList');
221:
222: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
223: 'Variable tbl_count : ' || tbl_count);
224:
225: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
226: 'Truncating v_partTblList and v_tempTblList');
227: v_partTblList.TRIM;
228: v_tempTblList.TRIM;
229:
226: 'Truncating v_partTblList and v_tempTblList');
227: v_partTblList.TRIM;
228: v_tempTblList.TRIM;
229:
230: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
231: 'Copying v_partTblList and v_tempTblList, from temp tables');
232: v_partTblList := v_partTblList1;
233: v_tempTblList := v_tempTblList1;
234:
231: 'Copying v_partTblList and v_tempTblList, from temp tables');
232: v_partTblList := v_partTblList1;
233: v_tempTblList := v_tempTblList1;
234:
235: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS,
236: 'Table count now is: ' || v_partTblList.count);
237: END IF;
238: v_is_TTL_initialized:= TRUE;
239: END IF;
241: trc( 'en:Initialize_TTL_List_PVT');
242: RETURN TRUE;
243: EXCEPTION
244: WHEN OTHERS THEN
245: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
247: RETURN FALSE;
248: END Initialize_TTL_List_PVT;
249:
242: RETURN TRUE;
243: EXCEPTION
244: WHEN OTHERS THEN
245: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
246: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
247: RETURN FALSE;
248: END Initialize_TTL_List_PVT;
249:
250:
295:
296: RETURN TRUE;
297: EXCEPTION
298: WHEN OTHERS THEN
299: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
301: RETURN FALSE;
302: END Initialize_SWAP_Tbl_List;
303:
296: RETURN TRUE;
297: EXCEPTION
298: WHEN OTHERS THEN
299: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
300: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
301: RETURN FALSE;
302: END Initialize_SWAP_Tbl_List;
303:
304: FUNCTION Drop_Temp_Tab_PVT(pTableName VARCHAR2) RETURN BOOLEAN
333:
334: -- drop temp table view created in APPS schema which is created for PAT Bug# 15854386 --
335: lv_object_exist := SYS_NO;
336: --check if view exists in all_objects
337: OPEN c_query_object( pTableName,'VIEW',MSC_UTIL.G_APPS_SCHEMA);
338: FETCH c_query_object INTO lv_object_exist;
339: CLOSE c_query_object;
340:
341: IF lv_object_exist=SYS_YES THEN
352: RETURN TRUE;
353:
354: EXCEPTION
355: WHEN OTHERS THEN
356: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
358: RETURN FALSE;
359: END Drop_Temp_Tab_PVT;
360:
353:
354: EXCEPTION
355: WHEN OTHERS THEN
356: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
357: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
358: RETURN FALSE;
359: END Drop_Temp_Tab_PVT;
360:
361: FUNCTION get_block_size RETURN NUMBER
434: lv_return_status,
435: lv_msg_data);
436:
437: trc('i='|| lv_msg_data);
438: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
440: into lv_part_exists
441: from ALL_TAB_PARTITIONS
442: where table_name = pTableName
443: AND table_owner = v_msc_schema
444: AND partition_name=lv_partition_name;
445:
446: IF lv_part_exists = 0 THEN
447: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
449: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Please create all the missing partitions');
450: RETURN FALSE;
451: END IF;
444: AND partition_name=lv_partition_name;
445:
446: IF lv_part_exists = 0 THEN
447: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
448: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Specified partition: ' || lv_partition_name || ' on table: '|| pTableName ||' does not exist');
449: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Please create all the missing partitions');
450: RETURN FALSE;
451: END IF;
452:
445:
446: IF lv_part_exists = 0 THEN
447: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
448: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Specified partition: ' || lv_partition_name || ' on table: '|| pTableName ||' does not exist');
449: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Please create all the missing partitions');
450: RETURN FALSE;
451: END IF;
452:
453: OPEN c_part_para( v_msc_schema, pTableName,lv_partition_name);
510:
511: EXCEPTION
512: WHEN OTHERS THEN
513: IF c_part_para%ISOPEN THEN CLOSE c_part_para; END IF;
514: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
516: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
517: RETURN FALSE;
518: END Create_Temp_Tab_PVT;
511: EXCEPTION
512: WHEN OTHERS THEN
513: IF c_part_para%ISOPEN THEN CLOSE c_part_para; END IF;
514: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
515: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
517: RETURN FALSE;
518: END Create_Temp_Tab_PVT;
519:
512: WHEN OTHERS THEN
513: IF c_part_para%ISOPEN THEN CLOSE c_part_para; END IF;
514: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
515: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
516: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
517: RETURN FALSE;
518: END Create_Temp_Tab_PVT;
519:
520: /* =========== Create Indexes on Temporary Tables ========== */
539: MSC_CL_COLLECTION.G_WARNING
540: );
541:
542: IF lv_crt_ind_status = MSC_CL_COLLECTION.G_WARNING THEN
543: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Warning during unique index creation on table, ' || v_tempTblList(i));
544: ELSIF lv_crt_ind_status = MSC_CL_COLLECTION.G_ERROR THEN
545: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Error during unique index creation on table, ' || v_tempTblList(i));
546: RETURN FALSE;
547: ELSE
541:
542: IF lv_crt_ind_status = MSC_CL_COLLECTION.G_WARNING THEN
543: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Warning during unique index creation on table, ' || v_tempTblList(i));
544: ELSIF lv_crt_ind_status = MSC_CL_COLLECTION.G_ERROR THEN
545: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Error during unique index creation on table, ' || v_tempTblList(i));
546: RETURN FALSE;
547: ELSE
548: trc('Unique index creation successful on table, ' || v_tempTblList(i));
549: END IF;
554: RETURN TRUE;
555:
556: EXCEPTION
557: WHEN OTHERS THEN
558: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
560: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
561: RETURN FALSE;
562: END Create_Index_PVT;
555:
556: EXCEPTION
557: WHEN OTHERS THEN
558: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
559: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
561: RETURN FALSE;
562: END Create_Index_PVT;
563:
556: EXCEPTION
557: WHEN OTHERS THEN
558: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
559: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
560: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
561: RETURN FALSE;
562: END Create_Index_PVT;
563:
564: /* ========= Exchange Partitions =========== */
587:
588: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_partTblList(i) ,
589: lv_partition_name ,
590: v_tempTblList(i),
591: MSC_UTIL.SYS_YES) THEN
592: return FALSE;
593: END IF;
594: END LOOP;
595:
606:
607: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_swapTblList(i).ods_table_name ,
608: lv_partition_name ,
609: v_swapTblList(i).temp_table_name,
610: MSC_UTIL.SYS_YES) THEN
611: return FALSE;
612: END IF;
613:
614: --if the table is in the ods-staging swap table list.
622: RETURN TRUE;
623:
624: EXCEPTION
625: WHEN OTHERS THEN
626: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
628: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
629: RETURN FALSE;
630: END Exchange_Partition_PVT;
623:
624: EXCEPTION
625: WHEN OTHERS THEN
626: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
627: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
629: RETURN FALSE;
630: END Exchange_Partition_PVT;
631:
624: EXCEPTION
625: WHEN OTHERS THEN
626: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
627: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
628: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
629: RETURN FALSE;
630: END Exchange_Partition_PVT;
631:
632: /* ========== Analyse Temporary Table =========== */
647: RETURN TRUE;
648:
649: EXCEPTION
650: WHEN OTHERS THEN
651: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
653: RETURN FALSE;
654: END Analyse_Temp_Tab_PVT;
655:
648:
649: EXCEPTION
650: WHEN OTHERS THEN
651: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
652: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
653: RETURN FALSE;
654: END Analyse_Temp_Tab_PVT;
655:
656:
679: RETURN TRUE;
680:
681: EXCEPTION
682: WHEN OTHERS THEN
683: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
685: RETURN FALSE;
686: END Create_Temp_Tbl;
687:
680:
681: EXCEPTION
682: WHEN OTHERS THEN
683: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
684: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
685: RETURN FALSE;
686: END Create_Temp_Tbl;
687:
688: FUNCTION Exchange_Partition RETURN BOOLEAN
694:
695: RETURN TRUE;
696: EXCEPTION
697: WHEN OTHERS THEN
698: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
700: RETURN FALSE;
701: END Exchange_Partition;
702:
695: RETURN TRUE;
696: EXCEPTION
697: WHEN OTHERS THEN
698: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
699: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
700: RETURN FALSE;
701: END Exchange_Partition;
702:
703: /* ========== Drop Temporary Tables =========== */
705: IS
706: BEGIN
707:
708: IF NOT v_is_initialized THEN RETURN FALSE; END IF;
709: IF NVL(FND_PROFILE.Value('MSC_COLL_ERR_DEBUG' ), MSC_UTIL.G_LVL_STATUS) >= MSC_UTIL.G_LVL_DEV THEN
710: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '<
711: RETURN FALSE;
712: END IF;
713: FOR i IN 1..v_partTblList.COUNT LOOP
706: BEGIN
707:
708: IF NOT v_is_initialized THEN RETURN FALSE; END IF;
709: IF NVL(FND_PROFILE.Value('MSC_COLL_ERR_DEBUG' ), MSC_UTIL.G_LVL_STATUS) >= MSC_UTIL.G_LVL_DEV THEN
710: MSC_UTIL.LOG_MSG(MSC_UTIL.G_LVL_STATUS, '<
712: END IF;
713: FOR i IN 1..v_partTblList.COUNT LOOP
714: IF NOT Drop_Temp_Tab_PVT(v_tempTblList(i)) THEN RETURN FALSE; END IF;
721: RETURN TRUE;
722:
723: EXCEPTION
724: WHEN OTHERS THEN
725: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
727: RETURN FALSE;
728: END Drop_Temp_Tbl;
729:
722:
723: EXCEPTION
724: WHEN OTHERS THEN
725: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
726: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
727: RETURN FALSE;
728: END Drop_Temp_Tbl;
729:
730: FUNCTION Create_Unique_Index RETURN BOOLEAN
735:
736: RETURN TRUE;
737: EXCEPTION
738: WHEN OTHERS THEN
739: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
741: RETURN FALSE;
742: END Create_Unique_Index;
743:
736: RETURN TRUE;
737: EXCEPTION
738: WHEN OTHERS THEN
739: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
740: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
741: RETURN FALSE;
742: END Create_Unique_Index;
743:
744: FUNCTION Create_NonUnique_Index RETURN BOOLEAN
750:
751: RETURN TRUE;
752: EXCEPTION
753: WHEN OTHERS THEN
754: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
756: RETURN FALSE;
757: END Create_NonUnique_Index;
758:
751: RETURN TRUE;
752: EXCEPTION
753: WHEN OTHERS THEN
754: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
755: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
756: RETURN FALSE;
757: END Create_NonUnique_Index;
758:
759: FUNCTION Analyse_Temp_Tbl RETURN BOOLEAN
765:
766: RETURN TRUE;
767: EXCEPTION
768: WHEN OTHERS THEN
769: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
771: RETURN FALSE;
772: END Analyse_Temp_Tbl;
773:
766: RETURN TRUE;
767: EXCEPTION
768: WHEN OTHERS THEN
769: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
770: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
771: RETURN FALSE;
772: END Analyse_Temp_Tbl;
773:
774: FUNCTION Initialize( p_instance_id IN NUMBER,
796:
797: RETURN v_is_initialized;
798: EXCEPTION
799: WHEN OTHERS THEN
800: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
802: RETURN v_is_initialized;
803: END Initialize;
804:
797: RETURN v_is_initialized;
798: EXCEPTION
799: WHEN OTHERS THEN
800: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
801: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
802: RETURN v_is_initialized;
803: END Initialize;
804:
805: /*********************** PREPLACE CHANGE START ***********************/
901:
902: if NOT EXCHANGE_SINGLE_TAB_PARTN ( lv_partn_tbl_name ,
903: lv_partition_name ,
904: p_tempTblList(i),
905: MSC_UTIL.SYS_YES) THEN
906: return FALSE;
907: END IF;
908:
909: --if the table is in the ods-staging swap table list.
919: RETURN TRUE;
920:
921: EXCEPTION
922: WHEN OTHERS THEN
923: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
925: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
926: RETURN FALSE;
927: END Exchange_Partition_PARTIAL;
920:
921: EXCEPTION
922: WHEN OTHERS THEN
923: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
924: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
926: RETURN FALSE;
927: END Exchange_Partition_PARTIAL;
928:
921: EXCEPTION
922: WHEN OTHERS THEN
923: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
924: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
925: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
926: RETURN FALSE;
927: END Exchange_Partition_PARTIAL;
928:
929: FUNCTION Exchange_Single_Tab_Partn ( pPartitionedTableName IN VARCHAR2,
928:
929: FUNCTION Exchange_Single_Tab_Partn ( pPartitionedTableName IN VARCHAR2,
930: pPartitionName IN VARCHAR2,
931: pUnPartitionedTableName IN VARCHAR2,
932: pIncludeIndexes IN NUMBER DEFAULT MSC_UTIL.SYS_YES ) RETURN BOOLEAN
933: IS
934: BEGIN
935:
936: trc('st:EXCHANGE_SINGLE_TAB_PARTN ' || pPartitionedTableName);
938: 'ALTER TABLE '|| pPartitionedTableName
939: ||' EXCHANGE PARTITION '||pPartitionName
940: ||' WITH TABLE '|| pUnPartitionedTableName;
941:
942: IF ( pIncludeIndexes = MSC_UTIL.SYS_YES )THEN
943: v_sql_stmt:= v_sql_stmt ||' INCLUDING INDEXES';
944: END IF;
945:
946: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'exchange part:-'||v_sql_stmt);
942: IF ( pIncludeIndexes = MSC_UTIL.SYS_YES )THEN
943: v_sql_stmt:= v_sql_stmt ||' INCLUDING INDEXES';
944: END IF;
945:
946: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'exchange part:-'||v_sql_stmt);
947:
948: /* execute the sql statement */
949: ad_ddl.do_ddl( applsys_schema => v_applsys_schema,
950: application_short_name => 'MSC',
955: trc('en:EXCHANGE_SINGLE_TAB_PARTN' || pPartitionedTableName);
956: RETURN TRUE;
957: EXCEPTION
958: WHEN OTHERS THEN
959: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, sqlerrm);
960: RETURN FALSE;
961: END EXCHANGE_SINGLE_TAB_PARTN;
962:
963:
987:
988: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_swapTblList(i).ods_table_name ,
989: lv_partition_name ,
990: v_swapTblList(i).temp_table_name,
991: MSC_UTIL.SYS_YES) then
992: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).ods_table_name );
993: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch targetted collections for following entities :' );
994:
995: FOR j IN i..v_swapTblList.COUNT LOOP
988: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_swapTblList(i).ods_table_name ,
989: lv_partition_name ,
990: v_swapTblList(i).temp_table_name,
991: MSC_UTIL.SYS_YES) then
992: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).ods_table_name );
993: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch targetted collections for following entities :' );
994:
995: FOR j IN i..v_swapTblList.COUNT LOOP
996: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
989: lv_partition_name ,
990: v_swapTblList(i).temp_table_name,
991: MSC_UTIL.SYS_YES) then
992: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).ods_table_name );
993: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch targetted collections for following entities :' );
994:
995: FOR j IN i..v_swapTblList.COUNT LOOP
996: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
997: || ' where instance_id = ' || v_instance_id
996: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
997: || ' where instance_id = ' || v_instance_id
998: INTO lv_swap_status;
999: If lv_swap_status <> MSC_CL_COLLECTION.G_STG_ODS_SWP_PHASE_0 then
1000: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,v_swapTblList(j).entity_name );
1001: End if;
1002: END LOOP;
1003:
1004: return FALSE;
1010:
1011: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_swapTblList(i).stg_table_name ,
1012: v_swapTblList(i).stg_table_partn_name ,
1013: v_swapTblList(i).temp_table_name,
1014: MSC_UTIL.SYS_NO) then
1015: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).stg_table_name );
1016: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch planning data pull again for following entities :' );
1017: FOR j IN i..v_swapTblList.COUNT LOOP
1018: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
1011: if NOT EXCHANGE_SINGLE_TAB_PARTN ( v_swapTblList(i).stg_table_name ,
1012: v_swapTblList(i).stg_table_partn_name ,
1013: v_swapTblList(i).temp_table_name,
1014: MSC_UTIL.SYS_NO) then
1015: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).stg_table_name );
1016: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch planning data pull again for following entities :' );
1017: FOR j IN i..v_swapTblList.COUNT LOOP
1018: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
1019: || ' where instance_id = ' || v_instance_id
1012: v_swapTblList(i).stg_table_partn_name ,
1013: v_swapTblList(i).temp_table_name,
1014: MSC_UTIL.SYS_NO) then
1015: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Error while exchanging partition for table :' || v_swapTblList(i).stg_table_name );
1016: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,' Please launch planning data pull again for following entities :' );
1017: FOR j IN i..v_swapTblList.COUNT LOOP
1018: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
1019: || ' where instance_id = ' || v_instance_id
1020: INTO lv_swap_status;
1018: EXECUTE IMMEDIATE ' select ' ||v_swapTblList(j).column_name || ' from msc_coll_parameters '
1019: || ' where instance_id = ' || v_instance_id
1020: INTO lv_swap_status;
1021: If lv_swap_status <> MSC_CL_COLLECTION.G_STG_ODS_SWP_PHASE_0 then
1022: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,v_swapTblList(j).entity_name );
1023: End if;
1024: END LOOP;
1025:
1026: return FALSE;
1057:
1058: /* Add entries to the Temp Table List */
1059:
1060: -- agmcont
1061: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'payback flag:-'||prec.payback_demand_supply_flag);
1062: IF prec.item_flag = SYS_YES THEN
1063: if (p_is_cont_refresh and
1064: (prec.item_sn_flag = SYS_INCR or prec.item_sn_flag = SYS_NO)) then
1065: null;
1273: end if;
1274: END IF; -- sales_order_flag
1275:
1276: /*IBUC*/
1277: IF prec.ibuc_history_flag = SYS_YES and MSC_UTIL.G_COLLECT_SRP_PH2_ENABLE = 'Y' THEN
1278: tbl_nam_str := 'ORG_AGGR_IBUC_'||v_instance_code;
1279: IF (tbl_count = 0) THEN
1280: tbl_count := tbl_count + 1;
1281: lv_TblList(tbl_count) := tbl_nam_str;
1286: END IF;
1287: END IF;
1288:
1289: /* Notes*/
1290: IF prec.notes_attach_flag = SYS_YES and MSC_UTIL.G_COLLECT_SRP_PH2_ENABLE = 'Y' THEN
1291: tbl_nam_str := 'DOC_ATTACHMENTS_'||v_instance_code;
1292: IF (tbl_count = 0) THEN
1293: tbl_count := tbl_count + 1;
1294: lv_TblList(tbl_count) := tbl_nam_str;
1365: /* CMRO ends */
1366:
1367: /* EAM starts */
1368: IF prec.eam_info_flag = SYS_YES THEN
1369: -- and MSC_UTIL.G_CMRO_EAM_INT_ENABLED = 'Y' THEN
1370:
1371: IF (p_is_cont_refresh and
1372: (prec.eam_sn_flag = SYS_INCR or prec.eam_sn_flag = SYS_NO)) then
1373: null;
1403: END LOOP;
1404:
1405: FOR i IN 1..lv_TblList.COUNT LOOP
1406:
1407: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<< '||TO_CHAR(i) ||' '||lv_TblList(i)||' >>');
1408:
1409: END LOOP;
1410:
1411:
1415:
1416: RETURN TRUE;
1417: EXCEPTION
1418: WHEN OTHERS THEN
1419: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
1421: RETURN FALSE;
1422: END Exchange_Partition;
1423:
1416: RETURN TRUE;
1417: EXCEPTION
1418: WHEN OTHERS THEN
1419: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
1420: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
1421: RETURN FALSE;
1422: END Exchange_Partition;
1423:
1424: /*
1529: END IF;
1530:
1531: EXCEPTION
1532: WHEN OTHERS THEN
1533: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'ERROR in procedure create_partition ');
1534: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
1535:
1536: END create_partition;
1537:
1530:
1531: EXCEPTION
1532: WHEN OTHERS THEN
1533: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'ERROR in procedure create_partition ');
1534: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
1535:
1536: END create_partition;
1537:
1538: /*-----------------------------------------------------------------------------
2024: /* handle unique index violation exception */
2025:
2026: IF SQLCODE IN (-00001, -01452, -12801) THEN
2027: IF p_error_level = MSC_CL_COLLECTION.G_ERROR THEN
2028: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'ERROR');
2029: ELSE
2030: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'WARNING');
2031: END IF;
2032:
2026: IF SQLCODE IN (-00001, -01452, -12801) THEN
2027: IF p_error_level = MSC_CL_COLLECTION.G_ERROR THEN
2028: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'ERROR');
2029: ELSE
2030: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'WARNING');
2031: END IF;
2032:
2033: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Unique index violated - ' || lv_temp_index_name);
2034: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
2029: ELSE
2030: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'WARNING');
2031: END IF;
2032:
2033: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Unique index violated - ' || lv_temp_index_name);
2034: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
2035:
2036: lv_sql_stmt2 := 'SELECT ';
2037: lv_sql_stmt3 := 'WHERE ';
2030: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'WARNING');
2031: END IF;
2032:
2033: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'Unique index violated - ' || lv_temp_index_name);
2034: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
2035:
2036: lv_sql_stmt2 := 'SELECT ';
2037: lv_sql_stmt3 := 'WHERE ';
2038:
2066: lv_sql_stmt2 := lv_sql_stmt2 || ' err_text FROM ' || p_temp_table || ' t1 WHERE EXISTS '
2067: || '(SELECT 1 FROM ' || p_temp_table || ' t2 ' || lv_sql_stmt3
2068: || 't1.rowid < t2.rowid)';
2069:
2070: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '======= Below records violate the unique constraint =======');
2071:
2072: EXECUTE IMMEDIATE lv_sql_stmt2 BULK COLLECT INTO lv_error_msg;
2073:
2074: FOR j IN 1..lv_error_msg.COUNT LOOP
2071:
2072: EXECUTE IMMEDIATE lv_sql_stmt2 BULK COLLECT INTO lv_error_msg;
2073:
2074: FOR j IN 1..lv_error_msg.COUNT LOOP
2075: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, lv_error_msg(j) );
2076: END LOOP;
2077:
2078: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '===========================================================');
2079:
2074: FOR j IN 1..lv_error_msg.COUNT LOOP
2075: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, lv_error_msg(j) );
2076: END LOOP;
2077:
2078: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '===========================================================');
2079:
2080: IF p_error_level = MSC_CL_COLLECTION.G_ERROR THEN
2081: lv_retval := MSC_CL_COLLECTION.G_ERROR;
2082: RAISE;
2081: lv_retval := MSC_CL_COLLECTION.G_ERROR;
2082: RAISE;
2083: ELSE
2084: lv_retval := MSC_CL_COLLECTION.G_WARNING;
2085: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'The above records would not be collected');
2086: lv_sql_stmt4 := 'DELETE FROM ' || p_temp_table || ' t1 WHERE EXISTS '
2087: || '(SELECT 1 FROM ' || p_temp_table || ' t2 ' || lv_sql_stmt3
2088: || 't1.rowid < t2.rowid)';
2089:
2086: lv_sql_stmt4 := 'DELETE FROM ' || p_temp_table || ' t1 WHERE EXISTS '
2087: || '(SELECT 1 FROM ' || p_temp_table || ' t2 ' || lv_sql_stmt3
2088: || 't1.rowid < t2.rowid)';
2089:
2090: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, 'deleting the duplicate row ' ||lv_sql_stmt4 );
2091:
2092: EXECUTE IMMEDIATE lv_sql_stmt4;
2093: COMMIT;
2094:
2119:
2120: EXCEPTION
2121: WHEN OTHERS THEN
2122: lv_retval := MSC_CL_COLLECTION.G_ERROR;
2123: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
2125: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
2126: RETURN lv_retval;
2127: END create_temp_table_index;
2120: EXCEPTION
2121: WHEN OTHERS THEN
2122: lv_retval := MSC_CL_COLLECTION.G_ERROR;
2123: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
2124: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
2126: RETURN lv_retval;
2127: END create_temp_table_index;
2128:
2121: WHEN OTHERS THEN
2122: lv_retval := MSC_CL_COLLECTION.G_ERROR;
2123: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
2124: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, '<
2125: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, SQLERRM);
2126: RETURN lv_retval;
2127: END create_temp_table_index;
2128:
2129:
2131: ------------- Clean Repaiir junk inst Part--------------------------------
2132: PROCEDURE EXEC_DDL(qry varchar2)
2133: IS
2134: BEGIN
2135: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_1,qry);
2136: EXECUTE IMMEDIATE qry ;
2137: END EXEC_DDL;
2138:
2139: PROCEDURE list_create_def_part_stg ( ERRBUF OUT NOCOPY VARCHAR2,
2142: IS
2143: lv_qry_add_part varchar2(2000);
2144: lv_schema varchar2(30);
2145: BEGIN
2146: lv_schema:=msc_util.get_schema_name(724);
2147: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following DEFAULT partitions are missing');
2148: FOR tab in (select table_name
2149: from MSC_STAGING_TABLE_V mst
2150: where partition_type <> 'U'
2143: lv_qry_add_part varchar2(2000);
2144: lv_schema varchar2(30);
2145: BEGIN
2146: lv_schema:=msc_util.get_schema_name(724);
2147: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following DEFAULT partitions are missing');
2148: FOR tab in (select table_name
2149: from MSC_STAGING_TABLE_V mst
2150: where partition_type <> 'U'
2151: and not exists (select 1 from all_tab_partitions ATP
2152: where ATP.table_owner = lv_schema
2153: and atp.table_name=mst.table_name
2154: and partition_name like '%_DEF') )
2155: loop
2156: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||substr(tab.table_name,5)||'_DEF');
2157: lv_qry_add_part := 'ALTER TABLE '||lv_schema||'.'||tab.table_name||' ADD PARTITION '||substr(tab.table_name,5)||'_DEF VALUES (DEFAULT)';
2158: IF p_mode = 1 then
2159: EXEC_DDL(lv_qry_add_part);
2160: end if;
2209:
2210:
2211: BEGIN
2212:
2213: lv_schema:=msc_util.get_schema_name(724);
2214: --
2215: -- Generate List of Instances passed --
2216: lv_inst_str := ',';
2217: lv_leg_inst_str := ', ';
2224: end if;
2225: END LOOP;
2226:
2227: --End Generate List of Instances passed --
2228: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'List of Junk Stg Partitions:-');
2229: FOR tab in c_tab_part(lv_schema)
2230: LOOP
2231: --
2232: IF ( (INSTR(lv_inst_str,','||SUBSTR(tab.partition_name,INSTR(tab.partition_name,'_',-1)+1)||',') < 1
2242: ELSIF tab.partition_name = substr(tab.table_name,5)||'_LEG' THEN
2243: for inst in (select instance_id from msc_apps_instances where instance_type = 3 ) loop
2244: if instr(', '||substr(tab.high_value,1,tab.high_value_length)||',' , ', '||inst.instance_id||',') < 1 then
2245: IS_BAD_PARTITION := TRUE;
2246: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_DEBUG_2,'Leg part marked as wrong1:-'||tab.table_name||'.'||tab.partition_name);
2247: end if;
2248: end loop;
2249:
2250: -- check if there is any extra value in the high_value of leg part
2249:
2250: -- check if there is any extra value in the high_value of leg part
2251: lv_high_val_str := ','||substr(tab.high_value,1,tab.high_value_length)||',';
2252: i := 0;
2253: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'lv_high_val_str--'||lv_high_val_str);
2254: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'lv_leg_inst_str--'||lv_leg_inst_str);
2255: LOOP
2256: i := i+1;
2257: lv_str := substr (lv_high_val_str,instr(lv_high_val_str,',',1,i) +1
2250: -- check if there is any extra value in the high_value of leg part
2251: lv_high_val_str := ','||substr(tab.high_value,1,tab.high_value_length)||',';
2252: i := 0;
2253: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'lv_high_val_str--'||lv_high_val_str);
2254: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'lv_leg_inst_str--'||lv_leg_inst_str);
2255: LOOP
2256: i := i+1;
2257: lv_str := substr (lv_high_val_str,instr(lv_high_val_str,',',1,i) +1
2258: ,instr(lv_high_val_str,',',1,i+1)-instr(lv_high_val_str,',',1,i) -1);
2255: LOOP
2256: i := i+1;
2257: lv_str := substr (lv_high_val_str,instr(lv_high_val_str,',',1,i) +1
2258: ,instr(lv_high_val_str,',',1,i+1)-instr(lv_high_val_str,',',1,i) -1);
2259: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'lv_str--'||lv_str);
2260: exit when lv_str is null;
2261: if lv_str in ('0',' NULL') then
2262: NULL;
2263: ELSIF instr(lv_leg_inst_str,','||lv_str||',') < 1 then
2261: if lv_str in ('0',' NULL') then
2262: NULL;
2263: ELSIF instr(lv_leg_inst_str,','||lv_str||',') < 1 then
2264: IS_BAD_PARTITION := TRUE;
2265: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Leg part marked as wrong2:-'||tab.table_name||'.'||tab.partition_name);
2266: end if;
2267: END LOOP;
2268:
2269:
2273: END IF;
2274:
2275: IF IS_BAD_PARTITION THEN
2276: BEGIN
2277: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||tab.partition_name);
2278: lv_qry_drop_part := 'ALTER TABLE '||lv_schema||'.'||tab.table_name||' DROP PARTITION '||tab.partition_name;
2279: IF p_mode = 1 then
2280: EXEC_DDL(lv_qry_drop_part);
2281: end if;
2280: EXEC_DDL(lv_qry_drop_part);
2281: end if;
2282: EXCEPTION
2283: WHEN OTHERS THEN
2284: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2285: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2286: RAISE;
2287: END;
2288: IS_BAD_PARTITION := FALSE;
2281: end if;
2282: EXCEPTION
2283: WHEN OTHERS THEN
2284: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2285: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2286: RAISE;
2287: END;
2288: IS_BAD_PARTITION := FALSE;
2289: END IF;
2325: AND b.partition_name like substr( a.table_name,5)||'%'
2326: AND INSTR(b.partition_name,'__') > 0;
2327: BEGIN
2328:
2329: lv_schema:=msc_util.get_schema_name(724);
2330:
2331: -- row_limit := TO_NUMBER( FND_PROFILE.VALUE('MRP_PURGE_BATCH_SIZE'));
2332: --
2333: -- Generate List of Instances passed --
2337: lv_inst_str := lv_inst_str || inst.instance_id || ',' ;
2338: END LOOP;
2339:
2340: --End Generate List of Instances passed --
2341: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'List of junk ODS Partitions');
2342: FOR tab in c_tab_part(lv_schema)
2343: LOOP
2344: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'|tab.part_inst_id:-'||tab.part_inst_id||';');
2345: --IF SUBSTR(tabs.partition_name,INSTR(tabs.partition_name,'__')+2) NOT IN lv_inst_str then
2340: --End Generate List of Instances passed --
2341: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'List of junk ODS Partitions');
2342: FOR tab in c_tab_part(lv_schema)
2343: LOOP
2344: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'|tab.part_inst_id:-'||tab.part_inst_id||';');
2345: --IF SUBSTR(tabs.partition_name,INSTR(tabs.partition_name,'__')+2) NOT IN lv_inst_str then
2346: IF INSTR(lv_inst_str,','||SUBSTR(tab.partition_name,INSTR(tab.partition_name,'__')+2)||',') < 1 then -- not in list
2347: BEGIN
2348: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||tab.partition_name);
2344: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'|tab.part_inst_id:-'||tab.part_inst_id||';');
2345: --IF SUBSTR(tabs.partition_name,INSTR(tabs.partition_name,'__')+2) NOT IN lv_inst_str then
2346: IF INSTR(lv_inst_str,','||SUBSTR(tab.partition_name,INSTR(tab.partition_name,'__')+2)||',') < 1 then -- not in list
2347: BEGIN
2348: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||tab.partition_name);
2349: lv_qry_drop_part := 'ALTER TABLE '||lv_schema||'.'||tab.table_name||' DROP PARTITION '||tab.partition_name;
2350: IF p_mode = 1 then
2351: EXEC_DDL(lv_qry_drop_part);
2352: end if;
2351: EXEC_DDL(lv_qry_drop_part);
2352: end if;
2353: EXCEPTION
2354: WHEN OTHERS THEN
2355: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2356: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2357: RAISE;
2358: END;
2359: ELSE
2352: end if;
2353: EXCEPTION
2354: WHEN OTHERS THEN
2355: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2356: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2357: RAISE;
2358: END;
2359: ELSE
2360:
2365: end if;
2366:
2367: if substr(tab.high_value,1,tab.high_value_length) <> lv_Part_inst_id then
2368: BEGIN
2369: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||tab.partition_name);
2370: lv_qry_drop_part := 'ALTER TABLE '||lv_schema||'.'||tab.table_name||' DROP PARTITION '||tab.partition_name;
2371: IF p_mode = 1 then
2372: EXEC_DDL(lv_qry_drop_part);
2373: end if;
2372: EXEC_DDL(lv_qry_drop_part);
2373: end if;
2374: EXCEPTION
2375: WHEN OTHERS THEN
2376: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2377: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2378: RAISE;
2379: END;
2380: end if;
2373: end if;
2374: EXCEPTION
2375: WHEN OTHERS THEN
2376: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'ERROR while executing --'||lv_qry_drop_part);
2377: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,SQLERRM);
2378: RAISE;
2379: END;
2380: end if;
2381: END IF;
2411: lv_part_name varchar2(1000);
2412: lv_schema VARCHAR2(30);
2413:
2414: BEGIN
2415: lv_schema:=msc_util.get_schema_name(724);
2416: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following Partitions to be created');
2417: FOR tab IN missing_ods_part(lv_schema)
2418: LOOP
2419: if tab.instance_id_flag = 'Y' and tab.plan_id_flag = 'Y' then
2412: lv_schema VARCHAR2(30);
2413:
2414: BEGIN
2415: lv_schema:=msc_util.get_schema_name(724);
2416: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following Partitions to be created');
2417: FOR tab IN missing_ods_part(lv_schema)
2418: LOOP
2419: if tab.instance_id_flag = 'Y' and tab.plan_id_flag = 'Y' then
2420: lv_high_value := '-1, ' || to_char(tab.instance_id+1);
2420: lv_high_value := '-1, ' || to_char(tab.instance_id+1);
2421: elsif tab.instance_id_flag = 'Y' and tab.plan_id_flag = 'N' then
2422: lv_high_value := to_char(tab.instance_id+1);
2423: else
2424: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Partitioned ODS Table '||tab.table_name||' does not have Instance_id as expected. Pls investigate');
2425: ERRBUF := 'Partitioned ODS Table '||tab.table_name||' does not have Instance_id as expected. Pls investigate';
2426: RETCODE := G_WARNING;
2427: end if;
2428: lv_part_name := substr(tab.table_name, 5) || '__' || tab.instance_id;
2425: ERRBUF := 'Partitioned ODS Table '||tab.table_name||' does not have Instance_id as expected. Pls investigate';
2426: RETCODE := G_WARNING;
2427: end if;
2428: lv_part_name := substr(tab.table_name, 5) || '__' || tab.instance_id;
2429: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Create Part:-'||tab.table_name||'.'||lv_part_name);
2430: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||lv_part_name);
2431: IF p_mode = 1 THEN
2432: --GET_NEXT_PART(lv_high_value)
2433: MSC_CL_EXCHANGE_PARTTBL.create_partition(tab.table_name,
2426: RETCODE := G_WARNING;
2427: end if;
2428: lv_part_name := substr(tab.table_name, 5) || '__' || tab.instance_id;
2429: --MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Create Part:-'||tab.table_name||'.'||lv_part_name);
2430: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,tab.table_name||'.'||lv_part_name);
2431: IF p_mode = 1 THEN
2432: --GET_NEXT_PART(lv_high_value)
2433: MSC_CL_EXCHANGE_PARTTBL.create_partition(tab.table_name,
2434: lv_part_name,
2486: lv_count number;
2487:
2488: BEGIN
2489:
2490: lv_schema:=msc_util.get_schema_name(724);
2491:
2492: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following Partitions to be created');
2493: for stg_tab in (select table_name from msc_staging_table_v where PARTITION_TYPE = 'L' ) loop
2494:
2488: BEGIN
2489:
2490: lv_schema:=msc_util.get_schema_name(724);
2491:
2492: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,'Following Partitions to be created');
2493: for stg_tab in (select table_name from msc_staging_table_v where PARTITION_TYPE = 'L' ) loop
2494:
2495: open c_leg_part (lv_schema,stg_tab.table_name);
2496: fetch c_leg_part into lv_count;
2498: lv_sql_stmt :='ALTER TABLE '||lv_schema||'.'||stg_tab.table_name
2499: ||' SPLIT PARTITION '||substr(stg_tab.table_name,5)||'_DEF'
2500: ||' VALUES (0, NULL) INTO (PARTITION '||substr(stg_tab.table_name,5)||'_LEG, PARTITION '|| substr(stg_tab.table_name,5)||'_DEF )';
2501:
2502: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS,stg_tab.table_name||'.'||substr(stg_tab.table_name,5)||'_LEG');
2503: IF p_mode = 1 then
2504: EXEC_DDL(lv_sql_stmt);
2505: end if;
2506: end if;
2516: || ' VALUES (' || c_rec.instance_id || ') INTO (PARTITION '
2517: || SUBSTR(c_rec.table_name, 8) || '_' || to_char(c_rec.instance_id)
2518: || ' , PARTITION ' || SUBSTR(c_rec.table_name, 5) || '_DEF )';
2519:
2520: MSC_UTIL.LOG_MSG(MSC_UTIL.G_D_STATUS, c_rec.table_name||'.'||SUBSTR(c_rec.table_name, 8) || '_' || to_char(c_rec.instance_id));
2521: IF p_mode = 1 then
2522: EXEC_DDL(lv_sql_stmt);
2523: end if;
2524: ELSE