में सिंक्रनाइज़ किए गए टेबल को रखने के लिए हम एक नए चमकदार संस्करण के साथ विरासत प्रणाली की तुलना करने के लिए साइड-बाय-साइड परीक्षण चलाने वाले हैं। हमारे पास ओरेकल डेटाबेस तालिका है, ए, जो विरासत प्रणाली के लिए डेटा संग्रहीत करता है, और समकक्ष तालिका, बी, जो नई प्रणाली के लिए डेटा संग्रहीत करता है, इसलिए परीक्षण की अवधि के लिए, डेटाबेस को denormalized है। (इसके अलावा, विरासत प्रणाली और तालिका ए निश्चित हैं - कोई बदलाव की अनुमति नहीं है)ओरेकल
मैं क्या करना चाहता हूं कि बी पर प्रसारित करने के लिए कम से कम डीएमएल संचालन को अनुमति देना है, और इसके विपरीत। मैंने ऐसा करने के लिए ट्रिगर्स की एक जोड़ी शुरू की, लेकिन स्पष्ट समस्या को मारा कि जब ट्रिगर चलते हैं, तो टेबल म्यूट कर रहे हैं, और एक अपवाद फेंक दिया जाता है।
क्या इस मुद्दे को संभालने का कोई मानक तरीका है? मैं पर किया जाए या नहीं dbms_scheduler का उपयोग कर जाने का रास्ता है भिन्न रिपोर्ट पढ़ा है ...
धन्यवाद,
एंडी
अद्यतन: मैं पूरी से बाहर chickening समाप्त कर दिया है जारी किया और सुनिश्चित किया कि ए को अद्यतन करने वाली सभी संग्रहीत प्रक्रियाएं, बी को अपडेट करें, और इसके विपरीत।
मैंने क्वास्नोई के उत्तर को स्वीकृति के रूप में चिह्नित किया है, क्योंकि अगर भविष्य में एक ही समस्या का सामना करना पड़ता है तो मैं उनके सुझावों का पालन करता हूं।
मैंने जोसेफस्टोन के जवाब को चिह्नित किया है, क्योंकि मुझे संक्षेप में टेबल ए और बी पर दो सम्मिलित/अद्यतन कथन स्तर ट्रिगर्स जोड़कर काम करना पड़ता है, फिर ए या बी को मास्टर टेबल के रूप में उपयोग करके उसकी विलय प्रक्रिया कर रही है, जिसके आधार पर ट्रिगर दौड़ गया (हालांकि पहले मैंने जांच की थी कि लक्ष्य तालिका मर्ज द्वारा बदली जाएगी, अगर नहीं तो बाहर निकलती है)।
@ एंडी: यदि आपका विरासत अनुप्रयोग टेबल को अपडेट करने के लिए संग्रहीत प्रक्रियाओं का उपयोग करता है, तो भगवान के लिए केवल अपनी तर्क प्रक्रियाओं में डाल दें, क्योंकि यह बिल्कुल ठीक है। मेरी सलाह केवल खराब विकसित अनुप्रयोगों के लिए अच्छी है जो डेटा अपडेट करने के लिए डीएमएल स्टेटमेंट (प्रक्रियाओं को कॉल करने के बजाए) जारी करती हैं। – Quassnoi