Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tệp kết xuất cốt lõi và thêm mã gỡ lỗi trong ứng dụng thực thi cho Ứng dụng Oracle

Tạo tệp kết xuất cốt lõi của Trình quản lý đồng thời Oracle

Trình quản lý đồng thời của Oracle bao gồm nhiều tệp thực thi và chúng tôi thường gặp phải các vấn đề khác nhau với nó. Khi tệp thực thi kết thúc với lỗi phân đoạn hoặc tín hiệu 11, một tệp lõi cho trình quản lý đồng thời oracle sẽ được tạo.

Nếu bạn không thấy rằng một tệp lõi đã được tạo, thì ulimit có thể được đặt thành 0 cho các tệp lõi trên hệ thống của bạn.
Kiểm tra điều này như sau:
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

Kiểm tra kết quả đầu ra cho “kích thước tệp lõi (khối)” Nếu giá trị này được đặt thành 0 hoặc giá trị thấp, nó có thể được đặt lại để cho phép tạo tệp lõi ở bất kỳ kích thước nào trong phiên hiện tại bằng cú pháp:

ulimit -c unlimited

Nếu người dùng Unix có bộ này trong môi trường trước khi khởi động trình quản lý đồng thời và trình xử lý ứng dụng,
thì môi trường xử lý đồng thời sẽ có thể tạo tệp lõi.

Tệp thực thi đang kết thúc bằng lỗi phân đoạn hoặc tín hiệu 11 phải được liên kết lại với các ký hiệu gỡ lỗi theo thứ tự
để có được tệp lõi hữu ích. Điều này được thực hiện bằng cách chuyển tham số link_debug =y tới adrelink.sh.
Ví dụ:

adrelink.sh force=y link_debug=y "fnd FNDLIBR"

Khi tệp thực thi được liên kết lại với các ký hiệu gỡ lỗi và bạn có tệp lõi, hãy đảm bảo rằng bạn có đúng
tệp lõi cho tệp thực thi bị lỗi bằng cú pháp:

file core
core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'

Bây giờ, hãy sử dụng trình gỡ lỗi để lấy dấu vết ngăn xếp.
Đối với Linux, trình gỡ lỗi là gdb:

gdb $FND_TOP/bin/FNDLIBR core

Đối với Solaris, trình gỡ lỗi là dbx:

dbx $FND_TOP/bin/FNDLIBR core

Thêm mã gỡ lỗi vào Ứng dụng có thể thực thi được do Bộ phận hỗ trợ của Oracle cung cấp

Người ta thường thấy rằng kết xuất lõi được tạo ở trên không đủ để khắc phục sự cố. Vì vậy, Bộ phận hỗ trợ của Oracle có thể cung cấp mã gỡ lỗi để tìm hiểu sâu hơn về vấn đề

Dưới đây là các bước Chung về Cách thêm mã gỡ lỗi trong tệp thực thi ứng dụng.

Trên thực tế, đây là các bước thậm chí được theo sau bởi adpatch để thay thế các tệp lib trong tệp thực thi sản phẩm

Giả sử bạn cần liên kết tệp đối tượng “invir.o” với tệp thực thi INVLIBR.

Trước khi làm bất cứ điều gì, hãy đảm bảo rằng những người quản lý đồng thời đã tắt.

Trước tiên, hãy kiểm tra các phiên bản:

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 $

Vì vậy, chúng tôi hiện có phiên bản 115.6 trên hệ thống của mình và cần liên kết trong 115.6.debug
Bước đầu tiên là sao lưu phiên bản hiện tại:

cd $INV_TOP/lib; cp invir.o invir.o.save

Sao chép trong phiên bản gỡ lỗi:

cp /u00/to/debug/file/invir.o .

Sao lưu các tệp

cp libinv.a libinv.a.save

Bây giờ hãy thêm phiên bản gỡ lỗi vào libinv.a (Đừng quên bước này)

ar rv libinv.a invir.o

Bây giờ bạn có thể liên kết lại INVLIBR:(bạn cũng có thể sử dụng adadmin)

adrelink.sh force=y "inv INVLIBR"

Kiểm tra phiên bản bây giờ cho thấy:

adident Header $INV_TOP/bin/INVLIBR |grep invir.o
$Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $

Mã gỡ lỗi của chúng tôi đã được liên kết và sẵn sàng chạy. Bắt đầu sao lưu trình quản lý và công cụ gỡ lỗi sẽ có sẵn. Sau khi sự cố được tái tạo, chúng tôi có thể tắt gỡ lỗi bằng cách làm theo quy trình dưới đây

Bước đầu tiên là sao lưu phiên bản hiện tại và di chuyển mã cũ trở lại

cd $INV_TOP/lib; 
cp invir.o invir.o.debug
cp invir.o.save invir.o

Khôi phục tệp .a cũ

cp libinv.a.save libinv.a

Bây giờ bạn có thể liên kết lại INVLIBR:(bạn cũng có thể sử dụng adadmin)

adrelink.sh force=y "inv INVLIBR"

Kiểm tra phiên bản bây giờ cho thấy:

adident Header $INV_TOP/bin/INVLIBR |grep invir.o
$Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $

Các bài viết có liên quan

Cách tìm Phiên bản thành phần EBS R12

Oracle EBS 11i / R12 / R12.1 / R12.2

Oracle DBA:Hanganalyze, kết xuất trạng thái hệ thống, v $ wait_chains

Cách bật theo dõi SQL, sự kiện 10046 trong cơ sở dữ liệu Oracle và tiện ích 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. thay đổi bảng sửa đổi cột trong cơ sở dữ liệu oracle

  2. Truy vấn SQL để nối các giá trị cột từ nhiều hàng trong Oracle

  3. Làm cách nào để khắc phục nguyên nhân gây ra ngoại lệ Hibernate IllegalArgumentException xảy ra khi gọi setter?

  4. Không thể truy xuất id của hàng được chèn cuối cùng trong Hibernate bằng Oracle

  5. Đếm số hàng đã nối trong phép nối bên trái