स्कीमा को नए या अलग-अलग टेबलस्पेस में आयात करना


13

क्या ओरेकल 11gR2 में स्कीमा आयात करने का एक सुविधाजनक तरीका एक एकल नए या विभिन्न तालिकाओं का उपयोग करना है जहां डेटा उत्पन्न हुआ है?

उदाहरण के रूप में, मैंने OLDDB से BLOG_DATA को निर्यात किया है, जहां सभी उपयोगकर्ता डेटा USERS तालिकाओं में संग्रहीत किए जाते हैं।

NEWDB पर, मैं BLOG_DATA स्कीमा आयात करना चाहता हूं, लेकिन विशेष रूप से इस उपयोगकर्ता के लिए बनाए गए BLOG_DATA टेबलस्पेस में उपयोगकर्ता ऑब्जेक्ट संग्रहीत करता है।

मैंने BLOG_DATA उपयोगकर्ता बनाया है, BLOG_DATA टेबलस्पेस बनाया है और इसे उस उपयोगकर्ता के लिए डिफ़ॉल्ट टेबलस्पेस के रूप में सेट किया है और एक उपयुक्त असीमित कोटा जोड़ा है।

CREATE TABLESPACE blog_data DATAFILE SIZE 1G;

CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data;

GRANT connect,resource TO blog_data

स्कीमा OLDDB से कुछ के साथ निर्यात किया गया था

exp blog_data/secretpassword@OLDDB file=blog_data.dmp 

नीचे फिल का उत्कृष्ट उत्तर पढ़ने के बाद, मैंने खुद को आश्चर्यचकित पाया :

चूंकि डेटा के पास डिफ़ॉल्ट टेबलस्पेस की तुलना में जाने के लिए कोई अन्य जगह नहीं है - उपयोगकर्ता के पास एकमात्र टेबलस्पेस है जिस पर कोटा है - क्या यह प्रभावी रूप से उस डिफ़ॉल्ट टेबलस्पेस में सभी उपयोगकर्ता वस्तुओं को लगाने के लिए मजबूर करेगा?

imp blog_data/secretpassword@NEWDB file=blog_data.dmp

इसके बाद NEWDB पर blog_data टेबलस्पेस में पूरे ब्लॉग_डेटा स्कीमा को रखा जाएगा? क्या कोई कारण है कि यह काम नहीं करेगा या कि मैं कुछ वस्तुओं आदि के साथ समस्याओं में चला जाऊंगा?

अपडेट करें:

मैंने एक त्वरित परीक्षण किया और यह मामला पाया। Impउस उपयोगकर्ता के लिए डिफ़ॉल्ट टेबलस्पेस में ऑब्जेक्ट रखता है, बशर्ते वह इसे मूल टेबलस्पेस (उदाहरण के लिए टेबलस्पेस मौजूद नहीं है) में नहीं रख सकता है। पूर्ण विवरण: http://www.dolicapax.org/?p=57

फिर भी, मुझे लगता है कि फिल जैसे डेटा पंप का उपयोग करना पसंदीदा विकल्प हो सकता है।


क्या इसे विरासत की expउपयोगिता या expdpडेटा पंप के साथ निर्यात किया गया था ?
फिलो

उदाहरण में इसे पारंपरिक एक्सप उपयोगिता के साथ निर्यात किया गया था, जैसा कि ऊपर दिखाया गया है। मुझे लगता है कि एक के रूप में आसानी से expdp का उपयोग कर सकते हैं और पुराने db सर्वर से फ़ाइल उठा सकता है, जो किसी भी नए टेबलस्पेस के लिए संक्रमण को आसान बना देगा?
रॉय

मैंने अपने उत्तर में दोनों को कवर किया है। डेटा पंप का उपयोग करें - इस कार्य को करना आसान है
14

जवाबों:


15

यह वास्तव में संभव नहीं है कि ओरेकल impउपयोगिता का उपयोग करते समय एक अलग टेबलस्पेस निर्दिष्ट करें । हालाँकि, वर्कअराउंड के रूप में, आप तालिकाओं में एक ROWS=Nआयात करके तालिकाओं को पहले से बना सकते हैं USERS, फिर alter table mytable move tablespace BLOG_DATA;प्रत्येक तालिका के लिए उन्हें नए तालिकाओं में स्थानांतरित करने के लिए, फिर IGNORE=Yतालिका निर्माण त्रुटियों को अनदेखा करने के लिए पैरामीटर के साथ फिर से आयात करें और सभी आयात करें डेटा का।

यदि डेटा पंप ( expdp) के रूप में डेटा निर्यात किया गया था , (एक तरफ के रूप में, हर किसी को इन दिनों का उपयोग करना चाहिए, पुरानी विरासत exp/ impउपयोगिताओं के बजाय ) आप आसानी से REMAP_TABLESPACEपैरामीटर का उपयोग करके दूसरे टेबलस्पेस में आयात कर सकते हैं ।

उदाहरण के लिए:

impdp scott/tiger@ZOMG file=blog_data.dmp directory=mydir remap_tablespace=USERS:BLOG_DATA

बहुत बहुत धन्यवाद, फिल। मैं सोच रहा था: यदि उपयोगकर्ता को विशेष रूप से डिफ़ॉल्ट टेबलस्पेस पर कोटा दिया जा रहा है, तो क्या वह डेटा के स्रोत पर लेआउट की परवाह किए बिना सभी आयातित वस्तुओं को उस डिफ़ॉल्ट टेबलस्पेस में रखने के लिए बाध्य करेगा?
रॉय

मैं कुछ इसी तरह काम कर रहा हूं, लेकिन यह एक्सपैडपी / इंपीडीपी का उपयोग करते हुए एक संपूर्ण डीबी माइग्रेशन है क्योंकि मैं चाहता हूं कि हमारे क्यूए एनवी उत्पादन से मिलान करें। अगर मैं remap_tablespace का उपयोग करता हूं तो यह हर स्कीमा को एक और सिंगल टेबलस्पेस में रीमैप करेगा, हालांकि मुझे लगता है कि मैं स्कीमा के अनुसार एक बार impdp कमांड चला सकता हूं और remap_tablespace का उपयोग कर सकता हूं। इससे नौकरी हासिल करनी चाहिए।
निकोलस डी फोंटने

0

आपको नीचे बताए गए चरणों का पालन करना चाहिए: -

  • उपयोगकर्ता को निर्यात करें
  • कमांड का उपयोग करके आयात करें
    imp system/manager file=export.dmp indexfile=newfile.sql
    यह डेटा आयात करेगा और सभी परिभाषाओं को बचाएगा newfile.sql
  • आवश्यक वस्तुओं को गिराएं।
  • newfile.sqlतालिकाओं को बदलने के बाद स्क्रिप्ट चलाएँ ।
  • आवश्यक वस्तुओं के लिए बैकअप से आयात करें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.