Генериране на основния дъмп файл на Oracle Concurrent Manager
Едновременните мениджъри на Oracle се състоят от много изпълними файлове и често се сблъскваме с различни проблеми с него. Когато изпълним файл завърши с грешка при сегментиране или сигнал 11, трябва да бъде създаден основен файл за паралелен мениджър на Oracle.
Ако не откриете, че е създаден основен файл, тогава ulimit може да бъде настроен на 0 за основните файлове във вашата система.
Проверете това, както следва:
ulimit -a
ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) unlimited coredump(blocks) unlimited nofiles(descriptors) 4096 vmemory(kbytes) unlimited
Проверете изхода за „размер на основния файл (блокове)“ Ако това е настроено на 0 или ниска стойност, може да бъде нулирано за да позволи създаването на основни файлове от всякакъв размер в текущата сесия с помощта на синтаксиса:
ulimit -c unlimited
Ако потребителят на Unix е настроил това в средата преди стартиране на едновременния мениджър и слушателя на приложения,
тогава средата за едновременна обработка ще може да създава основни файлове.
Изпълнимият файл, който завършва с грешка при сегментиране или сигнал 11, трябва да бъде повторно свързан със символи за отстраняване на грешки, за
за да се получи полезен основен файл. Това става чрез предаване на параметъра link_debug=y на adrelink.sh.
Например:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"
След като изпълнимият файл бъде повторно свързан със символи за отстраняване на грешки и имате основен файл, уверете се, че имате правилния
основен файл за изпълнимия файл, който се срине, като използвате синтаксиса:
file core core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'
Сега използвайте инструмента за отстраняване на грешки, за да получите трасиране на стека.
За Linux дебъгерът е gdb:
gdb $FND_TOP/bin/FNDLIBR core
За Solaris дебъгерът е dbx:
dbx $FND_TOP/bin/FNDLIBR core
Добавяне на код за отстраняване на грешки към изпълнимия файл на приложението, както е предоставено от поддръжката на Oracle
Често се вижда, че генерираният по-горе дъмп на ядрото не е достатъчен за отстраняване на проблема. Така че поддръжката на Oracle може да предостави код за отстраняване на грешки за по-задълбочено разглеждане на проблема
Ето общите стъпки за Как да добавите кодове за отстраняване на грешки в изпълнимия файл на приложението.
Всъщност това са стъпки, последвани дори от adpatch за замяна на lib файлове в изпълнимия файл на продукта
Да кажем, че трябва да свържете обектния файл „invir.o“ с изпълнимия файл INVLIBR.
Преди да направите нещо, уверете се, че едновременните мениджъри са изключени.
Първо нека проверим версиите:
adident Header $INV_TOP/lib/invir.o $Header: invir.opp 115.6 2001/04/11 16:14:32 pkm ship $ adident Header /u00/to/debug/file/invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aeisber ship $ adident Header $INV_TOP/bin/INVLIBR |grep invir $Header: invir.op 115.6 2001/04/11 16:14:32 pkm ship $
Така че в момента имаме версия 115.6 в нашата система и трябва да се свържете в 115.6.debug
Първата стъпка е да архивирате текущата версия:
cd $INV_TOP/lib; cp invir.o invir.o.save
Копирайте във версията за отстраняване на грешки:
cp /u00/to/debug/file/invir.o .
Правете резервно копие на файлове
cp libinv.a libinv.a.save
Сега добавете версията за отстраняване на грешки към libinv.a (Не забравяйте тази стъпка)
ar rv libinv.a invir.o
Сега можете да свържете отново INVLIBR:(можете да използвате и admin)
adrelink.sh force=y "inv INVLIBR"
Проверката на версията сега показва:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $
Нашият код за отстраняване на грешки е свързан и готов за изпълнение. Стартирайте архивирането на мениджърите и ще са налични неща за отстраняване на грешки. След като проблемът бъде възпроизведен, можем да изключим отстраняването на грешки, като следвате процедурата по-долу
Първата стъпка е да архивирате текущата версия и да преместите стария код обратно
cd $INV_TOP/lib; cp invir.o invir.o.debug cp invir.o.save invir.o
Възстановете стария .a файл
cp libinv.a.save libinv.a
Сега можете да свържете отново INVLIBR:(можете да използвате и admin)
adrelink.sh force=y "inv INVLIBR"
Проверката на версията сега показва:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $
Сродни статии
Как да намерите компонентите на EBS R12 Версия
Oracle EBS 11i/R12/R12.1/R12.2
Oracle DBA:Hanganalyze, дъмп на състоянието на системата, v$wait_chains
Как да включите SQL трасирането, събитие 10046 в базата данни на Oracle и trcsess, помощна програма tkprof