salary - oracle software




एक अलग टेबलस्पेस में ऑरैकल डंप कैसे आयात करें (6)

--- नया टेबलस्पेस बनाएं:

टैबलेटस्पेस टैबलेटस्पेसनाम डेटाफ़ाइल बनाएं 'डी: \ ORACL \ ORADATA \ XE \ TABLESPACEFILENAME.DBF' आकार 350 एम ऑटोटेक्स्टेंड अगले 2500 एम MAXSIZE असीमित लॉगिंग स्थायी विस्तार प्रबंधन स्थानीय ऑटोलाइक्लेट ब्लॉक 8K सेगमेंट स्पेस मैनेजमेंट मैनुअल फ्लैशबैक चालू करें;

--- और फिर नीचे कमांड के साथ आयात करें

VALUES 'bvuser' डिफॉल्ट टैबलेट स्पेस TABLESPACENAME द्वारा पहचाने गए उपयोगकर्ता बर्नर को बनाएं

- जहां डी: \ ORACL ऑरैकल स्थापना का मार्ग है

मैं एक अलग टेबलस्पेस में एक ऑरैकल डंप आयात करना चाहता हूं।

मेरे पास उपयोगकर्ता ए द्वारा उपयोग किया जाने वाला एक टेबल स्पेस है। मैंने इस उपयोगकर्ता पर डीबीए निरस्त कर दिया है और उसे अनुदान कनेक्ट और संसाधन दिया है। तब मैंने आदेश के साथ सब कुछ छोड़ दिया है

एक्स / *** मालिक = एक फ़ाइल = oracledump.dmp लॉग = log.log संपीड़न = वाई

अब मैं उपयोगकर्ता बी द्वारा उपयोग किए गए टेबलस्पेस बी में डंप आयात करना चाहता हूं इसलिए मैंने उसे कनेक्ट और संसाधन (कोई डीबीए) पर अनुदान दिया है। फिर मैंने निम्नलिखित आयात निष्पादित किया है:

आईपी ​​बी / *** फ़ाइल = oracledump.dmp लॉग = import.log fromuser = एक touser = बी

नतीजा बहुत सारी त्रुटियों के साथ एक लॉग है:

आईएमपी -00017: निम्नलिखित कथन ओआरएसीएलई त्रुटि 20001 के साथ असफल रहा: "BEGIN DBMS_STATS.SET_TABLE_STATS IMP-00003: ORACLE त्रुटि 20001 का सामना ओआरए -20001: अमान्य या असंगत इनपुट मान

इसके बाद मैंने एक ही आयात कमांड की कोशिश की है लेकिन विकल्प आंकड़े = कोई भी नहीं। इसके परिणामस्वरूप निम्नलिखित त्रुटियां हुईं:

ओआरए -00 9 5 9: टेबलस्पेस 'ए_TBLSPACE' मौजूद नहीं है

यह कैसे किया जाना चाहिए?

नोट: बहुत सारे कॉलम सीएलओबी प्रकार के हैं। ऐसा लगता है कि समस्याओं के साथ कुछ करने के लिए कुछ है।

नोट 2: ऑरैकल संस्करण 9.2, 10.1 और 10.1 एक्सई का मिश्रण है। लेकिन मुझे नहीं लगता कि इसे संस्करणों के साथ करना है।


आप ओरेकल का किस संस्करण का उपयोग कर रहे हैं? यदि इसकी 10 जी या इससे अधिक है, तो आपको आयात / निर्यात के बजाए डेटा पंप का उपयोग करना चाहिए। मैं 100% निश्चित नहीं हूं कि यह इस परिदृश्य को संभाल सकता है, लेकिन मुझे उम्मीद है कि यह हो सकता है।

डेटा पंप 10 जी और उससे ऊपर के लिए एक्सपी / आईपी के प्रतिस्थापन है। यह एक्सप / आईपी के समान ही काम करता है, इसके अलावा (माना जाता है कि मैं इसका उपयोग नहीं करता क्योंकि मैं 9i भूमि में फंस गया हूं) बेहतर है।

यहां डेटा पंप दस्तावेज़ हैं


जवाब मुश्किल है, लेकिन करने योग्य:

स्थिति है: उपयोगकर्ता और टेबलस्पेस एक्स

  1. अपनी डंप फ़ाइल को एक अलग डेटाबेस में आयात करें (यह केवल तभी जरूरी है जब आपको मूल की एक प्रति रखने की आवश्यकता हो)
  2. टेबलस्पेस का नाम बदलें

    टेबलस्पेस एक्स को वाई में बदल दें

  3. expdp कमांड एन अनुदान अधिकारों के लिए एक निर्देशिका बनाएँ

  4. expdp के साथ एक डंप बनाएँ
  5. पुराने उपयोगकर्ता और पुराने टेबलस्पेस को हटाएं ( वाई )
  6. नया टेबलस्पेस बनाएं ( वाई )
  7. नया उपयोगकर्ता बनाएं (एक नए नाम के साथ) - इस मामले में बी - और अनुदान अधिकार (चरण 3 के साथ बनाई गई निर्देशिका के लिए भी)
  8. impdp के साथ डंप आयात करें

    impdp बी / बी निर्देशिका = डीआईआर डंपफाइल = DUMPFILE.dmp logfile = LOGFILE.log REMAP_SCHEMA = : बी

और बस...


मेरा समाधान DUMP फ़ाइल में टेबलस्पेस नाम को प्रतिस्थापित करने के लिए जीएसएआर उपयोगिता का उपयोग करना है। जब आप प्रतिलिपि करते हैं, तो सुनिश्चित करें कि रिक्त स्थान जोड़कर डंप फ़ाइल का आकार अपरिवर्तित हो। उदाहरण के लिए

gsar -f -s"TSDAT_OV101" -r"USERS      " rm_schema.dump rm_schema.n.dump
gsar -f -s"TABLESPACE """USERS      """ ENABLE STORAGE IN ROW CHUNK 8192 RETENTION" -r"                                                                   " rm_schema.n1.dump rm_schema.n.dump
gsar -f -s"TABLESPACE """USERS      """ LOGGING" -r"                                  " rm_schema.n1.dump rm_schema.n.dump
gsar -f -s"TABLESPACE """USERS      """ " -r"                             " rm_schema.n.dump rm_schema.n1.dump

मैं अलग-अलग सर्वरों (डेटाबेस) पर अलग-अलग टेबलस्पेस में दो उपयोगकर्ताओं के लिए सुधार करना चाहता हूं

1. पहले दोनों सर्वरों (डेटाबेस) के लिए अस्थायी डंप के लिए निर्देशिका बनाएं:

सर्वर # 1:

CREATE OR REPLACE DIRECTORY tempdump AS '/temp/old_datapump/';
GRANT READ, WRITE ON DIRECTORY tempdump TO old_user;

सर्वर # 2:

CREATE OR REPLACE DIRECTORY tempdump AS '/temp/new_datapump/';
GRANT READ, WRITE ON DIRECTORY tempdump TO new_user;

2. निर्यात (सर्वर # 1):

expdp tables=old_user.table directory=tempdump dumpfile=adump.dmp logfile=adump.log

3. आयात (सर्वर # 2):

impdp directory=tempdump dumpfile=adump_table.dmp logfile=bdump_table.log
REMAP_TABLESPACE=old_tablespace:new_tablespace REMAP_SCHEMA=old_user:new_user

यदि आप ओरेकल 10 जी और डेटापम्प का उपयोग कर रहे हैं, तो आप REMAP_TABLESPACE क्लॉज का उपयोग कर सकते हैं। उदाहरण:

REMAP_TABLESPACE=A_TBLSPACE:NEW_TABLESPACE_GOES_HERE




oracle