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