2012-01-20 21 views
9

मैंने प्रलेखन का उपयोग करके निम्नलिखित क्वेरी लिखी है: Oracle Documentation मेरे उत्पादन सर्वर पर डेटाबेस/तालिका से कुछ डेटा को सैंडबॉक्स सर्वर पर डेटाबेस/तालिका में कॉपी करने के लिए।एक डेटाबेस/तालिका से दूसरे डेटाबेस/तालिका में डेटा की प्रतिलिपि बनाने के लिए कैसे करें

COPY FROM username1/[email protected]<production_IP> to username2/[email protected]<sandbox_IP> INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

हालांकि, मैं लगातार Connection failed त्रुटि में चल रहा हूँ। क्या क्वेरी में कुछ गड़बड़ है?

+0

क्या गंतव्य तालिका पहले से मौजूद है? – tallybear

+0

क्या 'उत्पादन_आईपी 'आईपी पते के लिए खड़ा है? यदि हां, तो यह पर्याप्त नहीं है। आपको टीएनएस नाम स्थापित करने और एसआईडी या सेवा नाम का उपयोग करने या एक आसान कनेक्ट नाम का उपयोग करने की आवश्यकता है (जिसमें एक एसआईडी या सेवा नाम भी शामिल है)। – Codo

+0

@tallybear: हाँ –

उत्तर

16

एक विशिष्ट ओरेकल पर्यावरण में, आपके पास टीएनएस नाम स्थापित हैं। यह एक एसआईडी या सेवा नाम दिए गए ओरेकल उदाहरणों के लिए कनेक्शन पैरामीटर देखने के लिए एक सेवा है। इसके सबसे सरल रूप में, टीएनएस नाम पर्यावरण चर TNS_ADMIN (जो निर्देशिका है वहां निर्देशिका को इंगित करता है) द्वारा स्थित tnsnames.ora नामक एक फ़ाइल है।

SIDs PROD और SANDBOX देखते हुए, आप तो sqlplus कमांड लाइन उपयोगिता से टेबल कॉपी कर सकते हैं:

COPY FROM username1/[email protected] to username2/[email protected] 
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884); 

कृपया ध्यान दें यह कॉपी आदेश केवल ओरेकल डेटाटाइप्स के एक सीमित सेट का समर्थन करता है कि: चार, तिथि, लंबा, वर्कर 2, संख्या।

यदि आपके पास टीएनएस नाम सेट नहीं हैं, तो आपको होस्ट नाम या आईपी पता, पोर्ट नंबर और सेवा का नाम जानना होगा। वाक्य रचना तो हो जाता है:

COPY FROM username1/[email protected]//192.168.3.17:1521/PROD_SERVICE to username2/[email protected]//192.168.4.17:1521/SANDBOX_SERVICE 
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884); 

सिड और/या सेवा नाम का निर्धारण करने के लिए आप सबसे अच्छा डेटाबेस सर्वर पर ही TNSNAMES.ORA फ़ाइल में एक नजर है। आप डेटाबेस के लिए लॉग इन करने में सक्षम हैं, तो आप निम्न प्रश्नों का उपयोग कर सकते हैं सिड और सेवा का नाम निर्धारित करने के लिए (लेकिन मुझे मत पूछो जो जो है):

select name from v$database; 

select * from global_name; 

select instance_number, instance_name, host_name from v$instance; 
संबंधित मुद्दे

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