Програмата “Gather Schema Statistics” отчете следните грешки в регистрационните файлове на заявките:
Грешка №1:ГРЕШКА:Докато GATHER_TABLE_STATS:object_name=GL.JE_BE_LINE_TYPE_MAP***ORA-20001:невалидно име на колона или дублирани колони/групи колони/изрази в method_opt***Грешка №2:ГРЕШКА:Докато GATHER_TABLE_name:=GL.JE_BE_LOGS***ORA-20001:невалидно име на колона или дублирани колони/групи колони/изрази в method_opt***Грешка №3:ГРЕШКА:Докато GATHER_TABLE_STATS:object_name=GL.JE_BE_VAT_REP_RULES***ORA-20001:невалидна колона име или дублирани колони/групи колони/изрази в method_opt***Грешка №4:ГРЕШКА:Докато GATHER_TABLE_STATS:object_name=FII.FII_FIN_ITEM_HIERARCHIES***ORA-20001:невалидно име на колона или дублирани колони/групи на колони/изрази** в methodo *
Това се случи, ако има дублиращи се или невалидни колони в FND_HISTOGRAMS_COL
(1) Има дублиращи се редове в таблицата FND_HISTOGRAM_COLS за таблицата JE_BE_LINE_TYPE_MAP. Поради този проблем FND_STATS се опитва да събере информация за хистограмата с помощта на грешна команда и не успява с грешки ORA-20001.
Следният SQL трябва да върне един ред, а не два:
SQL>изберете име на колона, nvl(hsize,254) hsize от FND_HISTOGRAM_COLS, където table_name ='JE_BE_LINE_TYPE_MAP'подредете по име на колона;COLUMN_NAME HSIZE----------------------- ------- ----------ИЗТОЧНИК 254ИЗТОЧНИК 254
Тъй като в таблицата с хистограми има два реда, FND_STATS създава следната команда за събиране на статистически данни за таблица „JE_BE_LINE_TYPE_MAP“:
dbms_Stats.gather_table_stats(OWNNAME => 'GL', TABNAME=>'JE_BE_LINE_TYPE_MAP',METHOD_OPT=>'ЗА ВСИЧКИ КОЛОНИ РАЗМЕР 1 ЗА КОЛОНИ ИЗТОЧНИК РАЗМЕР 254 FORCOLUMNS SOURCE25'4);Горната команда ще работи на 9i и 10G бази данни, но ще се провали с ora-20001 грешки в 11G.
(2) Колоната не съществува в таблицата, но все още е посочена в таблицата FND_HISTOGRAMS_COL.
Можете да използвате следния SQL за идентифициране. SQL ще поиска името на таблицата, използвайте името на таблицата от грешките. В горните примери можете да използвате FII_FIN_ITEM_HIERARCHIES.
изберете hc.table_name, hc.column_name от FND_HISTOGRAM_COLS hc , dba_tab_columns tc, където hc.table_name ='&TABLE_NAME'и hc.table_name=tc.table_name (+)и hc.column_name =column_name е.column_name нула;Открийте всички дублирани и/или остарели редове в FND_HISTOGRAM_COLS и изтрийте един от тях. Не забравяйте да направите резервно копие на таблицата FND_HISTOGRAM_COLS, преди да изтриете каквито и да е данни.
— идентифицирайте дублиращи се редовеизберете table_name, column_name, count(*)от FND_HISTOGRAM_COLSgroup по table_name, column_name с брой (*)> 1;— Използвайте горните резултати за следния SQL, за да изтриете дубликати
изтрийте от FND_HISTOGRAM_COLS, където table_name ='&TABLE_NAME' и column_name ='&COLUMN_NAME' и rownum=1;— Използвайте следния SQL, за да изтриете остарели редове
изтрийте от FND_HISTOGRAM_COLSwhere (име_на_таблица, име_на_стола) в(изберете hc.table_name, hc.column_name от FND_HISTOGRAM_COLS hc , dba_tab_columns tc, където hc.table_name ='&TABLE_name ='&TABLE_name.column_name='&TABLE_name.column_име_на_таблица.colm'и .column_name (+) и tc.column_name е нула);Също чете
ORA-00900 :Невалиден израз на Sql
ORA-03113
ora-29283:невалидна файлова операция
ORA-29285:грешка при запис на файл
ORA-00054