कोई प्रत्यक्ष विधि नहीं है; आपको या तो लॉग्स के माध्यम से पार्स करना होगा (जैसा कि एक अन्य उत्तर में बताया गया है), या एक लंबी चलने वाली प्रक्रिया में क्या हो रहा है, यह देखने के लिए वैकल्पिक तरीकों का उपयोग करें।
व्यक्तिगत रूप से, मैं इस सुविधा को सक्षम करने के लिए स्वायत्त लेनदेन का उपयोग करने का सुझाव देता हूं - लेन-देन पर ही नहीं, बल्कि एक लॉगिंग तंत्र के रूप में आपको यह बताता है कि क्या चल रहा है। उदाहरण के लिए, आपके पास PROCEDURE LONG_ACTION कॉल प्रक्रिया हो सकती है WRITE_LOG_ENTRY (जिसे एक स्वायत्त लेनदेन के रूप में परिभाषित किया गया है) जो VARCHAR2 को किसी अन्य तालिका में लिख देगा। स्वायत्त लेनदेन आपके वर्तमान लेन-देन (एक तार्किक दृष्टिकोण से, प्रदर्शन के संभावित प्रभावों से सावधान) के साथ हस्तक्षेप नहीं करते हैं और इसलिए आप देख सकते हैं कि आपके चालू लेनदेन में COMMIT या ROLLBACK की परवाह किए बिना आपकी लॉगिंग प्रविष्टियों के माध्यम से क्या हो रहा है। उस ने कहा, आप एक बड़े पैमाने पर डीएमएल बयान के साथ ऐसा कर सकते हैं; आपको एक लूप का उपयोग करना होगा।
विचार करें:
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 की टिप्पणी देखें।)
(अंत में, क्योंकि मैंने इससे पहले इसका उल्लेख करने की उपेक्षा की: स्वायत्त लेनदेन से सावधान रहें। लागू करने से पहले उन्हें पूरी तरह से समझें, और "सिर्फ इसलिए" उनका उपयोग न करें। उन्हें गलत तरीके से एक लाख तरीके से इस्तेमाल किया जा सकता है (उदाहरण के लिए, ATTEMPT को। ट्रिगर में एक म्यूट त्रुटि से बचें), इसलिए यदि संभव हो तो विकल्प ढूंढना हमेशा सबसे अच्छा होता है। यदि आप नहीं कर सकते हैं, तो सावधानी के साथ। लंबे समय तक चलने वाले ऑप्स के दौरान लॉगिंग हमेशा एक मामला रहा है जहां यह काफी सुरक्षित है (अनदेखी प्रदर्शन के मुद्दे), लेकिन परिणाम जानने के बिना इसे अन्य उपयोगों में लागू करने में जल्दबाजी न करें।)