Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-00600 [4454]  [new]
Soft Wind
Member

Откуда:
Сообщений: 170
Салют.

В Oracle есть проблема - переполнение 0xFFFFFFFF значений внутреннего savepoint на длинных процессах. Решения на 9.2.0.x нет и не будет, но можно спрогнозироать время падения вашего процесса и сделать его пе-
резапуск, если это возможно, конечно...

1) соединяетесь под sysdba.
sql>connect / as sysdba
2) подсоединяетесь к процессу:
sql>oradebug setorapid <pid процесса>
3) делаете dump процесса
sql>oradebug dump processstate 10
4) Смотрите имя файла
sql>oradebug tracefile_name
Анализируете.
Таблицы вида
index savepoint itli buffer hint rdba
--------------------------------------------------
0 139734443 1 0xc0000000f8fd4100 0x562a7a
1 139734444 9 0xc00000016efd5a00 0x563497
----------------------------------------
во втором столбце содержат именно этот savepoint.
Соответственно - 100*(max(savepoint))/0xFFFFFFFF - процент выполнения процесса.

Зная время его запуска можно спрогнозировать падение.

Теоретически можно попытаться достучаться до таблиц транзакций через x$ksmem, но там при попадении на некоторые адреса запрос валится, так что работать с ней стабильно не получается. Т.е. адресовать память и дампировать придётся через peek в oradebug или ещё каким-нибудь приложением - на sourceforge.net есть проект, который умеет работать с oracle sga напрямую. В любом случае- проанализировать processstate в данной ситуации самый простой спосо.
Я аттачу анализатор на определённую задачу. Алгоритм поиска процесса желающие могут подправить под свою.

К сообщению приложен файл (OERI4454.zip - 3Kb) cкачать
1 ноя 06, 12:50    [3340595]     Ответить | Цитировать Сообщить модератору
 Re: ORA-00600 [4454]  [new]
juks@gala.net
Member

Откуда: Киев
Сообщений: 4212
На всякий случай страницу сохранил.
1 ноя 06, 13:08    [3340757]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить