টেবিলের ত্রুটির পরিবর্তনের কারণ এবং সমাধানগুলি কী?


12

আমি বুঝতে পারি পরিবর্তনের টেবিলের ত্রুটিগুলি কোনও ডিজাইনের ত্রুটি বা সমস্যাযুক্ত কোয়েরির কারণে ঘটে।

একটি পুরানো ক্যোয়ারী সম্প্রতি উত্পাদনে রাখা হয়েছিল যা পরিবর্তনের টেবিল ত্রুটি ছুঁড়ে দেয়। আমাদের ডিবিএ সমস্যা সমাধান করেছে তবে কীভাবে তা আমরা জানি না।

পরিবর্তনীয় টেবিলের ত্রুটিগুলি ঠিক কী কারণে ঘটে এবং আমাদের ডিবিএ কীভাবে সমস্যাটি স্থির করত?

উত্তর:


17

পরিবর্তনীয় টেবিল ত্রুটির সর্বাধিক কারণ হ'ল ট্রিগারগুলির অপব্যবহার। এখানে একটি সাধারণ উদাহরণ:

  1. আপনি টেবিল এ একটি সারি সন্নিবেশ করান
  2. টেবিল এ-তে একটি ট্রিগার (প্রতিটি সারির জন্য) টেবিল এ-তে একটি কোয়েরি চালায়, উদাহরণস্বরূপ একটি সংক্ষিপ্তসার কলাম গণনা করার জন্য
  3. ওরাকল একটি ORA-04091 নিক্ষেপ করেছে: টেবিল এ পরিবর্তিত হচ্ছে, ট্রিগার / ফাংশন এটি দেখতে পাবে না

এটি একটি প্রত্যাশিত এবং স্বাভাবিক আচরণ, ওরাকল যেহেতু ওরাকল গ্যারান্টি দেয় সেহেতু আপনাকে নিজেকে থেকে রক্ষা করতে চায়:

  • (i) প্রতিটি বিবৃতি পারমাণবিক (অর্থাত ব্যর্থ বা সম্পূর্ণ সফল হবে)
  • (ii) প্রতিটি বিবৃতি ডেটার একটি সামঞ্জস্যিক দৃষ্টিভঙ্গি দেখায়

সম্ভবত আপনি যখন এই জাতীয় ট্রিগার লিখেন তখন আপনি কোয়েরি (2) থেকে (1) সন্নিবেশ করা সারিটি দেখতে আশা করবেন। এটি উপরের দুটি পয়েন্টের সাথে বৈপরীত্য হতে পারে যেহেতু আপডেটটি এখনও শেষ হয়নি (আরও সারি সন্নিবেশ করার জন্য থাকতে পারে)।

ওরাকল বিবৃতি শুরুর ঠিক আগে সময়ে একটি পয়েন্টের সাথে ধারাবাহিকভাবে ফলাফলটি ফিরিয়ে দিতে পারত তবে বেশিরভাগ উদাহরণ থেকে আমি দেখেছি যে এই যুক্তিটি বাস্তবায়নের চেষ্টা করা হয়েছে, লোকেরা একের পর এক পদক্ষেপের একটি সিরিজ হিসাবে বহু-সারির বিবৃতি দেখে এবং প্রত্যাশা করে পূর্ববর্তী পদক্ষেপগুলির দ্বারা পরিবর্তনগুলি দেখতে বিবৃতি [2]। ওরাকল প্রত্যাশিত ফলাফলটি ফিরিয়ে দিতে পারে না এবং তাই ত্রুটিটি ছুঁড়ে দেয়।

আরও পড়ার জন্য: আসক টমের "পরিবর্তনকারী টেবিল"

যদি আমি সন্দেহ করি যে পরিবর্তিত টেবিল ত্রুটির কারণটি একটি ট্রিগার, ত্রুটি এড়ানোর এক উপায় হ'ল যুক্তিটিকে ট্রিগার থেকে প্রক্রিয়াতে সরিয়ে নেওয়া।


9

একটি বিবর্তনের টেবিলটি ঘটে যখন কোনও বিবৃতিটি আগুনের জন্য ট্রিগার সৃষ্টি করে এবং সেই ট্রিগারটি সেই সারণীর উল্লেখ করে যা ট্রিগারটির কারণ হয়ে দাঁড়ায়। এই জাতীয় সমস্যা এড়ানোর সর্বোত্তম উপায় হ'ল ট্রিগার ব্যবহার না করা, তবে আমার সন্দেহ হয় ডিবিএ তা করতে সময় নেয়নি। তিনি নিম্নলিখিতগুলির একটি করতে পারতেন:


1
কমপক্ষে আমার জন্য, ট্রাইটারের পরে পরিবর্তন হওয়া 11.2.0.4.0 এ ব্যর্থ হয়
সফটওয়্যার নবী

আমার জন্যও; সংস্করণ 12.1.0.2.0, এবং আফটার কাজ করে না।
ইডলন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.