ไม่มีวิธีโดยตรง คุณจะต้องแยกวิเคราะห์ผ่านบันทึก (ตามที่กล่าวไว้ในคำตอบอื่น) หรือใช้วิธีอื่นเพื่อดูว่าเกิดอะไรขึ้นในกระบวนการทำงานที่ยาวนาน
ส่วนตัวผมขอแนะนำให้ใช้ธุรกรรมอัตโนมัติเพื่อเปิดใช้งานคุณสมบัตินี้ - ไม่ใช่ในการทำธุรกรรม แต่เป็นกลไกการบันทึกที่แจ้งให้คุณทราบว่าเกิดอะไรขึ้น ตัวอย่างเช่นคุณอาจมี PROCEDURE LONG_ACTION โทร PROCEDURE WRITE_LOG_ENTRY (กำหนดเป็นธุรกรรมอัตโนมัติ) ที่จะเขียน VARCHAR2 ไปยังตารางอื่น ธุรกรรมอิสระไม่รบกวนธุรกรรมปัจจุบันของคุณ (จากมุมมองเชิงตรรกะระวังผลกระทบที่อาจเกิดขึ้นกับประสิทธิภาพการทำงาน) และเพื่อให้คุณสามารถเห็นสิ่งที่เกิดขึ้นผ่านรายการบันทึกของคุณโดยไม่คำนึงถึง COMMIT หรือ ROLLBACK ในธุรกรรมปัจจุบันของคุณ ที่กล่าวว่าคุณสามารถทำได้ด้วยคำสั่ง DML ขนาดใหญ่; คุณต้องใช้การวนซ้ำ
พิจารณา:
TABLE LOG_ENTRIES defined as
activity_date date,
log_entry varchar2(2000)
TABLE BIG_JOB (definition doesn't really matter)
PROCEDURE WRITE_LOG_ENTRY
( str VARCHAR2 )
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO LOG_ENTRIES VALUES ( SYSDATE, str );
COMMIT;
END;
PROCEDURE LONG_ACTION IS
c NUMBER;
BEGIN
FOR r IN ( SELECT * FROM BIG_JOB )
LOOP
c := c + 1;
UPDATE BIG_JOB z
SET fld = hairy_calculation
WHERE z.rowid = r.rowid;
IF MOD(c,500) = 0 THEN
WRITE_LOG_ENTRY ( c || ' rows processed.' );
END IF;
END LOOP;
COMMIT;
END;
คุณจะได้รับรายการบันทึกสำหรับการประมวลผล 500 แถวโดยไม่คำนึงถึงความสำเร็จของการกระทำที่ยาวนาน หากคุณต้องการข้อมูลที่ซ้ำกันเพื่อดูว่ามันทำงานอย่างไรฉันขอแนะนำให้สร้างตารางที่ซ้ำกันและเรียกขั้นตอนที่จะทำซ้ำข้อมูล (ขั้นตอนเป็นธุรกรรมที่เป็นอิสระ) จากนั้นทำการดักฟังข้อมูลตามความเป็นจริง (ไม่จำเป็นต้องทำซ้ำ)
นอกจากนี้หากมีวัตถุประสงค์เพื่อการดีบักฉันขอแนะนำให้ลบหรือลดความจำเป็นในการบันทึกอย่างมากเมื่อสิ่งต่างๆได้รับการทดสอบ และเช่นเคยทดสอบทดสอบทดสอบบนระบบของคุณเองเพื่อตรวจสอบว่าสิ่งต่าง ๆ จะทำงานได้อย่างไร (ดูความคิดเห็นจาก Niall สำหรับตัวอย่างที่ดีว่าการบันทึกอาจส่งผลกระทบต่อประสิทธิภาพได้อย่างมาก)
(สุดท้ายเพราะฉันละเลยที่จะพูดถึงมันก่อน: ระวังการทำธุรกรรมของตนเองให้เข้าใจอย่างเต็มที่ก่อนที่จะนำไปใช้และอย่าใช้มัน "เพียงเพราะ" พวกเขาสามารถใช้งานได้หลายล้านวิธีอย่างไม่ถูกต้อง (เช่นยกตัวอย่างเช่น หลีกเลี่ยงข้อผิดพลาดการกลายพันธุ์ในทริกเกอร์) ดังนั้นจึงเป็นการดีที่สุดที่จะหาทางเลือกอื่นถ้าเป็นไปได้ถ้าคุณทำไม่ได้ให้ดำเนินการด้วยความระมัดระวังการเข้าสู่ระบบระหว่าง ops ที่ใช้เวลานานนั้นเป็นหนึ่งในกรณี ปัญหาด้านประสิทธิภาพ) แต่อย่ารีบนำไปใช้กับการใช้งานอื่นโดยไม่ทราบผลที่จะตามมา)