Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Khắc Phục Lỗi Phổ Biến Oracle AD Online Patching: Hướng Dẫn Bước Đi

Xuất bản lần đầu bởi Tricore: Aug 14, 2017

Blog này mô tả các vấn đề phổ biến sau và giải pháp cho tiện ích Oracle AD Online Patching (adop):

  • Lỗi hỏng Data Dictionary (Data dictionary corruption error)
  • Thất bại adop prepare (adop prepare failure)
  • Thất bại tạo đối tượng Forms (Forms object generation failure)
  • Treo adop cutover (adop cutover hang-up)
  • Hủy bỏ Patch (Patch abort)

Lỗi hỏng Data Dictionary

Lỗi hỏng data dictionary có thể xảy ra khi bước adop prepare thất bại.

Lỗi (Error)

Lỗi sau có thể khác nhau tùy môi trường.

[EVENT] Verifying data dictionary.
[UNEXPECTED]Data dictionary corrupted:
[UNEXPECTED]Data dictionary corruption - missing parent 5608975 ORA$BASE IMAT V_WORKFLOWWORKITEMII VIEW 5608973 ORA$BASE IMAT V_WFSTAGETIME VIEW 5608973 ORA$BASE IMAT V_WFSTAGETIME VIEW
[UNEXPECTED]Data dictionary corruption detected. Provide details to
[UNEXPECTED]Oracle Support and ask for a bug to be opened against the
[UNEXPECTED]Online Patching component of Oracle Application Install.
/apps1/SID/fs_ne/EBSapps/log/adop/18/adop_xxxxx_xxxxx.log:

Nguyên nhân (Cause)

Vấn đề data dictionary này xảy ra khi developer promote (thúc đẩy) customizations không đúng cách, vi phạm các tiêu chuẩn online patching.

Giải pháp (Solution)

Để sửa chữa hỏng data dictionary (missing-parent), thực hiện các bước sau:

  1. Chạy script $AD_TOP/sql/ADZDDBCC.sql với user apps để xác nhận hỏng logic data dictionary có tồn tại không. Kiểm tra hỏng trong spool log.
  2. Chạy script $AD_TOP/patch/115/sql/adzddmpfix.sql với user sys để sửa hỏng. Trong mẫu sau, 12 đối tượng hỏng được sửa.
    SQL> @adzddmpfix.sql
    "---- Fixing Data Dictionary Corruptions (missing parent) ----"
    12 rows deleted.
    Commit complete.
    System altered.
    "---- Compiling invalids ----"
    PL/SQL procedure successfully completed.
    Commit complete.
  3. Chạy lại script $AD_TOP/sql/ADZDDBCC.sql với user apps để xác định hỏng logic data dictionary còn tồn tại không.
    • Nếu không tìm thấy hỏng, tiến hành upgrade hoặc chu kỳ adop patching.
    • Nếu hỏng vẫn còn, liên hệ Oracle Support và log bug.
  4. Sau khi vấn đề giải quyết, thử lại bước adop prepare.

Thất bại adop prepare

Đôi khi, bước adop prepare thất bại. Phần này cho thấy một lỗi prepare có thể và giải pháp.

Lỗi (Error)

Lỗi adop prepare sau là một Oracle bug:

Lines #(47-50): runMSSrvPortsVal : oacore_server1:7252
ERROR: Run fs Context variable s_oacore_server_ports value cannot be NULL for oacore_server2
ERROR: Derived Patch managed server oacore_server2 port : NULL
ERROR: Failed to clone Run Context file to refresh Patch context file

Giải pháp (Solution)

Để giải quyết lỗi này, thực hiện các bước sau:

  1. Thay đổi target server và SID mẫu trong mẫu mã sau thành port và đường dẫn được báo cáo trong lỗi, và thực thi mã để sửa vấn đề này.
    perl $AD_TOP/patch/115/bin/adProvisionEBS.pl \
     ebs-delete-managedserver \
     -contextfile=/apps1/SID/fs1/inst/apps/SID_server/appl/admin/SID_server.xml -managedsrvname=oacore_server2 \
     -servicetype=oacore -logfile=$APPLRGF/TXK/delMS_oacore_server2.log
    perl $FND_TOP/patch/115/bin/txkSetAppsConf.pl -contextfile=/apps1/SID/fs1/inst/apps/SID_server/appl/admin/SID_server.xml \
     -configoption=removeMS -oacore=server.cm.charter.com:7252
  2. Thử lại adop prepare sau khi fix được áp dụng.

Thất bại tạo đối tượng Forms (Forms object generation failure)

Đôi khi, khi áp dụng patch với adop phase=apply patches=123456, các đối tượng Forms có thể không tạo thành công, khiến adop session thoát ra mà không hiển thị prompt Patch continue prompt Y/N.

Lỗi (Error)

Ví dụ, các Oracle Forms objects sau không tạo thành công:

inv forms/US INVMWBIV.fmx

Giải pháp (Solution)

Khởi động lại session patch thất bại từ thư mục patch với các lệnh sau:

cd /apps1/SID/fs_ne/EBSapps/patch
adop phase=apply patches=20609071 restart=yes flags=autoskip

Treo adop cutover (adop cutover hang)

Nếu adop cutover treo hoặc server bị crash/reboot giữa giai đoạn adop cutover, thực hiện các bước sau để sửa vấn đề và tiếp tục quy trình patch.

Giải pháp (Solution)

  1. Đảm bảo không có service hoặc process nào chạy từ PATCH file system.
  2. Đảm bảo Weblogic Admin Server và Node Manager đang chạy trên run file system. Thực thi lệnh sau để kiểm tra trạng thái:
    $ adadminsrvctl.sh status
    $ adnodemgrctl.sh status
  3. Thực thi các lệnh sau:
    $ adop phase=abort
    $ adop phase=cleanup cleanup_mode=full
    $ adop phase=fs_clone force=yes
  4. Chạy một chu kỳ adop rỗng để chắc chắn không có vấn đề trong adop cutover:
    $ adop phase=prepare, finalize, cutover, cleanup cleanup_mode=full
  5. Bắt đầu adop prepare mới và apply patches.
  6. Sau bước apply, hoàn tất các giai đoạn adop còn lại bao gồm finalize, cutover, và cleanup.

Hủy bỏ Patch (Patch abort)

Nếu chu kỳ patching thất bại và bạn không thể giải quyết vấn đề nhanh chóng, bạn có thể hủy chu kỳ patching và quay lại vận hành runtime bình thường, drop patch edition.

Bạn có thể abandon (từ chối) một chu kỳ patching (mà không áp dụng bất kỳ patch nào) bằng lệnh:

$ adop phase=abort

Quan trọng: Bạn chỉ có thể dùng lệnh này trước khi hoàn thành thành công giai đoạn cutover. Sau cutover, hệ thống chạy trên edition mới, và lệnh abort không còn khả thi cho chu kỳ patching đó.

Việc hủy bỏ chu kỳ patching drop patch edition, nhưng sau đó bạn phải chạy giai đoạn cleanup và fs_clone trước khi bắt đầu chu kỳ patching mới. Cleanup phải là full cleanup. Ví dụ sau minh họa chuỗi sự kiện này:

$ adop phase=prepare
$ adop phase=apply patches=123456
[Patch application encounters problems and you want to abort]
$ adop phase=abort
$ adop phase=cleanup cleanup_mode=full
$ adop phase=fs_clone

Tùy chọn, bạn có thể kết hợp abort và cleanup như lệnh sau:

$ adop phase=abort,cleanup cleanup_mode=full

Lưu ý: Bạn không thể abort việc áp dụng patch trong chế độ hotpatch (adop phase=apply apply_mode=hot patch).

Kết luận

Bộ sưu tập các vấn đề và giải pháp đã biết cho tiện ích adop này có thể giúp các database administrator khi họ gặp các vấn đề này hoặc tương tự.

Sử dụng tab Feedback để đưa ra nhận xét hoặc đặt câu hỏi.