Мар 122012
 

При миграции БД с версии 10.2.0.4 на 11.2.0.3 вылез неприятнейший Bug 11074304, связанный с несовместимостью с пакетами, обработанными утилитой WRAP версии 9 с БД релиза 11.2.0.3. Патча для этого бага нет, а ставить старый релиз (в 11.2.0.1 этой проблемы почему-то нет) не хочется.
Решение вроде простое - обработать все пакеты WRAP'ом заново, но есть загвоздка: нет тривиального способа определить, какой версией WRAP'а пакет обработан.
Проведём небольшой эксперимент: обработаем какой-нибудь пакет 9 и 10 WRAP'ом и посмотрим его код, чтобы найти различия.
Итак, результат 9 WRAP: Continue reading »

Сен 232011
 

Deadlock - ситуация, при которой одна сессия (A) пытается получить доступ к ресурсу, блокированному другой сессией (B), которая в свою очередь пытается получить доступ к ресурсу, блокированному первой сессией (A). Это самый типичный случай. Вообще же, в deadlock может быть вовлечена и только одна сессия (self deadlock) и больше двух.
Итак, что делать, если кто-то жалуется на наличие дедлоков? Continue reading »

Авг 102011
 

Эта ошибка возникает при использовании пакета UTL_TCP (или любого другого, который открывает TCP-соединение к какому-либо сервису из сессии БД, например, UTL_HTTP, UTL_SMTP, etc.) если число открытых соединений превышает 16 (это значение "зашито" в код ORACLE и не настраивается) на каждую сессию. Continue reading »

Июл 082011
 

Разработчики наткнулись на интересный баг: при работе через dblink сессия на удалённой базе подвисает с событием ожидания enq: DX - contention. Вот testcase, демонстрирующий проблему: Continue reading »

Июн 302011
 

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

Запрос будет выглядеть так: 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 »

Фев 102011
 

Впервые возможность быстрого секционирования (Fast Split Partitioning) появилась в 8 версии Oracle только для таблиц, секционированных стратегией range partitioning. В 9-й версии появилась возможность быстрого секционирования для стратегий LIST, RANGE-HASH и RANGE-LIST (о стратегиях секционирования я писал тут).
Чтобы был задействован механизм быстрого секционирования, нужно, чтобы выполнялись 3 условия: Continue reading »

Фев 032011
 

Секционирование таблиц и индексов в Oracle - неплохой способ повысить производительность базы данных и упростить администрирование. Все секции таблицы или индекса могут располагаться в разных табличных пространствах, что позволит, например, расположить их на разных дисках для увеличения производительности и степени параллелизма выполнения операций.
Oracle 10g поддерживает следующие виды секционирования: Continue reading »

Янв 172011
 

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