ডাটাবেস লিঙ্কের উপর কোন প্রশ্নের জন্য একটি সময়সীমা আছে?


11

সম্পাদনা / উপস্থাপনা: ডিবি লিংক কোয়েরিতে সময়সীমা সম্পর্কে আমি বিশেষত আগ্রহী হওয়ায় এই প্রশ্নটি এসও থেকে স্থানান্তরিত হয়েছে। এসও থেকে সরবরাহকৃত কাজটি কিছুটা ঠিক আছে তবে আমি নিজেই প্রশ্নটিতে আগ্রহী।

অনুপ্রেরণা:
আমার কাছে একটি জিজ্ঞাসা ছিল "চিরদিনের জন্য" (2 দিনের বেশি, আমি অধিবেশনটি মেরে ফেলা পর্যন্ত) যা ডেটাবেস লিঙ্কটি ব্যবহার করে। সমস্যাটি দেখে মনে হয়েছিল যে রিমোট ডাটাবেসটি অনুপলব্ধ হয়ে গেছে এবং এখনও কিছু অজানা কারণে কোনও ORA-02068উত্থাপিত হয়নি (এখানে আলোচনা করা হবে না) এবং কোয়েরিটি কেবল অপেক্ষা করেছিল এবং অপেক্ষা করেছিল।

(ক্যোয়ারী একটি dbms_scheduler কাজ দ্বারা জারি করা হয়েছে, যা একটি পিএল / এসকিউএল প্যাকেজে একটি প্রক্রিয়া চালায় a ফলস্বরূপ, কাজটিও আটকে ছিল But তবে এটি এই প্রশ্নের মূল বিষয়টির জন্য বিশেষ আগ্রহী নয়))

আমি আমার পরীক্ষার একটি ডিবি চুপচাপ মোডে রেখে এই পরিস্থিতিটি অনুকরণ করেছি এবং এটি একটি ডাটাবেসের লিঙ্কে অনুসন্ধান করেছি। প্রত্যাশিত হিসাবে, ক্যোয়ারীটি ম্যানুয়ালি বাতিল হওয়া বা দূরবর্তী ডিবি অদৃশ্য না হওয়া পর্যন্ত অপেক্ষা করছিল।

প্রশ্ন:
রিমোট ডাটাবেসের আচরণ এবং আপ-টাইমের উপর আমার কোনও নিয়ন্ত্রণ নেই, তাই ডাটাবেস লিঙ্কটি ব্যবহার করে এমন কোনও প্রশ্নের জন্য একটি সময়সীমা নির্ধারণের জন্য আমি কিছুটা সম্ভাবনার সন্ধান করছি।

আমি ইতিমধ্যে প্রোফাইল ( CPU_PER_CALLইত্যাদি), sqlnet.oraপ্যারামিটারগুলি দেখেছি , স্থানীয় নামকরণের প্যারামিটারগুলি সরাসরি সংযুক্ত স্ট্রিংয়ের (যেমন (connect_timeout=10)ডেটাবেস লিঙ্ক সংজ্ঞাতে যুক্ত করা) যুক্ত করে একটি কমান্ড চালিয়েছি ... for update wait 1, তবে তারা হয় ব্যস্ত বা নিষ্ক্রিয় সেশনের জন্য কাজ করে তবে তা নয় অপেক্ষা অধিবেশন জন্য।

সুতরাং আমি ডাটাবেস লিঙ্কের "স্থানীয়" পাশের কিছু বিকল্পের সন্ধানে যাচ্ছি, যা ধরণের ডেটাবেস লিঙ্কগুলির উপর প্রশ্নের জন্য একটি সময়সীমা নির্ধারণ করে।
কিছু নির্দিষ্ট সমাধানের মতো alter session set xyzবা select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)প্রশংসা করা হবে, কারণ এই নির্দিষ্ট ডিবিগুলিতে আমার কোনও ডিবিএ অধিকার নেই।

আমি বর্তমানে 10gR2 এ আছি তবে কয়েক সপ্তাহের মধ্যে 11gR2 এ আপগ্রেড করছি, সুতরাং এই সংস্করণের যে কোনওটির জন্য ধারণা কার্যকর হবে।


কোয়েরিটি কীভাবে ব্যবহৃত হয়? একটি বৃহত পদ্ধতি / প্যাকেজের অংশ, মাদুর দর্শনের অন্তর্নিহিত এসকিউএল, একটি বাহ্যিক অ্যাপ থেকে চালানো, ...? আমি একটি সাধারণ "ওয়েট এক্সএক্সএক্সএক্সএক্সএক্সএক্স" সিনট্যাক্স সম্পর্কে জানি না, আপনার সমাধানটি কোনও বৃহত্তর প্রোগ্রামের অংশ হতে পারে, এটি আপনার ব্যবহারের উপর নির্ভর করে।

ক্যোয়ারী একটি dbms_scheduler কাজ দ্বারা জারি করা হয়েছে, যা একটি পিএল / এসকিউএল প্যাকেজে কোনও প্রক্রিয়া চালায়। (এর সাথে আপডেট হওয়া প্রশ্ন)
GWu

উত্তর:


4

আপনি dbms_scheduler ব্যবহার করছেন থেকে, আপনি সেট করতে পারেন max_run_duration অ্যাট্রিবিউট কিছু সীমা কাজের, এবং তারপর নির্ধারণকারী ইমেলটি আপনাকে যদি ঘটনা উত্থাপিত করা হয়। পর্দার আড়ালে ওরাকল সারি সারণী ব্যবহার করে (যা কোনও ইভেন্ট উত্থাপিত হলে আপনি এমন কাজ তৈরি করতে সক্ষম করতে পারেন , যদি আপনি আপনার প্রতিক্রিয়ার চারপাশে আরও বেশি অটোমেশন করার জন্য অতিরিক্ত পদক্ষেপ নিতে চান)। তবে মূলত আপনার সেটআপ করা সর্বাধিক_রুন_ডুয়েশনের উপরে চলে এমন যে কোনও কাজ ইভেন্টের ধরণের উত্থাপন করবে: JOB_OVER_MAX_DUR

ইমেল টুকরা 11gr2 এ নির্মিত, ভাল লেখার জন্য এখানে দেখুন ।

আশা করি এইটি কাজ করবে.


দুর্দান্ত ধারণা, ধন্যবাদ! এটি ডিবি লিঙ্কগুলির সময়সীমা সম্পর্কে নির্দিষ্ট প্রশ্নের ঠিক উত্তর নয়, তবে আমার ধারণা এটি যেভাবেই আমার প্রাথমিক সমস্যাটি সমাধান করে, সুতরাং +1 :-)। আমি ম্যাক্স_আরন_ডুয়েশন সম্পর্কে জানতাম না এবং এখান থেকে শুরু করে আমি কীভাবে স্তব্ধ কাজটি বন্ধ করতে এবং ছেড়ে দিতে হবে তা খুঁজে পেয়েছি ( forums.oracle.com/forums/thread.jspa?threadID=521939#2002982 )
জিডব্লিউ

কোনও কারণে আমি max_run_durationইভেন্টটি তুলতে পারব না , তাই আমি এখানে
GWu

0

আমি বলছি না আমার একটি সমাধান আছে তবে আমি কীভাবে ডিবিলিঙ্ক সময়সীমাটি নিয়ন্ত্রণ করতে পারি সে সম্পর্কে আরও আলোচনা চাই। আমি মনে করি যে কোনও ইভেন্টে আগুন লাগিয়ে দেওয়া কোডটি টিএনএস টাইমআউট ইভেন্টের জন্য অপেক্ষা করে, এবং তারপরে মৃত্যুদন্ড কার্যকর করা অনুমেয় could

ALTER SESSION CLOSE DATABASE LINK dblink;

আপনি অবশ্যই এর সাথে আগে রিমোট সার্ভারটি পোল করতে পারেন:

select * from dual@dblink

এটি উপলব্ধ কিনা তা যাচাই করতে, তবে এটি দূরবর্তী অঞ্চলে খুব দীর্ঘ সময় ধরে চলমান কোডের সমস্যাটিকে ঠিক করে না। খারাপ রিমোট কোডটি অপেক্ষার ইভেন্টগুলিকে চালিত করা উচিত, সুতরাং আমি মনে করি সেগুলি আটকে যেতে পারে (এমনকি 12c শ্রেণিতেও)। এটি এখনও আমাদের ডিবলিংক সেশনকে সময়সীমার জন্য জোর করার একটি মার্জিত সমাধান দেয় না।

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