Май 032011
 

А вот ещё один интересный случай проявления ORA-07445, очень похоже на эту ситуацию, но PL/SQL Developer тут не при чём.
Компилируем объекты и в alert log видим привычную невесёлую картину:

Errors in file /usr/oracle/coredump/testdb_ora_25305.trc:
ORA-07445: exception encountered: core dump [ptmak()+372] [SIGSEGV] [Address not mapped to object] [0x000000010] [] []

Посмотрим трейс /usr/oracle/coredump/testdb_ora_25305.trc (начало файла пропущено):

ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [ptmak()+372] [SIGSEGV] [Address not mapped to object] [0x000000010] [] []
Current SQL statement for this session:
call wmsys.no_vm_drop_proc('TYPE', 'SYS_PLSQL_351040_DUMMY_1', 'CUBE')

Строка, выделенная красным указывает на причину ошибки - наличие некоего служебного типа SYS_PLSQL_351040_DUMMY_1, при попытке изменить или удалить который в процессе компиляции объекта, и происходит ошибка. Удалим мешающие типы и повторим компиляцию снова. Для поиска таких типов будем использовать такой запрос:

SELECT 'DROP TYPE CUBE.' || d.object_name ||';' 
FROM dba_objects d 
WHERE d.owner = 'CUBE' AND 
	  d.object_name LIKE '%351040%';

* Здесь число 351040 - это средняя часть имени типа (все служебные типы будут иметь в своём имени это число) и совпадает оно с object_id (из dba_objects) объекта, который не получается скомпилировать.
Запрос сгенерирует нам команды для удаления типов (в моей практике их всегда было ровно 3, причём иногда удалялись не все). После выполнения этих команд объект должен скомпилироваться.

Кстати, этот способ работает и при ORA-00600, возникающей иногда при компиляции.

 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="">

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

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