Được xuất bản lần đầu bởi TriCore:ngày 6 tháng 6 năm 2017
Oracle® Data Pump (expdp, impdp) là một tiện ích để xuất và nhập các đối tượng cơ sở dữ liệu trong và trên cơ sở dữ liệu. Phần 1 của bài đăng blog gồm hai phần này đã thảo luận về việc giới thiệu kiến trúc đa đối tượng trong OracleDatabase 12c và cách sử dụng Data Pump để xuất và nhập dữ liệu. Phần 2 giới thiệu cách thực hiện xuất các cơ sở dữ liệu chỉ có thể cắm thêm (PDB) và các hạn chế mà Máy bơm dữ liệu đặt ra trên các PDB.
Xuất một PDB
Trong trường hợp cơ sở dữ liệu vùng chứa (CDB), dữ liệu thực tế thuộc về PDB bên dưới và mỗi PDB xuất hiện dưới dạng không phải CDB (cơ sở dữ liệu Oracle tiêu chuẩn) cho máy khách. Do đó, việc xuất các đối tượng từ PDB là rất hợp lý.
Nguồn hình ảnh:Data Pumparchitecture
Sử dụng dữ liệu xuất Bơm cho các PDB cũng giống như sử dụng cơ sở dữ liệu xuất khẩu Bơm dữ liệu không phải CDB. Sự khác biệt duy nhất trong việc sử dụng tiện ích xuất Data Pump cho PDB là bạn phải sử dụng số nhận dạng aconnect, hoặc bí danh trong suốt NetworkSubstrate (TNS), trong dấu nhắc lệnh xuất khi bạn bắt đầu xuất. Bước này đảm bảo rằng bạn đang bắt đầu xuất Data Pump cho PDB cụ thể.
Ví dụ:bạn có thể thực hiện xuất người dùng ABBAS
thuộc về PDBname PRODPDB1
bằng lệnh sau:
[oracle@labserver ~]$ expdp directory=DP_PDB1 dumpfile=pdb1_abbas.dmp logfile=pdb1_abbas.log schemas=abbas
Khối mã sau hiển thị đầu ra cho lệnh này:
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
Lưu ý rằng lệnh được chuyển trong tên người dùng cũng chỉ định định danh kết nối cho PDBname 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:
Các khối mã sau đây cho thấy rằng mã định danh kết nối (prodpdb1
) đang giải quyết cho PDB có tên 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)
Hạn chế của Data Pump đối với PDBs
Điều quan trọng cần lưu ý là Data Pump không cho phép bạn sử dụng thư mục thuộc sở hữu của vùng chứa gốc hoặc CDB để nhập và xuất. Bạn cũng không thể sử dụng một tài khoản thuộc sở hữu của một PDB khác.
Thay vào đó, bạn cần tạo một thư mục trong PDB. PDB phải sở hữu thư mục để bạn sử dụng chức năng xuất và nhập Data Pump.
Nếu bạn cố gắng sử dụng một thư mục thuộc về một PDB khác hoặc rootcontainer, lệnh sẽ trả về các lỗi sau:
[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
Ngoài ra, bạn không thể sử dụng thư mục mặc định DATA_PUMP_DIR
để xuất hoặc nhập aPDB với Data Pump. Hạn chế này tồn tại vì DATA_PUMP_DIR
Luôn được sở hữu bởi vùng chứa gốc và không thể thay đổi quyền sở hữu của nó.
Nếu bạn cố tạo DATA_PUMP_DIR
mặc định bên trong PDB, lệnh sẽ trả về các lỗi sau:
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
Do đó, bạn phải luôn tạo một thư mục rõ ràng cho một lệnh PDBin để thực hiện xuất hoặc nhập Data Pump.
Kết luận
Tiện ích Data Pump là một công cụ xuất và nhập nâng cao mà Oracle đã giới thiệu với Oracle 10g. Tận dụng các cải tiến expdp trong OracleDatabase 12c được đề cập trong Phần 1 và 2 của loạt bài đăng blog này sẽ giúp bạn tối đa hóa tiện ích này.
Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào.
Tài liệu tham khảo
Tài liệu sau được sử dụng làm tài liệu tham khảo cho bài đăng trên blog này:
- Những thay đổi trong Bản phát hành này cho Oracle DatabaseUtilities