Мар 252014
 

О том, что делать в случае переполнения файловой системы и как определить, какой каталог занимает много места, я уже писал.
Но бывают и ситуации поинтереснее. Например, есть некий процесс, непрерывно пишущий огромный лог. Кто-то этот самый лог удаляет командой rm, и мы наблюдаем странные вещи: свободное место на разделе уменьшается, а файла, занимающего кучу места, нет! Дело в том, что даже после удаления файла из файловой системы, в структурах памяти ОС остаётся открытым т.н. дескриптор файла. А пока у файла остаётся хотя бы один дескриптор (и не важно, в памяти он или на файловой системе), место на диске не освобождается. Continue reading »

Янв 152014
 

С точки зрения usability незаменимая утилита SQL*Plus представляет собой насилие над пользователем, и к использованию человеком, хоть раз увидившим нормальный софт, написанный с использованием библиотеки readline, совершенно непригодна.
К счастью, существует великолепная утилита rlwrap. Она создаёт обёртку из readline для SQL*Plus, что позволяет нормально редактировать команды, искать по истории команд, и даже использовать автодополнение!
Просто установить rlwrap мало, его надо правильно приготовить. Об этом и будет статья.

Готовим rlwrap для SQL*Plus.

Continue reading »

Ноя 142013
 

Обнаружил, что по какой-то причине агент Enterprise Manager Cloud Control 12c на одном из серверов БД не запускается. При попытке запуска командой

emctl start agent

в логе видим такие строки (выделил красным интересное): Continue reading »

Сен 272013
 

Режим block change tracking в ORACLE 10g и выше позволяет уменьшить время инкрементального бэкапа за счёт ведения лога изменённых блоков с момента бэкапа предыдущего уровня.

Как это работает?

Continue reading »

Авг 232013
 

Распаковывал тут tar-архив на IBM AIX 7.1 и словил такую ошибку:

tar: 0511-169 A directory checksum error on media; -260707784 not equal to 33314.

Гуглением обнаружился интересный баг: Оказывается, стандартный IBM-овский tar имеет проблемы с длинными именами файлов, и поэтому IBM рекомендует (sic!) использовать GNU tar.
Т.е. заменяем при распаковке вот это:

tar -xf db3.tar

На

gtar -xf db3.tar

И всё прекрасно работает!

Адский ад, конечно.

Авг 062013
 

Роль по умолчанию для пользователя - это роль, которая применяется сразу в момент соединения. Т.е. возможна ситуация, когда пользователю дана некая роль, но она не указана как DEFAULT ROLE. В таком случае он часто не может самостоятельно ею воспользоваться, звонит и задаёт неудобные вопросы.
Рассмотрим ситуацию чуть более подробно, проведём небольшой эксперимент: Continue reading »

Апр 182013
 

В силу некоторых неприятностей с дисками оказалась испорчена база и бэкап (да, я знаю, что это epic fail, но база не очень важная и когда её потерю заметили, бэкап уже устарел и его удалил скрипт).
Чудом сохранился только дамп, сделанный утилитой exp. Всё было бы неплохо, но этот дамп тоже оказался побитым. На импорте одной из таблиц сессия импорта зависала навечно. К счастью, эта таблица содержала маловажные данные (лог неких операций), от которых можно было безболезненно отказаться.
Итак, попробуем починить файл дампа.

Как мы знаем, классический exp сохраняет данные в полутекстовом формате. Поэтому ничто нам не помешает найти определение испорченной таблицы в файле и вырезать его и все данные этой таблицы из дампа, используя стандартные утилиты linux. Определение таблицы предваряется строкой:

TABLE "ACT_HIST"

Здесь ACT_HIST - имя нашей испорченной таблицы.

Итак, найдём номер строки в файле, где начинается наша таблица ACT_HIST: Continue reading »

Апр 032013
 

При работе с Oracle Forms 6-й версии пользователь получает такую ошибку:

FRM-10256 User is not authorized to run Forms Menu. 

Дело в том, что механизмы безопасности форм основаны на ролях в самой базе данных. Поэтому, если нужных объектов в БД нет, то и формы работать не будут.

Для того, чтобы от этой ошибки избавиться, надо выполнить следующие действия (рецепт для 6-х форм): Continue reading »

Фев 282013
 

Возникла у меня такая задача: смигрировать базу c Linux x86-64 на AIX 7.1. Версия Oracle - 11.2.0.3. Можно было бы использовать expdp, но из-за приличного объёма базы (180Гб) процесс занял бы длительное время. Тут нам на помощь приходит технология Transportable Tablespaces. Суть её состоит в том, что файлы данных копируются целиком и все существующие сегменты данных "подключаются" напрямую, т.е. эта операция, в отличие от импорта, не генерирует redo информацию и не требует перестройки индексов. Технология эта годится только для относительно крупных баз, т.к. требует от администратора кучу действий, особенно при смене порядка бит (endianess), как в моём случае.
Заодно мы решили воспользоваться случаем и смигрировать данные сразу в ASM (раньше файлы просто лежали на большом дисковом разделе).

Итак, вот примерная последовательность действий. Continue reading »