Июл 262012
 

Про скрипт utlrp.sql я уже писал. Он перекомпилирует все инвалидные объекты в несколько потоков. Обязателен на финальных шагах повышения версии базы или если по какой-то причине инвалидировалось множество объектов. Важная особенность - он компилирует только инвалидные объекты. Continue reading »

Май 242012
 

При удалении некоторых пакетов или при каскадном удалении пользователя, иногда можно словить ошибки подобного вида:

SQL> drop user cube cascade;
drop user cube cascade
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-04043: object SYS_PLSQL_735489_19_2 does not exist

Бороться с ними просто. Сначала найдём все системные типы, создаваемые для нашего объекта: Continue reading »

Июн 302011
 

Запрос из этого поста не очень удобен - он не показывает статусы объектов, на которые ссылается интересующий нас объект. Эту информацию можно получить, связав 2 представления: dba_dependencies и dba_objects по двум полям: имени и владельцу объекта - зависимости (reference).

Запрос будет выглядеть так: Continue reading »

Май 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 (начало файла пропущено): Continue reading »

Мар 042011
 

Объект базы данных DIRECTORY - это ссылка на каталог сервера, на котором работает инстанс Oracle. Он нужен для пакета UTL_FILE, работы утилит impdp/expdp, при использовании полей типа BFILE в таблицах, а также при создании внешних таблиц (external tables).
Вот что можно делать с объектом DIRECTORY: Continue reading »

Фев 112011
 

Часто при компиляции объектов в PL/SQL Developer можно получить ошибку "ORA-03114: not connected to ORACLE". На первый взгляд может показаться, что это локальный или сетевой сбой, но в alert log можно увидеть такие сообщения об ошибках:

Thu Feb 10 19:08:05 2011
Errors in file /usr/oracle/coredump/testdb_ora_3696.trc:
ORA-07445: exception encountered: core dump [ptmak()+372] [SIGSEGV] [Address not mapped to object] [0x000000010] [] []

Это баг, описанный на металинке: Doc ID 726611.1. Связан он с тем, что PL/SQL Developer добавляет отладочную информацию в код пакета, что иногда приводит к возникновению этой ошибки.
Возможных путей решения проблемы два: Continue reading »

Янв 172011
 

Рассмотрим на примере ситуации: мы обнаружили, что в БД появились инвалидные объекты. Прежде чем бросаться компилировать их, можно посмотреть, в результате каких действий они развалились. Для начала определим момент, когда возникла проблема:
Continue reading »

Янв 112011
 

Если возникла необходимость восстановить archivelogs из бэкапа (такое приходится иногда делать при восстановлении Standby-сервера, когда он по каким-то причинам был пересоздан, и нужно "догнать" его до актуального состояния), пользуемся RMAN'ом:
Continue reading »

Дек 312010
 

В некоторых случаях, например, после установки патчсетов или инвалидации важных объектов раскомпилируются объекты в большом количестве (могут быть тысячи таких объектов). Чтобы их скомпилировать, есть стандартный скрипт utlrp.sql. Запускать его надо от имени SYS в sqlplus:

SQL> @?/rdbms/admin/utlrp

Continue reading »