44:
45: BEGIN
46:
47: -- create new table name and create statement
48: l_newtablename := GMA_PURGE_UTILITIES.makearcname(p_purge_id,p_tablename);
49: l_cursor := DBMS_SQL.OPEN_CURSOR;
50:
51: -- coalesce the tablespace
52: GMA_PURGE_DDL.coalescetablespace(p_purge_id,
60: p_tablename ||
61: ') FROM ' ||p_owner||'.'||
62: p_arctablename;
63:
64: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_sqlstatement,p_debug_flag);
65:
66: DBMS_SQL.PARSE(l_cursor,l_sqlstatement,DBMS_SQL.NATIVE);
67: DBMS_SQL.DEFINE_COLUMN(l_cursor,1,l_rowcount);
68: l_dummy := DBMS_SQL.EXECUTE_AND_FETCH(l_cursor);
73: l_rowcount,
74: l_trans_allowed,
75: 0); -- p_pctfree
76:
77: GMA_PURGE_UTILITIES.printlong(p_purge_id,
78: 'The ' ||
79: p_tablename ||
80: ' table will need ' ||
81: to_char(l_bytes) ||
99: l_storage_clause
100: || ' AS SELECT * ' || 'FROM ' || p_tablename ||
101: ' WHERE ROWNUM < 1';
102:
103: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_sqlstatement,p_debug_flag);
104:
105: -- let fly with dynamic sql
106: DECLARE
107: l_extent_size EXCEPTION;
116: -- END IF;
117:
118: EXCEPTION
119: WHEN l_extent_size THEN
120: GMA_PURGE_UTILITIES.printlong(p_purge_id,
121: 'Not enough contiguous space in tablespace for table.');
122: GMA_PURGE_UTILITIES.printlong(p_purge_id,
123: 'Using unspecified table creation.');
124: l_sqlstatement := 'CREATE TABLE ' || p_owner || '.' || l_newtablename
118: EXCEPTION
119: WHEN l_extent_size THEN
120: GMA_PURGE_UTILITIES.printlong(p_purge_id,
121: 'Not enough contiguous space in tablespace for table.');
122: GMA_PURGE_UTILITIES.printlong(p_purge_id,
123: 'Using unspecified table creation.');
124: l_sqlstatement := 'CREATE TABLE ' || p_owner || '.' || l_newtablename
125: || ' TABLESPACE ' || p_tablespace ||
126: ' PCTFREE 0 ' ||
140: END;
141:
142: DBMS_SQL.CLOSE_CURSOR(l_cursor);
143:
144: GMA_PURGE_UTILITIES.printlong(p_purge_id,l_newtablename || ' table created.');
145:
146: -- make sure table got created
147: IF GMA_PURGE_VALIDATE.is_table(p_purge_id,l_newtablename) <> TRUE THEN
148: GMA_PURGE_UTILITIES.printlong(p_purge_id,
144: GMA_PURGE_UTILITIES.printlong(p_purge_id,l_newtablename || ' table created.');
145:
146: -- make sure table got created
147: IF GMA_PURGE_VALIDATE.is_table(p_purge_id,l_newtablename) <> TRUE THEN
148: GMA_PURGE_UTILITIES.printlong(p_purge_id,
149: 'Problem Can''''t create table ' || l_newtablename);
150: RAISE l_badtable;
151: ELSE
152: RETURN TRUE;
154:
155: EXCEPTION
156:
157: WHEN l_objectexists THEN
158: GMA_PURGE_UTILITIES.printlong(p_purge_id,
159: 'Problem with arc row table - ' || l_newtablename ||
160: ' exists.');
161: RETURN NULL;
162:
160: ' exists.');
161: RETURN NULL;
162:
163: WHEN OTHERS THEN
164: GMA_PURGE_UTILITIES.printlong(p_purge_id,
165: 'Problem raised in GMA_PURGE_DDL.createarctable with '
166: || p_tablename);
167: GMA_PURGE_UTILITIES.printlong(p_purge_id,
168: 'Unhandled EXCEPTION - ' || sqlerrm);
163: WHEN OTHERS THEN
164: GMA_PURGE_UTILITIES.printlong(p_purge_id,
165: 'Problem raised in GMA_PURGE_DDL.createarctable with '
166: || p_tablename);
167: GMA_PURGE_UTILITIES.printlong(p_purge_id,
168: 'Unhandled EXCEPTION - ' || sqlerrm);
169: RAISE;
170:
171: END createarctable;
183: l_cursor INTEGER;
184:
185: BEGIN
186:
187: l_sqlstatement := 'DROP TABLE '||p_owner||'.'||GMA_PURGE_UTILITIES.makearcname(p_purge_id, --Bug#6681753
188: p_tablename);
189:
190: -- Made comments by Khaja
191: -- let fly with dynamic sql
190: -- Made comments by Khaja
191: -- let fly with dynamic sql
192: -- IF (GMA_PURGE_ENGINE.use_ad_ddl = TRUE) THEN
193: -- AD_DDL.DO_DDL(p_owner,p_appl_short_name,AD_DDL.DROP_TABLE,
194: -- l_sqlstatement,GMA_PURGE_UTILITIES.makearcname(p_purge_id,
195: -- p_tablename));
196: -- ELSE
197: l_cursor := DBMS_SQL.OPEN_CURSOR;
198: DBMS_SQL.PARSE(l_cursor,l_sqlstatement,DBMS_SQL.NATIVE);
197: l_cursor := DBMS_SQL.OPEN_CURSOR;
198: DBMS_SQL.PARSE(l_cursor,l_sqlstatement,DBMS_SQL.NATIVE);
199: DBMS_SQL.CLOSE_CURSOR(l_cursor);
200: -- END IF;
201: GMA_PURGE_UTILITIES.printlong(p_purge_id,p_owner||'.'||GMA_PURGE_UTILITIES.makearcname(p_purge_id,
202: p_tablename)
203: || ' table dropped.');
204:
205: RETURN;
206:
207: EXCEPTION
208:
209: WHEN OTHERS THEN
210: GMA_PURGE_UTILITIES.printlong(p_purge_id,
211: 'Problem raised in GMA_PURGE_DDL.droparctable.');
212: GMA_PURGE_UTILITIES.printlong(p_purge_id,
213: 'Unhandled EXCEPTION - ' || sqlerrm);
214: RAISE;
208:
209: WHEN OTHERS THEN
210: GMA_PURGE_UTILITIES.printlong(p_purge_id,
211: 'Problem raised in GMA_PURGE_DDL.droparctable.');
212: GMA_PURGE_UTILITIES.printlong(p_purge_id,
213: 'Unhandled EXCEPTION - ' || sqlerrm);
214: RAISE;
215:
216: END droparctable;
309: l_sqlstatement := l_sqlstatement
310: || 'SELECT * FROM ' ||
311: l_viewtable.table_name || ' WHERE ROWNUM < 1';
312:
313: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_sqlstatement,p_debug_flag);
314:
315: l_viewname :=l_viewtable.table_name;
316:
317: -- IF (GMA_PURGE_ENGINE.use_ad_ddl = TRUE) THEN
320: -- ELSE
321: DBMS_SQL.PARSE(l_cursor,l_sqlstatement,DBMS_SQL.NATIVE);
322: l_return := DBMS_SQL.EXECUTE(l_cursor);
323: -- END IF;
324: GMA_PURGE_UTILITIES.printlong(p_purge_id,
325: 'A' || l_viewtable.table_name || ' view created.');
326:
327: END LOOP; -- each table
328:
332:
333: WHEN OTHERS THEN
334: IF SQLCODE=-01789 THEN
335: -- This code is added to ignore the view creation if query has no of columns mismatch ORA-01789
336: GMA_PURGE_UTILITIES.printlong(p_purge_id,
337: 'Warning: '||'A'||l_viewname||' View cannot get replaced (column mismatch)');
338: ELSE
339:
340: GMA_PURGE_UTILITIES.printlong(p_purge_id,
336: GMA_PURGE_UTILITIES.printlong(p_purge_id,
337: 'Warning: '||'A'||l_viewname||' View cannot get replaced (column mismatch)');
338: ELSE
339:
340: GMA_PURGE_UTILITIES.printlong(p_purge_id,
341: 'Problem raised in GMA_PURGE_DDL.createarcviews.');
342: GMA_PURGE_UTILITIES.printlong(p_purge_id,
343: 'Unhandled EXCEPTION - ' || SQLERRM);
344: RAISE;
338: ELSE
339:
340: GMA_PURGE_UTILITIES.printlong(p_purge_id,
341: 'Problem raised in GMA_PURGE_DDL.createarcviews.');
342: GMA_PURGE_UTILITIES.printlong(p_purge_id,
343: 'Unhandled EXCEPTION - ' || SQLERRM);
344: RAISE;
345: END IF;
346: */
374: END IF;
375:
376: l_sqlstatement := l_sqlstatement || ' CONSTRAINT ' || p_constraint_name;
377:
378: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_sqlstatement,p_debug_flag);
379:
380: IF (GMA_PURGE_ENGINE.use_ad_ddl = TRUE) THEN
381: AD_DDL.DO_DDL(p_owner,p_appl_short_name,AD_DDL.ALTER_TABLE,
382: l_sqlstatement,p_tablename);
391: EXCEPTION
392:
393: WHEN OTHERS THEN
394: IF (p_debug_flag = TRUE) THEN
395: GMA_PURGE_UTILITIES.printlong(p_purge_id,
396: 'Raised in GMA_PURGE_DDL.altertableconstraint.');
397: GMA_PURGE_UTILITIES.printlong(p_purge_id,
398: 'Ignored EXCEPTION - ' || SQLERRM);
399: END IF;
393: WHEN OTHERS THEN
394: IF (p_debug_flag = TRUE) THEN
395: GMA_PURGE_UTILITIES.printlong(p_purge_id,
396: 'Raised in GMA_PURGE_DDL.altertableconstraint.');
397: GMA_PURGE_UTILITIES.printlong(p_purge_id,
398: 'Ignored EXCEPTION - ' || SQLERRM);
399: END IF;
400: RETURN FALSE;
401:
531: l_disable_flag,
532: p_debug_flag);
533: IF (l_success_tab(i) = TRUE) THEN
534: -- log that the constraint was altered
535: GMA_PURGE_UTILITIES.printlong(p_purge_id,
536: l_disable_text ||
537: ' ' ||
538: l_constraint(i).owner||'.'||l_constraint(i).table_name||
539: '/' ||
538: l_constraint(i).owner||'.'||l_constraint(i).table_name||
539: '/' ||
540: l_constraint(i).constraint_name||
541: ' - ' ||
542: GMA_PURGE_UTILITIES.chartime);
543: ELSIF (l_success_tab(i) <> TRUE) THEN
544: -- Report failed constraints
545: GMA_PURGE_UTILITIES.printlong(p_purge_id,
546: 'WARNING: ' ||
541: ' - ' ||
542: GMA_PURGE_UTILITIES.chartime);
543: ELSIF (l_success_tab(i) <> TRUE) THEN
544: -- Report failed constraints
545: GMA_PURGE_UTILITIES.printlong(p_purge_id,
546: 'WARNING: ' ||
547: l_constraint(i).owner||'.'||l_constraint(i).table_name||
548: '/' ||
549: l_constraint(i).constraint_name||
554:
555: EXCEPTION
556:
557: WHEN OTHERS THEN
558: GMA_PURGE_UTILITIES.printlong(p_purge_id,
559: 'Problem raised in GMA_PURGE_DDL.alterconstraints.');
560: GMA_PURGE_UTILITIES.printlong(p_purge_id,
561: 'Unhandled EXCEPTION - ' || SQLERRM);
562: RAISE;
556:
557: WHEN OTHERS THEN
558: GMA_PURGE_UTILITIES.printlong(p_purge_id,
559: 'Problem raised in GMA_PURGE_DDL.alterconstraints.');
560: GMA_PURGE_UTILITIES.printlong(p_purge_id,
561: 'Unhandled EXCEPTION - ' || SQLERRM);
562: RAISE;
563: END;
564:
678:
679: EXCEPTION
680:
681: WHEN OTHERS THEN
682: GMA_PURGE_UTILITIES.printlong(p_purge_id,
683: 'Problem raised in GMA_PURGE_DDL.tab_size with '
684: || p_tablename);
685: GMA_PURGE_UTILITIES.printlong(p_purge_id,
686: 'Unhandled EXCEPTION - ' || sqlerrm);
681: WHEN OTHERS THEN
682: GMA_PURGE_UTILITIES.printlong(p_purge_id,
683: 'Problem raised in GMA_PURGE_DDL.tab_size with '
684: || p_tablename);
685: GMA_PURGE_UTILITIES.printlong(p_purge_id,
686: 'Unhandled EXCEPTION - ' || sqlerrm);
687: RAISE;
688:
689: END;
714:
715: l_cursor := DBMS_SQL.OPEN_CURSOR;
716:
717: -- get count from dba_free_space
718: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_countstatement,p_debug_flag);
719: DBMS_SQL.PARSE(l_cursor,l_countstatement,DBMS_SQL.NATIVE);
720: DBMS_SQL.DEFINE_COLUMN(l_cursor,1,l_currval);
721: l_return := DBMS_SQL.EXECUTE_AND_FETCH(l_cursor);
722: DBMS_SQL.COLUMN_VALUE(l_cursor,1,l_currval);
724: -- keep coalescing until effectiveness ends
725: l_lastval := 0;
726: WHILE (l_currval <> l_lastval) LOOP
727: l_lastval := l_currval;
728: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_alterstatement,p_debug_flag);
729: DBMS_SQL.PARSE(l_cursor,l_alterstatement,DBMS_SQL.NATIVE);
730: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_countstatement,p_debug_flag);
731: DBMS_SQL.PARSE(l_cursor,l_countstatement,DBMS_SQL.NATIVE);
732: DBMS_SQL.DEFINE_COLUMN(l_cursor,1,l_currval);
726: WHILE (l_currval <> l_lastval) LOOP
727: l_lastval := l_currval;
728: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_alterstatement,p_debug_flag);
729: DBMS_SQL.PARSE(l_cursor,l_alterstatement,DBMS_SQL.NATIVE);
730: GMA_PURGE_UTILITIES.printdebug(p_purge_id,l_countstatement,p_debug_flag);
731: DBMS_SQL.PARSE(l_cursor,l_countstatement,DBMS_SQL.NATIVE);
732: DBMS_SQL.DEFINE_COLUMN(l_cursor,1,l_currval);
733: l_return := DBMS_SQL.EXECUTE_AND_FETCH(l_cursor);
734: DBMS_SQL.COLUMN_VALUE(l_cursor,1,l_currval);
732: DBMS_SQL.DEFINE_COLUMN(l_cursor,1,l_currval);
733: l_return := DBMS_SQL.EXECUTE_AND_FETCH(l_cursor);
734: DBMS_SQL.COLUMN_VALUE(l_cursor,1,l_currval);
735: IF (l_currval <> l_lastval) THEN
736: GMA_PURGE_UTILITIES.printlong(p_purge_id,
737: 'Tablespace ' ||
738: p_tablespace_name ||
739: ' coalesced - ' ||
740: GMA_PURGE_UTILITIES.chartime);
736: GMA_PURGE_UTILITIES.printlong(p_purge_id,
737: 'Tablespace ' ||
738: p_tablespace_name ||
739: ' coalesced - ' ||
740: GMA_PURGE_UTILITIES.chartime);
741: END IF;
742:
743: END LOOP;
744:
750: /*
751: EXCEPTION
752:
753: WHEN OTHERS THEN
754: GMA_PURGE_UTILITIES.printlong(p_purge_id,
755: 'Problem raised in GMA_PURGE_DDL.coalescetablespace ' ||
756: 'with '
757: || p_tablespace_name);
758: GMA_PURGE_UTILITIES.printlong(p_purge_id,
754: GMA_PURGE_UTILITIES.printlong(p_purge_id,
755: 'Problem raised in GMA_PURGE_DDL.coalescetablespace ' ||
756: 'with '
757: || p_tablespace_name);
758: GMA_PURGE_UTILITIES.printlong(p_purge_id,
759: 'Unhandled EXCEPTION - ' || sqlerrm);
760: RAISE;
761: */
762:
858: l_column_list ||
859: l_sqlback;
860: p_indexes_tab(p_indexcount) := l_sqlstatement;
861: p_indexcount := p_indexcount + 1;
862: GMA_PURGE_UTILITIES.printdebug(p_purge_id,
863: 'Statement saved - will run later. => ' ||'
864: '||
865: l_sqlstatement,
866: p_debug_flag);
866: p_debug_flag);
867:
868: -- drop the index
869: l_sqlstatement := 'DROP INDEX ' || l_current_idx;
870: GMA_PURGE_UTILITIES.printdebug(p_purge_id,
871: l_sqlstatement,
872: p_debug_flag);
873: IF (GMA_PURGE_ENGINE.use_ad_ddl = TRUE) THEN
874: AD_DDL.DO_DDL(p_owner,p_appl_short_name,AD_DDL.DROP_INDEX,
876: ELSE
877: DBMS_SQL.PARSE(l_cursor,l_sqlstatement,DBMS_SQL.NATIVE);
878: END IF;
879:
880: GMA_PURGE_UTILITIES.printlong(p_purge_id,
881: l_current_idx ||
882: ' index dropped.');
883: END IF;
884:
934: l_column_list ||
935: l_sqlback;
936: p_indexes_tab(p_indexcount) := l_sqlstatement;
937: p_indexcount := p_indexcount + 1;
938: GMA_PURGE_UTILITIES.printdebug(p_purge_id,'Statement saved - will run later. => ' ||'
939: '||
940: l_sqlstatement,
941: p_debug_flag);
942:
941: p_debug_flag);
942:
943: -- drop the index
944: l_runstatement := 'DROP INDEX ' || l_current_idx;
945: GMA_PURGE_UTILITIES.printdebug(p_purge_id,
946: l_runstatement,
947: p_debug_flag);
948: IF (GMA_PURGE_ENGINE.use_ad_ddl = TRUE) THEN
949: AD_DDL.DO_DDL(p_owner,p_appl_short_name,AD_DDL.DROP_INDEX,
951: ELSE
952: DBMS_SQL.PARSE(l_cursor,l_runstatement,DBMS_SQL.NATIVE);
953: END IF;
954:
955: GMA_PURGE_UTILITIES.printlong(p_purge_id,
956: l_current_idx ||
957: ' index dropped.');
958: GMA_PURGE_UTILITIES.printlong(p_purge_id,'The following statement can be ' ||
959: 'used to recreate the index in ' ||
954:
955: GMA_PURGE_UTILITIES.printlong(p_purge_id,
956: l_current_idx ||
957: ' index dropped.');
958: GMA_PURGE_UTILITIES.printlong(p_purge_id,'The following statement can be ' ||
959: 'used to recreate the index in ' ||
960: 'case of severe archive failure.');
961: GMA_PURGE_UTILITIES.printlong(p_purge_id,l_sqlstatement);
962:
957: ' index dropped.');
958: GMA_PURGE_UTILITIES.printlong(p_purge_id,'The following statement can be ' ||
959: 'used to recreate the index in ' ||
960: 'case of severe archive failure.');
961: GMA_PURGE_UTILITIES.printlong(p_purge_id,l_sqlstatement);
962:
963: END IF;
964:
965: DBMS_SQL.CLOSE_CURSOR(l_cursor);
968:
969: EXCEPTION
970:
971: WHEN OTHERS THEN
972: GMA_PURGE_UTILITIES.printlong(p_purge_id,
973: 'Problem raised in GMA_PURGE_DDL.disableindexes');
974: GMA_PURGE_UTILITIES.printlong(p_purge_id,
975: 'Unhandled EXCEPTION - ' || sqlerrm);
976: RAISE;
970:
971: WHEN OTHERS THEN
972: GMA_PURGE_UTILITIES.printlong(p_purge_id,
973: 'Problem raised in GMA_PURGE_DDL.disableindexes');
974: GMA_PURGE_UTILITIES.printlong(p_purge_id,
975: 'Unhandled EXCEPTION - ' || sqlerrm);
976: RAISE;
977:
978: END disableindexes;
1023: l_indexname := REPLACE(l_indexname,'UNIQUE ');
1024: l_indexname := REPLACE(l_indexname,'INDEX ');
1025: l_indexname := SUBSTR(l_indexname,1,(INSTR(l_indexname,' ') - 1));
1026:
1027: GMA_PURGE_UTILITIES.printdebug(p_purge_id,
1028: l_sqlstatement,
1029: p_debug_flag);
1030:
1031: -- try to recreate index
1042: l_errortext := SQLERRM;
1043: END;
1044:
1045: IF (l_parse_success = TRUE) THEN
1046: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1047: l_indexname ||
1048: ' index recreated.');
1049: ELSE
1050: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1046: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1047: l_indexname ||
1048: ' index recreated.');
1049: ELSE
1050: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1051: l_indexname ||
1052: ' index not recreated - ' ||
1053: l_errortext);
1054: END IF;
1061:
1062: EXCEPTION
1063:
1064: WHEN OTHERS THEN
1065: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1066: 'Problem raised in GMA_PURGE_DDL.enableindexes');
1067: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1068: 'Unhandled EXCEPTION - ' || sqlerrm);
1069: RAISE;
1063:
1064: WHEN OTHERS THEN
1065: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1066: 'Problem raised in GMA_PURGE_DDL.enableindexes');
1067: GMA_PURGE_UTILITIES.printlong(p_purge_id,
1068: 'Unhandled EXCEPTION - ' || sqlerrm);
1069: RAISE;
1070:
1071: END enableindexes;