Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Thành thạo Oracle 12c Data Pump: Xuất PDB và Điều hướng Các Hạn chế Mới

Xuất bản lần đầu bởi TriCore: 6 tháng 6, 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à giữa các cơ sở dữ liệu. Phần 1 của loạt bài blog hai phần này đã thảo luận về việc giới thiệu kiến trúc đa thuê (multitenant) trong Oracle Database 12c và cách sử dụng Data Pump để xuất và nhập dữ liệu. Phần 2 bao gồm cách thực hiện xuất chỉ các pluggable databases (PDB) và các hạn chế mà Data Pump đặt lên PDB.

Thực hiện xuất của một PDB

Trong trường hợp của một container database (CDB), dữ liệu thực tế thuộc về PDB bên dưới, và mỗi PDB xuất hiện như một non-CDB (cơ sở dữ liệu Oracle tiêu chuẩn) đối với client. Do đó, việc thực hiện xuất các đối tượng từ một PDB là hợp lý.

Thành thạo Oracle 12c Data Pump: Xuất PDB và Điều hướng Các Hạn chế Mới

Nguồn hình ảnh: Kiến trúc Data Pump

Việc sử dụng xuất Data Pump cho PDB giống hệt việc sử dụng xuất Data Pump cho cơ sở dữ liệu non-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 một định danh kết nối (connect identifier) hoặc bí danh Transparent Network Substrate (TNS) trong dấu nhắc lệnh xuất khi bạn khởi tạo xuất. Bước này đảm bảo rằng bạn đang khởi tạo xuất Data Pump cho một PDB cụ thể.

Ví dụ, bạn có thể xuất user ABBAS thuộc PDB tên PRODPDB1 với 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 truyền vào tên người dùng cũng chỉ định định danh kết nối cho PDB tên 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:

Khối mã sau cho thấy định danh kết nối (prodpdb1) đang phân giải sang PDB 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 trên PDB

Đ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 về container gốc hoặc CDB cho nhập và xuất. Bạn cũng không thể sử dụng thư mục thuộc về một PDB khác.

Thay vào đó, bạn cần tạo một thư mục dưới 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 thư mục thuộc về PDB khác hoặc container gốc, 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 PDB 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 container gốc và quyền sở hữu của nó không thể thay đổi.

Nếu bạn cố gắng tạo thư mục mặc định DATA_PUMP_DIR 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 PDB để 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 được cải tiến mà Oracle giới thiệu với Oracle 10g. Việc tận dụng các cải tiến expdp trong Oracle Database 12c được bao gồm trong Phần 1 và Phần 2 của loạt bài blog này giúp bạn tối đa hóa tiện ích này.

Sử dụng tab Feedback để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào.

Tham khảo

Tài liệu sau được sử dụng làm tham khảo cho bài viết này:

  • Changes in This Release for Oracle Database Utilities