มีวิธีที่สะดวกในการนำเข้าสคีมาใน Oracle 11gR2 โดยใช้สเปซใหม่หรือที่แตกต่างจากที่มาของข้อมูลหรือไม่?
ตัวอย่างเช่นฉันได้ส่งออก BLOG_DATA จาก OLDDB ซึ่งข้อมูลผู้ใช้ทั้งหมดถูกเก็บไว้ในพื้นที่ตาราง USERS
บน NEWDB ฉันต้องการนำเข้า BLOG_DATA schema แต่เก็บวัตถุผู้ใช้ในพื้นที่ตาราง 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
หลังจากอ่านคำตอบที่ยอดเยี่ยมของฟิลด้านล่างฉันพบว่าตัวเองสงสัย :
เนื่องจากข้อมูลไม่มีที่อื่นที่จะไปให้พ้นจาก tablespace เริ่มต้นซึ่งเป็น tablespace เพียงอันเดียวที่ผู้ใช้มีโควต้า - นี่จะบังคับให้ใส่วัตถุผู้ใช้ทั้งหมดใน tablespace เริ่มต้นอย่างมีประสิทธิภาพหรือไม่
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
ถ้าเช่นนั้นจะวาง schema ของบล็อก_dataทั้งหมดลงในพื้นที่ตาราง blog_data บน NEWDB หรือไม่ มีเหตุผลใดบ้างที่สิ่งนี้ไม่ทำงานหรือว่าฉันจะเจอปัญหาเกี่ยวกับวัตถุบางอย่าง ฯลฯ ?
อัปเดต:
ฉันทำการทดสอบอย่างรวดเร็วและพบว่าสิ่งนี้เป็นจริง Imp
วางวัตถุใน tablespace เริ่มต้นสำหรับผู้ใช้นั้นหากไม่สามารถวางไว้ใน tablespace เดิม (เช่น tablespace ไม่มีอยู่) คำอธิบายแบบเต็ม: http://www.dolicapax.org/?p=57
ถึงกระนั้นฉันคิดว่าการใช้ Data Pump อย่าง Phil แนะนำอาจเป็นตัวเลือกที่ต้องการ
exp
ยูทิลิตี้ดั้งเดิมหรือexpdp
(ปั๊มข้อมูล) หรือไม่