15.02.2022 17:28
В общем, если налетели на ORA-600 [25027], то это, скорее всего, рассогласование таблицы с индексом.
Первый аргумент после 25027 - это название табличного пространства, второй - RDBA. Можете искать, можете просто посмотреть в трейс и увидеть там запрос, на который ругается база. Соответственно табличке, на которую ругается, надо сделать проверку структуры, например
SQL код:
analyze table supermag.ffmaprep_ validate structure cascade; 
если не промахнулись, то сделайте все ее индексы сначала UNUSABLE, потом их перестройте. Никаких там REBULD до того, пока не скажете, что индекс дохлый.
В 12 версии и старше могут быть fake indexes, если запрос
SQL код:
select do.owner,do.object_name, do.object_type,sysind.flags
     from dba_objects do, sys.ind$ sysind
     where do.object_id = sysind.obj#
     and bitand(sysind.flags,4096)=4096; 
что-то возвращает, то надо грохнуть связанные объекты, они и есть причина ошибки.
17.02.2022 12:15
Если analyze table работает слишком долго, можно воспользоваться следующим скриптом для проверки рассогласования каждого индекса

SQL код:
set autotrace on explain
set feedback 1


select /*+ full(t1) parallel */ sum(ora_hash(rowid))
from  <TABLE NAME> t1
where <INDEXED COLUMN> is not null
minus
select /*+ index_ffs(t <INDEX NAME>) parallel */ sum(ora_hash(rowid))
from <TABLE NAME> t
where <INDEXED COLUMN> is not null; 
SQL код:
create or replace procedure analyze_quick(owner_table varchar2, name_table varchar2, name_index varchar2 default null)
is
  s varchar2(30000);
  num_indexes number := 0;
  sum_hash number;
begin
  for i in (select a.owner, a.index_name, b.column_name
               from dba_indexes a, dba_ind_columns b
               where a.table_owner = upper(owner_table)
                 and a.table_name  = upper(name_table)
                 and (a.index_name = upper(name_index) or name_index is null)
                 and a.index_type not in ('IOT - TOP'
                                       ,'LOB'
                                       ,'FUNCTION-BASED NORMAL'
                                       ,'FUNCTION-BASED DOMAIN'
                                       ,'CLUSTER')
                 and a.owner = b.index_owner
                 and a.index_name = b.index_name
                 and a.table_name = b.table_name
                 and b.column_position = 1) loop
    num_indexes := num_indexes+1;

 
    s := 'select /*+ full(t1) parallel */ sum(ora_hash(rowid)) from ';
    s := s || owner_table || '.' || name_table || ' t1 where ' || i.column_name ||' is not null MINUS ';
    s := s || 'select /*+ index_ffs(t '|| i.index_name||') */ sum(ora_hash(rowid)) from ';
    s := s || owner_table || '.' || name_table || ' t where ' || i.column_name ||' is not null';

    begin
      execute immediate s into sum_hash;
      if sum_hash > 0 then
         raise_application_error(-20220,'TABLE/INDEX MISMATCH detected!! Table: '
                                 ||upper(owner_table)||'.'||upper(name_table)
                                 ||' Index: '
                                 ||upper(i.index_name));
      end if;
    exception
      when no_data_found then null;  -- no_data_found means that there is not inconsistency
    end;
  end loop;
  if num_indexes = 0 and name_index is not null then
     raise_application_error(-20221,'Check was not executed. Index '||upper(name_index)||' does not exist for table '||upper(name_table)|| ' or table does not exist');
  elsif num_indexes = 0 then
     raise_application_error(-20222,'Check was not executed. No INDEXES with index_type=NORMAL found for table '||upper(name_table)|| ' or table does not exist');
  end if;

end;
/ 
SQL код:
execute analyze_quick('&TABLE_OWNER','&TABLE_NAME'); 
17.02.2022 19:02
Сейчас налетел
ORA-00600: internal error code, arguments: [25027], [8], [2060990264], [], [], [], [], [], [], [], [], []
Причем, третий аргумент все время плавает от 0 до каких-то произвольных на первый взгляд цифр... Убился. На основной базе все работает, на склонированной падает на
SQL код:
ANALYZE TABLE supermag.FFMapRep_ ESTIMATE STATISTICS SAMPLE 5 PERCENT; 
сколько раз просил убрать старье это... Таблица на 130млн. записей, секционированная и обвешаная bitmap индексами (не мной).
Базу переливал - не помогает. Индексы перестраивал, пересоздавал, в том числе и в не-bitmap, не помогает... validate structure cascade не удается выполнить за разумное время... Файловую систему проверял, все параметры базы перебрал...
В первый раз настолько уперся.
18.02.2022 13:29
В общем, уперся, ANALYZE ... COMPUTE STATISTICS работает нормально, dbms_stats.gather_table_stats('SUPERMAG','FFMAPREP_',estimate_percent =>5); работает без проблем, падает только на ESTIMATE. Дождался таки validate structure cascade (5 часов), без ошибок... Ошибок нет нигде, только в ESTIMATE. Видимо, все же пора уже analyze закапывать для сбора статистики по таблицам и индексам...
Часовой пояс GMT +3, время: 15:03.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.