เผยแพร่ครั้งแรกโดย TriCore:6 มิถุนายน 2017
Oracle® Data Pump(expdp, impdp) เป็นยูทิลิตี้สำหรับการส่งออกและนำเข้าอ็อบเจ็กต์ฐานข้อมูลในและระหว่างฐานข้อมูล ส่วนที่ 1 ของชุดโพสต์บล็อกสองส่วนนี้กล่าวถึงการแนะนำสถาปัตยกรรมหลายผู้เช่าใน OracleDatabase 12c และวิธีใช้ Data Pump เพื่อส่งออกและนำเข้าข้อมูล ส่วนที่ 2 นำเสนอการส่งออกเฉพาะฐานข้อมูลที่เสียบได้ (PDB) และข้อจำกัดที่ Data Pump วางไว้บน PDB
การส่งออก PDB
ในกรณีของฐานข้อมูลคอนเทนเนอร์ (CDB) ข้อมูลจริงเป็นของ PDB พื้นฐาน และแต่ละ PDB จะปรากฏเป็นที่ไม่ใช่ CDB (ฐานข้อมูล Oracle มาตรฐาน) ให้กับลูกค้า ดังนั้นจึงเหมาะสมที่จะส่งออกวัตถุจาก PDB
แหล่งที่มาของรูปภาพ:Data Pumparchitecture
การใช้การส่งออก Data Pump สำหรับ PDB จะเหมือนกับการใช้การส่งออก Data Pump สำหรับฐานข้อมูลที่ไม่ใช่ CDB ข้อแตกต่างเพียงอย่างเดียวในการใช้ยูทิลิตีการส่งออก Data Pump สำหรับ PDB คือ คุณต้องใช้ตัวระบุการเชื่อมต่อ หรือนามแฝง Transparent NetworkSubstrate (TNS) ในพร้อมท์คำสั่งการเอ็กซ์พอร์ตเมื่อคุณเริ่มต้นการส่งออก ขั้นตอนนี้ช่วยให้มั่นใจได้ว่าคุณกำลังเริ่มต้นการส่งออก Data Pump สำหรับ PDB เฉพาะ
ตัวอย่างเช่น คุณสามารถส่งออกผู้ใช้ABBAS
เป็นของ PDBnamed PRODPDB1
ด้วยคำสั่งต่อไปนี้:
[oracle@labserver ~]$ expdp directory=DP_PDB1 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
บล็อกโค้ดต่อไปนี้แสดงผลลัพธ์สำหรับคำสั่งนี้:
Export: Release 12.1.0.1.0 - Production on Fri Mar 27 00:08:09 2015
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
Username: sys@prodpdb1 as sysdba
Password:
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
Starting "SYS"."SYS_EXPORT_SCHEMA_01": sys/********@prodpdb1 AS SYSDBA directory=DP_PDB1 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
. . exported "ABBAS"."TAB1" 67.85 KB 41 rows
Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
/backup/exp/prodpdb1/pdb1_abbas.dmp
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Mar 26 14:39:44 2015 elapsed 0 00:01:08
โปรดทราบว่าคำสั่งที่ส่งผ่านในชื่อผู้ใช้ยังระบุตัวระบุการเชื่อมต่อสำหรับ PDBnamed PRODPDB1
.
[oracle@labserver ~]$ expdp directory=DP_PDB1 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
Export: Release 12.1.0.1.0 - Production on Fri Mar 27 00:08:09 2015
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
Username: sys@prodpdb1 as sysdba
Password:
บล็อกรหัสต่อไปนี้แสดงให้เห็นว่าตัวระบุการเชื่อมต่อ (prodpdb1
) กำลังแก้ไข PDB ชื่อ PRODPDB1
.
[oracle@labserver ~]$ tnsping prodpdb1
TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 27-MAR-2015 00:11:54
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/app/oracle/db/12.1.0.1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = labserver.home.com)(PORT = 1525)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prodpdb1)))
OK (10 msec)
ข้อจำกัดการปั๊มข้อมูลบน PDB
สิ่งสำคัญที่ควรทราบคือ Data Pump ไม่อนุญาตให้คุณใช้ไดเร็กทอรีที่เป็นของคอนเทนเนอร์รูทหรือ CDB สำหรับการนำเข้าและส่งออก คุณยังใช้อันที่เป็นของ PDB อื่นไม่ได้
คุณต้องสร้างไดเร็กทอรีภายใต้ PDB แทน PDB ต้องเป็นเจ้าของไดเรกทอรีเพื่อให้คุณใช้ฟังก์ชันการส่งออกและนำเข้า Data Pump
หากคุณพยายามใช้ไดเร็กทอรีที่เป็นของ PDB อื่นหรือ rootcontainer คำสั่งจะส่งคืนข้อผิดพลาดต่อไปนี้:
[oracle@labserver ~]$ expdp directory=DP_PDB2 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
Export: Release 12.1.0.1.0 - Production on Fri Mar 27 00:21:08 2015
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
Username: sys@prodpdb1 as sysdba
Password:
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name DP_PDB2 is invalid
นอกจากนี้ คุณไม่สามารถใช้ไดเร็กทอรีเริ่มต้นDATA_PUMP_DIR
เพื่อส่งออกหรือนำเข้า aPDB ด้วย Data Pump ข้อจำกัดนี้มีอยู่เพราะDATA_PUMP_DIR
เป็นเจ้าของโดยคอนเทนเนอร์รูทเสมอและไม่สามารถเปลี่ยนแปลงความเป็นเจ้าของได้
หากคุณพยายามสร้างค่าเริ่มต้นDATA_PUMP_DIR
ภายใน PDB คำสั่งจะส่งคืนข้อผิดพลาดต่อไปนี้:
sys@PRODPDB1> show con_name
CON_NAME
------------------------------
PRODPDB1
sys@PRODPDB1> create or replace directory DATA_PUMP_DIR as '/backup/exp/prodpdb1';
create or replace directory DATA_PUMP_DIR as '/backup/exp/prodpdb1'
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database
ด้วยเหตุนี้ คุณต้องสร้างไดเร็กทอรีอย่างชัดเจนสำหรับ PDB เพื่อดำเนินการส่งออกหรือนำเข้า Data Pump
บทสรุป
ยูทิลิตี Data Pump เป็นเครื่องมือส่งออกและนำเข้าที่ได้รับการปรับปรุงซึ่ง Oracle แนะนำให้รู้จักกับ Oracle 10g การใช้ประโยชน์จากการเพิ่มประสิทธิภาพ expdp ใน OracleDatabase 12c ที่กล่าวถึงในส่วนที่ 1 และ 2 ของชุดโพสต์ในบล็อกนี้จะช่วยให้คุณได้รับประโยชน์สูงสุดจากยูทิลิตี้นี้
ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม
ข้อมูลอ้างอิง
เอกสารต่อไปนี้ถูกใช้เป็นข้อมูลอ้างอิงสำหรับโพสต์ในบล็อกนี้:
- การเปลี่ยนแปลงในรุ่นนี้สำหรับ Oracle DatabaseUtilities