Дек 162011
 

По просьбам трудящихся, оставленным в комментариях к этому посту, решил написать, как анализировать redo logs на другой базе. Здесь подразумевается, что база, с которой мы взяли логи (далее исходная) и та, на которой мы будем их анализировать (далее целевая) одной и той же версии и работают на железе одинаковой архитектуры и на одинаковых ОС.
Такой анализ немного осложняется тем, что на целевой базе скорее всего будут отсутствовать объекты, которые есть на основной и в результате этого в колонках sql_redo и sql_undo представления v$logmnr_contents вместо понятного sql-выражения будет нечто невразумительное, что-то вроде этого:

INSERT INTO Object#2581(col#1, col#2) VALUES (HEXTORAW('4a6f686e20446f65'), HEXTORAW('c306'));

Чтобы избежать подобного эффекта, создаётся так называемый LogMiner dictionary, который может находиться как в отдельном файле, так и быть частью redo log'а.
Итак, у нас есть 2 способа создать словарь: Continue reading »

Авг 242011
 

Сегодня обнаружил такую ошибку в alert log:

ORA-00600: internal error code, arguments: [18095], [0x9C96A09A8], [], [], [], [], [], []

Поиск по металинку дал номер бага: Bug 4939224.
Кратко: ошибку можно игнорировать.
Если интересна причина, прошу под кат. Continue reading »

Авг 102011
 

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

Июл 122011
 

Veritas NetBackup - система резервного копирования с огромным количеством возможностей. Чтобы перечислить их все нужен не отдельный пост, а целый викисайт. Администратор баз данных редко имеет дело с ней напрямую, но на случай непредвиденной ситуации (заболел админ систем резервного копирования, например) должен иметь хотя бы самое базовое представление о её работе и администрировании. Вот очень краткая шпаргалка по Veritas NetBackup: Continue reading »

Июн 162011
 

Надолго завис импорт утилитой impdp. Завис и всё, никаких сообщений об ошибках. Посмотрев в v$session, узнал, что сессия висит по событию wait for unread message on broadcast channel. Не слишком информативно, посмотрим alert log, может, там что-то найдётся.
Нашлось: Continue reading »

Май 252011
 

При настройке SQL*Net бывает нужно посмотреть трассировку утилиты tnsping. Чтобы сделать это, надо добавить в файл $ORACLE_HOME/network/admin/sqlnet.ora две строчки:

TNSPING.TRACE_LEVEL=SUPPORT
TNSPING.TRACE_DIRECTORY=/usr/oracle/coredump

Continue reading »

Май 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

Continue reading »

Апр 292011
 

Logminer - специальный инструмент для ретроспективного анализа redo logs базы данных. Он может пригодиться, когда не настроен аудит или, например, для анализа производительности.

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

Мар 312011
 

В alert log сыпятся ошибки вида:
ORA-28575: unable to open RPC connection to external procedure agent
ORA-06512: at line 1

Причина ошибок - неправильная конфигурация листенера.
Посмотрим файл $ORACLE_HOME/network/admin/tnsnames.ora: Continue reading »

Мар 172011
 

Событие 10261 позволяет ограничить потребление PGA сессиями. Его удобно использовать, когда из-за кривого кода часто происходят утечки памяти.

Установим эвент:

-- Не разрешим сессии использовать более 200 Мб (Параметр эвента - килобайты)
ALTER SYSTEM SET event = '10261 trace name context forever, level 204800' SCOPE=SPFILE;
 
-- Обязательно перезапустим базу
SHUTDOWN ABORT;
STARTUP;

Continue reading »