บทนำ
AD Online Patching (adop) Utility ใช้ Apply Patches ให้ Oracle E-Business Suite โดยไม่ต้อง Downtime มาก Patch Cycle ประกอบด้วยหลาย Phases ตาม Diagram
Phases พื้นฐานและ Patch Cycle Steps
ก่อน Apply Patch ใน R12.2: Download Technology Patches, Unzip แล้ว Prepare Patch โดย:
- Unzip ไปที่
$NE_BASE/EBSapps/patch(adop ตั้ง Environment เอง ไม่ต้อง Source) - หรือ Source Patch File System Environment:
Source/EBSapps.env run
Syntax: adop phase=
1. Prepare Phase
เตรียมเริ่ม Patch Cycle ใหม่:
$ adop phase=prepare
2. Apply Phase
Apply Patches ไปยัง Patch Edition:
$ source /EBSapps.env patch
$ adop phase=apply patches=123456,789101 workers=8
หมายเหตุ: สามารถ Deploy Customization Changes ใน Phase นี้ได้
3. Finalize Phase
Final Patching Operations (รันได้ขณะ Application Online):
$ adop phase=finalize
4. Cutover Phase
เปลี่ยนไปใช้ Patched Environment:
$ adop phase=cutover
5. Cleanup Phase
ลบ Objects เก่าที่ไม่ต้องการ:
$ adop phase=cleanup
Run All Phases ในคำสั่งเดียว
adop phase=prepare,apply,finalize,cutover,cleanup patches=,
Optional Parameters: actualize_all, cleanup_full, abandon
Clean-up Modes
- cleanup_mode=quick: Minimum Cleanup (Cross Edition Triggers, Seed Data) ใช้เมื่อต้องเริ่ม Cycle ถัดไปเร็ว
- cleanup_mode=standard: Quick + Drop Obsolete Editioned Code Objects
- cleanup_mode=full: Maximum Cleanup (Drop All Obsolete Code/Data จาก Editions ก่อนหน้า)
Optional Phases
Abort Phase
ใช้ได้ก่อน Cutover Phase เท่านั้น หาก Prepare หรือ Apply ล้มเหลว:
$ adop phase=abort
หลัง Abort ต้อง Full Cleanup:
adop phase=cleanup cleanup_mode=full
# หรือรวม: $ adop phase=abort,cleanup cleanup_mode=full
หลัง Abort ต้องรัน fs_clone สร้าง Patch File System ใหม่:
$ adop phase=fs_clone
fs_clone Phase
Sync Patch File System กับ Run File System รันจาก Run File System:
$ source /EBSapps.env RUN
$ adop phase=fs_clone
ถ้าล้มเหลว: force=yes (Restart จากต้น) หรือ force=no (Restart จากจุดล้มเหลว)
Actualize All Phase
เมื่อ Old Database Editions > 25 Performance ลดลง ควร Drop Old Editions:
$ adop phase=prepare
$ adop phase=actualize_all
$ adop phase=finalize finalize_mode=full
$ adop phase=cutover
$ adop phase=cleanup cleanup_mode=full
ใช้เมื่อไม่มีความเร่งด่วนเริ่ม Cycle ใหม่ ต้องมี DB Patches และ AD-TXK Code Level ล่าสุด
ADOP Command Tips
adop และ Concurrent Manager
Cutover เริ่มด้วยการ Request Concurrent Manager Shutdown รอ In-progress Requests เสร็จ ถ้าไม่ Shutdown ภายใน Time Limit จะ Kill Remaining Requests
# รอ 10 นาที (Default รอตลอดกาล)
adop phase=cutover cm_wait=10
# หยุดและไม่ Enable App Tier Restart Services
adop phase=cutover cm_wait=10 mtrestart=no
adop Hotpatch
Apply Patch ไป Run Edition ขณะ Services ยังรัน ไม่สามารถ Abort ได้
$ adop phase=apply patches= hotpatch=yes
หลัง Hotpatch ต้องรัน phase=cleanup และ phase=fs_clone
Reapply Patch: options=forceapply
Error "Continue As If It Were Successful":
$ adop phase=apply patches= abandon=no restart=yes flags=autoskip
Other Useful Commands
- Define Workers:
adop phase=apply patches=- workers=5
- Define Patchtop:
adop phase=apply patches=- patchtop=
- Merge Patches:
adop phase=apply patches=- merge=yes
- Restart จาก Failed Session:
adop phase=abort → cleanup cleanup_mode=full → fs_clone → reapply - Language Patch:
adop phase=apply patches=1234456_JA:u123456.drv - Non-interactive:
adop phase=apply options=nocopyportion patchtop=$XLA_TOP/patch/115 patches=driver:xla123456.drv - Skip Failed Workers:
adctrlOption #8 →restart=yes - Many Failed Jobs:
adop restart=no abandon=yes flags=autoskip
สรุป
adop Utility ทำงานได้เพราะ Multiple Application Editions เก็บใน Database และ Dual File Systems (Run/Patch) Run File System เหมือน Single File System ใน Pre-12.2 adop จำเป็นสำหรับ Software Patches แต่ Config Changes ทำได้ทั้ง Run/Patch File System (Auto Sync)