Oracle
 sql >> база данни >  >> RDS >> Oracle

Основен дъмп файл и добавяне на кодове за отстраняване на грешки в изпълнимия файл на приложението за Oracle Apps

Генериране на основния дъмп файл на 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 PL/SQL примера за анонимни блокове

  2. Как мога да задам персонализиран формат за дата и час в Oracle SQL Developer?

  3. Как да намерите името на ограничение в Oracle

  4. Генерирайте PL/SQL процедура онлайн за импортиране на данни в Oracle Table

  5. Поетапно APPL_TOP в Oracle Applications R12