เผยแพร่โดย TriCore: 6 มิถุนายน 2017
Oracle Data Pump (expdp, impdp) เป็น utility สำหรับ export/import database objects ในและข้าม databases Part 1 พูดถึง multitenant architecture ใน Oracle Database 12c และการใช้ Data Pump Part 2 ครอบคลุม export ของ pluggable databases (PDBs) เท่านั้น และ restrictions ที่ Data Pump วางไว้กับ PDBs
การ Export PDB
ใน CDB ข้อมูลจริงเป็นของ PDB แต่ละ PDB ดูเหมือน non-CDB (standard Oracle database) ให้ client ดังนั้น export objects จาก PDB จึงสมเหตุสมผล
การใช้ Data Pump export สำหรับ PDBs เหมือน non-CDB database ต่างกันแค่ต้องใช้ connect identifier หรือ TNS alias ในคำสั่ง export เพื่อระบุ PDP เฉพาะ
ตัวอย่าง export user ABBAS ใน PDP ชื่อ PRODPDB1:
[oracle@labserver ~]$ expdp directory=DP_PDB1 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
Output แสดงการเชื่อมต่อเป็น sys@prodpdb1 as sysdba TNS alias prodpdb1 resolve ไปยัง PDP PRODPDB1 ตรวจสอบด้วย tnsping prodpdb1
Data Pump Restrictions on PDBs
Data Pump ไม่อนุญาตให้ใช้ directory ที่ owned by root container/CDB หรือ PDB อื่น ต้องสร้าง directory ภายใต้ PDB PDP ต้องเป็นเจ้าของ directory เพื่อใช้ Data Pump export/import
หากใช้ directory ของ PDB อื่นหรือ root container จะได้ error:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name DP_PDB2 is invalid
ไม่สามารถใช้ default directory DATA_PUMP_DIR สำหรับ PDB export/import เพราะ owned by root container และเปลี่ยน ownership ไม่ได้
หากพยายามสร้าง DATA_PUMP_DIR ภายใน PDB จะได้ error:
ORA-65040: operation not allowed from within a pluggable database
ดังนั้น ต้องสร้าง directory explicitly สำหรับ PDB ทุกครั้งที่ทำ Data Pump export/import
สรุป
Data Pump utility เป็น enhanced export/import tool ที่ Oracle นำเสนอตั้งแต่ Oracle 10g การใช้ expdp enhancements ใน Oracle Database 12c ที่ครอบคลุมใน Part 1 และ 2 ช่วย maximize utility นี้
References
- Changes in This Release for Oracle Database Utilities