Май 202011
 

При попытке собрать статистику с таблицы, получаем ошибку:

-- Собираем статистику
BEGIN
dbms_stats.export_table_stats(
	ownname =>       'CUBE',
	tabname => 'CUBE_TABLE',
	stattab => 'CUBE_STATS',
	statid  =>          '1',
	statown =>      'CUBE');
END; 
/

Версия 9.2.0.8:

ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.DBMS_STATS", line 5012
ORA-06512: at "SYS.DBMS_STATS", line 5539
ORA-06512: at line 2


Версия 10-11:

ERROR at line 1:
ORA-20001: 20070430 is an invalid identifier
ORA-06512: at "SYS.DBMS_STATS", line ...
ORA-06512: at "SYS.DBMS_STATS", line ...
ORA-06512: at line 2

Причина явления - известный баг (Doc ID 463371.1). Пакет dbms_stats может работать некорректно, если в качестве staid указано число. Если использовать вместо числа строковый идентификатор, то проблем не будет:

-- Собираем статистику, в качестве statid возьмём строку 'ID1'
BEGIN
dbms_stats.export_table_stats(
	ownname =>       'CUBE',
	tabname => 'CUBE_TABLE',
	stattab => 'CUBE_STATS',
	statid  =>        'ID1',
	statown =>      'CUBE');
END; 
/

  2 комментария to “dbms_stats.export_table_stats вызывает ORA-06502”

  1. Собственно, поле STATID Oracle прокручивает через интерпретатор имен. Т.е. по умолчанию оно должно соответствовать идентификатору Oracle в плане правильности задания имени.
    Все легко проверяется -
    Если задать STATID как 123BLA, то будет ORA-20001 - неправильный идентификатор, а вот в противном случае в поле STATID будут записаны след. значения:
    'Bla123' -> BLA123
    '"123Bla"' -> 123Bla
    Т.е. интерпретация через двойные скобки проходит.
    P.S.> Есть более интересный случай - имя пользователя при задании ГЛОБАЛЬНОГО контекста забыли прокрутить через эту функцию. Т.о. для пользователя "Вася" задать глобальный контекст на определённый ClientId не получится - баг открыт, но не реализован.

    • Спасибо за интересный комментарий! Получается, это вовсе не баг, а особенность поведения, expected behaviour, так сказать.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)