2012-11-10 14 views
5

में एक डेटाबेस से दूसरे डेटा में डेटा कॉपी करें मेरे पास 2 ओरेकल डेटाबेस हैं और मैं प्रोड डीबी के लिए सम्मिलित स्क्रिप्ट उत्पन्न करके और बाद में परीक्षण डीबी पर चलकर, TOAD का उपयोग करके डीबी का परीक्षण करने के लिए प्रोड डीबी से डेटा कॉपी करता हूं।ओरेकल

मैं बैच फ़ाइल के माध्यम से इसे तेज़ी से करने की कोशिश कर रहा हूं।

मुझे लगता है कि मैं this समाधान का उपयोग कर सकता हूं लेकिन डीबी में auto-increment कॉलम है। अगर मैं इस समाधान का उपयोग करता हूं, तो क्या वह कॉलम प्रभावित होगा? क्या मुझे स्क्रिप्ट को किसी तरह से बदलने की ज़रूरत है? मैंने अभी तक यह कोशिश नहीं की है क्योंकि मेरे पास डीबी तक कोई पहुंच नहीं है और केवल सोमवार को इसका परीक्षण करने में सक्षम होगा।

क्या यह एक बेहतर तरीका है जिसे मैं पूरा कर सकता हूं? जो मैं अनिवार्य रूप से ढूंढ रहा हूं वह बैच फ़ाइल का उपयोग कर पूरी प्रतिलिपि प्रक्रिया कर रहा है, जो कि मैं TOAD का उपयोग करके ऐसा करने में व्यतीत करने के समय को कम कर दूंगा।

इसके अलावा, अगर समाधान सही नहीं है, तो मुझे सही दिशा में निर्देशित किया जा सकता है, तो यह ठीक है।

+0

हालांकि यह बहुत उपयोगी हो सकता है, [COPY] (http://docs.oracle.com/cd/E11882_01/server.112/e16604/apb.htm#CHDEAEDE) आदेश अंततः अप्रचलित हो जाएगा, और इसमें कुछ अजीब व्यवहार। ऐसा करने का सबसे आसान और सबसे तेज़ तरीका एक [डेटाबेस लिंक] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_5005.htm#i2061505) का उपयोग करना होगा। –

+1

निर्यात-आयात पर भी विचार किया जा सकता है। – user75ponic

उत्तर

5

सुनिश्चित करें कि दो तालिकाओं में एक ही संरचना है।

लक्ष्य डेटाबेस से कनेक्ट करें।

स्रोत डेटाबेस के लिए एक सार्वजनिक लिंक बनाएँ। उपयोगकर्ता को ऐसा करने के लिए "सार्वजनिक डाटाबेस लिंक बनाएं" सिस्टम विशेषाधिकार होना चाहिए।

CREATE PUBLIC DATABASE LINK mylink 
    CONNECT TO source_user IDENTIFIED BY source_password 
    USING 'source_entry_in_tnsnames'; 

कॉपी डेटा:

INSERT INTO mytable SELECT * FROM [email protected]; 

तालिका के प्राथमिक कुंजी एक दृश्य से आता है, अनुक्रम के लिए सेट - कम से कम - स्रोत डेटाबेस में के रूप में ही मूल्य:

ALTER SEQUENCE mysequence increment by 100000; 
SELECT mysequence.nextval FROM DUAL; 
ALTER SEQUENCE mysequence increment by 1; 
+0

'source_entry_in_tnsnames' के आस-पास के एकल उद्धरण महत्वपूर्ण हैं; उनके बिना, आप कुछ समय बिता सकते हैं कि क्यों ओरेकल आप पर त्रुटियों को फेंकता है। [प्रलेखन] देखें (https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_5005.htm)। –