ฉันกำลังพยายามเพิ่มคอลัมน์ที่ไม่มีค่าลงในตารางที่ใช้บ่อยในฐานข้อมูล Oracle 10 OLTP ในขณะที่แอปพลิเคชันกำลังทำงานและไม่ว่าง การเพิ่มคอลัมน์ที่เป็นค่าว่างเป็นเพียงการเปลี่ยนแปลงพจนานุกรมข้อมูล ดังนั้นการล็อกตารางใดๆ จะถูกระงับไว้ในช่วงเวลาสั้นๆ เท่านั้น (ซึ่งระบบสามารถจัดการได้)
ปัญหาคือ ALTER TABLE
ของฉันมักจะล้มเหลวด้วยสิ่งนี้:
ORA-00054: resource busy and acquire with NOWAIT specified
แนวทางปัจจุบันของฉันคือการปัดการเปลี่ยนแปลงโดยเรียกใช้จนกว่าจะไม่มีการล็อคบนโต๊ะ ซึ่งหมายความว่าฉันไม่สามารถเรียกใช้สคริปต์ดังกล่าวใน SQL*Plus ได้ทั้งหมด แต่จำเป็นต้องคัดลอกและวางแต่ละคำสั่งและตรวจสอบให้แน่ใจว่าใช้งานได้
มีวิธีที่ดีกว่า?