সরাসরি কোন পদ্ধতি নেই; হয় আপনি লগগুলি পার্স করতে হবে (অন্য উত্তরে উল্লিখিত হিসাবে), বা দীর্ঘমেয়াদী প্রক্রিয়াতে কী ঘটছে তা দেখতে বিকল্প পদ্ধতিগুলি ব্যবহার করতে হবে।
ব্যক্তিগতভাবে, আমি এই বৈশিষ্ট্যটি সক্ষম করতে স্বায়ত্তশাসিত লেনদেনগুলি ব্যবহার করার পরামর্শ দিচ্ছি - লেনদেনে নিজেই নয়, লগিং মেকানিজম হিসাবে আপনাকে কী চলছে তা আপনাকে জানাতে। উদাহরণস্বরূপ, আপনার কাছে PROCEDURE LONG_ACTION কল করা যেতে পারে PROCEDURE WRITE_LOG_ENTRY (একটি স্বায়ত্তশাসিত লেনদেন হিসাবে সংজ্ঞায়িত) যা অন্য কোনও টেবিলে VARCHAR2 লিখতে পারে। স্বায়ত্তশাসিত লেনদেনগুলি আপনার বর্তমান লেনদেনের সাথে হস্তক্ষেপ করবে না (একটি যৌক্তিক দৃষ্টিকোণ থেকে; পারফরম্যান্সের সম্ভাব্য প্রভাবগুলি থেকে সাবধান থাকুন) এবং যাতে আপনি দেখতে পারেন আপনার বর্তমান লেনদেনে কোনও কমিট বা রোলব্যাক নির্বিশেষে আপনার লগিং এন্ট্রিগুলির মাধ্যমে কী চলছে। এটি বলেছিল, একটি বিশাল ডিএমএল বিবৃতি দিয়ে আপনি এটি করতে পারবেন; আপনাকে একটি লুপ ব্যবহার করতে হবে
বিবেচনা:
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 টি সারি জন্য একটি লগ এন্ট্রি পাবেন। আপনার যদি ডাটাটি কাজ করছে সে হিসাবে দেখতে হুবহু নকলের প্রয়োজন হয়, তবে আমি একটি নকল টেবিল তৈরি করার এবং এমন একটি পদ্ধতি কল করার পরামর্শ দিচ্ছি যাতে ডেটা নকল হবে (পদ্ধতিটি স্বায়ত্তশাসিত লেনদেন হচ্ছে)। তারপরে তথ্যের পরে তথ্যটি নাক করে দিন। (সদৃশ হওয়ার দরকার নেই))
তদ্ব্যতীত, এটি যদি কোনও ডিবাগিংয়ের উদ্দেশ্যে হয় তবে আমি যখন বিষয়গুলি পরীক্ষা করা হয় তখন এ জাতীয় লগিংয়ের প্রয়োজনীয়তা অপসারণ বা গুরুতরভাবে হ্রাস করার পরামর্শ দিই। এবং, বরাবরের মতো, কীভাবে কীভাবে কাজ করবে তা যাচাই করতে আপনার নিজের সিস্টেমে পরীক্ষা করুন, পরীক্ষা করুন, পরীক্ষা করুন। (লগিং কীভাবে কার্যকরভাবে প্রভাব ফেলতে পারে তার একটি উত্তম উদাহরণের জন্য নিলালের মন্তব্য দেখুন ial)
(অবশেষে, কারণ আমি এর আগে এটি উল্লেখ করা অবহেলা করেছি: স্বায়ত্তশাসিত লেনদেন থেকে সাবধান থাকুন implementing প্রয়োগের পূর্বে সেগুলি পুরোপুরি বুঝুন এবং তাদের "ঠিক কারণ" ব্যবহার করবেন না They এগুলি মিলিয়ন উপায়ে ভুলভাবে ব্যবহার করা যেতে পারে (উদাহরণস্বরূপ, এটিএমটিএমটি থেকে ট্রিগারটিতে কোনও মিউটর ত্রুটি এড়ান), তাই সম্ভব হলে বিকল্পগুলি সন্ধান করা সর্বদা সেরা you যদি আপনি না পারেন তবে সাবধানতার সাথে এগিয়ে যান long দীর্ঘকালীন অপ্সের সময় লগইন করা সর্বদা এমন একটি ক্ষেত্রে রয়েছে যেখানে এটি মোটামুটি নিরাপদ (উপেক্ষা করা) পারফরম্যান্স সমস্যা), তবে ফলাফলগুলি না জেনে এটি অন্য ব্যবহারগুলিতে প্রয়োগ করতে তাড়াহুড়া করবেন না))