2008-09-01 11 views
11

यदि आप ओरेकल डीब्लिंक बनाते हैं तो आप लक्ष्य तालिका में सीधे LOB कॉलम तक नहीं पहुंच सकते हैं। इस के बादओरेकल वितरित डेटाबेस में LOB को संभालने का सबसे अच्छा तरीका

create database link TEST_LINK 
    connect to TARGETUSER IDENTIFIED BY password using 'DATABASESID'; 

आप की तरह सामान कर सकते हैं::

उदाहरण के लिए, आप के साथ एक dblink बनाने

select column_a, column_b 
from [email protected]_LINK 

छोड़कर यदि स्तंभ एक LOB है, तो आप त्रुटि मिलती है:

ORA-22992: cannot use LOB locators selected from remote tables 

यह a documented restriction है।

एक ही पृष्ठ आप एक स्थानीय तालिका में मूल्यों लाने पता चलता है, लेकिन यह है कि ... एक तरह से गंदा है:

CREATE TABLE tmp_hello 
AS SELECT column_a 
from [email protected]_LINK 

कोई अन्य विचार?

उत्तर

4

हाँ, यह गन्दा है, मैं इसे टालने के तरीके के बारे में सोच नहीं सकता।
आप संग्रहीत प्रक्रिया में अस्थायी तालिका निर्माण (और तालिका बनाने के लिए तत्काल निष्पादित "का उपयोग करके क्लाइंट से कुछ गड़बड़ी छिपा सकते हैं)
एक चीज जिसे आप देखना चाहते हैं, अस्थायी तालिकाओं पर छोड़ दिया गया है (किसी सत्र के माध्यम से कुछ आधे रास्ते में विफल होना चाहिए, इससे पहले कि आपके पास इसे साफ़ करने का समय हो) - आप समय-समय पर चलाने के लिए ऑर्केकल नौकरी निर्धारित कर सकते हैं और किसी भी बाएं टेबल को हटा सकते हैं।

0

क्या आपके मन में एक विशिष्ट परिदृश्य है? उदाहरण के लिए, यदि LOB फ़ाइलों को रखता है, और आप एक कंपनी इंट्रानेट पर हैं, तो शायद आप फ़ाइलों को नेटवर्क पर किसी ज्ञात निर्देशिका में निकालने के लिए संग्रहीत प्रक्रिया लिख ​​सकते हैं और वहां से उन्हें एक्सेस कर सकते हैं।

0

इस विशिष्ट मामले में दो सिस्टम संचार कर सकते हैं एकमात्र तरीका dblink का उपयोग कर रहा है।

इसके अलावा, तालिका समाधान इतना भयानक नहीं है, यह सिर्फ डब्लिंक के मेरे पक्ष में डेटा को "कैश" करना है।

1

आप सभी "कैश" प्रबंधन को संभालने के लिए द्विपक्षीय विचारों का उपयोग कर सकते हैं।

SELECT (select column_b from [email protected]_LINK) AS column_b FROM DUAL 
8

नीचे के रूप में एक प्रश्न का उपयोग कर, जहां column_b ब्लॉब है द्वारा सबसे अच्छा समाधान में काम करता है । यदि आप LOB के AT दूरस्थ डेटाबेस (xxx @ yyy में डालें ...) को डालने या अपडेट करना चाहते हैं तो आप आसानी से उसमें गतिशील एसक्यूएल का उपयोग कर सकते हैं। my solution here:

+3

यह एक आकर्षण की तरह काम करता है !!! इंटरनेट पर सबसे अच्छा जवाब! – gabrjan

+0

@ user2015502 क्या आपने इसे हाइबरनेट फॉर्मूला में आजमाया है? यह हमेशा तालिका के रूप में प्रतिक्रिया देता है और मुझे डेवलपर – eduyayo

+0

में काम करने में मेरी क्वेरी मिल गई है लेकिन यह मेरे लिए काम नहीं करता है। मुझे जो मिलता है वह आकार 0 के साथ एक बीएलओबी है। इस विधि को फ़िल्टर करने के लिए आंतरिक चयन की भी आवश्यकता है: 'सिंगल-पंक्ति सबक्वायरी एक से अधिक पंक्तियां लौटाती है'। – detoro84

0

क्वेरी डेटा के लिए, user2015502 का समाधान होशियार है: यह है सही नहीं लेकिन ज्यादातर मामलों :)

संबंधित मुद्दे