暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从零开始学习Oracle Data Pump

周同学带您玩AI 2024-07-31
274

Oracle Data Pump的一般架构

Oracle Data Pump是一种用于数据和元数据移动的高效工具,提供了多种接口和模式来执行数据导出和导入操作。其一般架构如下:

  1. DBMS_DATAPUMP包:这是核心的数据和元数据移动引擎,负责管理和执行Data Pump操作。
  2. Data Pump工具:包括expdp(导出工具)和impdp(导入工具),用于数据的导出和导入。
  3. External Table(外部表):用于与外部数据文件进行交互,可以通过Oracle Loader或Oracle Data Pump访问。
  4. Direct Path API(直接路径API):用于高效的数据加载,绕过了常规的SQL接口。
  5. DBMS_METADATA包:用于管理数据库元数据。
  6. 客户端:包括SQL*Loader、expdp和impdp等,可以通过命令行或图形界面进行操作。

使用Data Pump导出和导入在Oracle数据库之间移动数据

Data Pump Export and Import Clients

Data Pump导出和导入的过程涉及以下几个关键组件:

  1. expdp client:发起导出任务。
  2. 源数据库:包含要导出的数据,创建一个主表以跟踪导出操作。
  3. Data Pump job:处理导出任务,将数据写入转储文件集。
  4. Dump file set:存储导出的数据。
  5. 目标数据库:接收导入的数据,创建一个主表以跟踪导入操作。
  6. impdp client:发起导入任务。
  7. Database link:在网络模式下,允许跨数据库传输数据。

使用镜像副本或备份集在数据库之间传输表空间

Full Transportable Export/Import: Example

全传输导出/导入是一种用于传输整个数据库或特定表空间的高效方法。步骤如下:

  1. 将表空间设为只读:确保在传输过程中表空间数据不被修改。
ALTER TABLESPACE appl1 READ ONLY;
ALTER TABLESPACE hrtbs READ ONLY;

  1. 导出数据:使用expdp工具执行全传输导出,将数据写入转储文件。
expdp user_name@proddb FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORTABLE=always LOGFILE=export.log

  1. 字节序转换:如有必要,使用RMAN CONVERT或DBMS_FILE_TRANSFER进行字节序转换。
  2. 传输数据文件和转储文件:将这些文件复制到目标数据库。
  3. 导入数据:使用impdp工具将数据导入到目标数据库。
impdp user_name@pdbprod FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORT_DATAFILES='/oracle/oradata/prod/file1.dbf''/oracle/oradata/prod/file2.dbf''/oracle/oradata/prod/file3.dbf' LOGFILE=import.log

使用数据文件或备份集传输数据库

在数据库之间传输数据时,可以使用数据文件或备份集实现高效传输。以下是具体步骤:

  1. 导出数据库:使用expdp工具将整个数据库导出到转储文件。
expdp system@sourceDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=full_db.dmp LOGFILE=full_db_exp.log

  1. 传输转储文件:将导出的转储文件复制到目标数据库服务器。
  2. 导入数据库:使用impdp工具将转储文件中的数据导入到目标数据库。
impdp system@targetDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=full_db.dmp LOGFILE=full_db_imp.log

举例

示例1:使用Data Pump在Oracle数据库之间移动数据

有一个名为prodDB
的生产数据库,需要将其数据导出到名为testDB
的测试数据库。

  1. 创建Data Pump目录

在源数据库和目标数据库上分别创建目录:

CREATE DIRECTORY data_pump_dir AS '/u01/datapump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO system;

  1. 导出数据

使用expdp工具导出数据:

expdp system@prodDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=prodDB.dmp LOGFILE=prodDB_exp.log

  1. 传输转储文件

将转储文件prodDB.dmp
复制到目标数据库服务器的相同目录中。

  1. 导入数据

使用impdp工具将数据导入到目标数据库:

impdp system@testDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=prodDB.dmp LOGFILE=testDB_imp.log

示例2:使用全传输导出/导入在数据库之间传输表空间

prodDB
数据库中的表空间传输到pdbprod
数据库。

  1. 将表空间设为只读
ALTER TABLESPACE appl1 READ ONLY;
ALTER TABLESPACE hrtbs READ ONLY;

  1. 执行全传输导出
expdp user_name@prodDB FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORTABLE=always LOGFILE=export.log

  1. 传输数据文件和转储文件

将数据文件和转储文件复制到目标数据库服务器。

  1. 导入数据
impdp user_name@pdbprod FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORT_DATAFILES='/oracle/oradata/prod/file1.dbf''/oracle/oradata/prod/file2.dbf''/oracle/oradata/prod/file3.dbf' LOGFILE=import.log

在PDB之间导出和导入

在PDB之间导出和导入的步骤:

  1. 使用FULL=Y
    参数从CDB1的PDBA导出数据:
expdp system@PDBA FULL=Y ...

  1. 如果CDB2中不存在PDBC,创建PDBC:
SQL> CONNECT sys@CDB2
SQL> CREATE PLUGGABLE DATABASE PDBC ...;

  1. 打开PDBC。
  2. 在PDBC中创建Data Pump目录。
  3. 将转储文件复制到Data Pump目录。
  4. 在PDBC中创建与PDBA相同的表空间。
  5. 使用FULL
    REMAP
    参数将数据导入到CDB2的PDBC:
impdp system@PDBC FULL=Y REMAP_SCHEMA=c##u:lu ...

全传输导出/导入

全传输导出/导入的步骤:

  • 导出数据:使用expdp工具执行全传输导出,将数据写入转储文件。
expdp user_name@pdb FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORTABLE=always

  • 导入数据:使用impdp工具将转储文件中的数据导入到目标数据库。
impdp user_name@pdb FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORT_DATAFILES=...

举例

示例1:使用Data Pump在Oracle数据库之间移动数据

有一个名为prodDB
的生产数据库,需要将其数据导出到名为testDB
的测试数据库。

  1. 创建Data Pump目录

在源数据库和目标数据库上分别创建目录:

CREATE DIRECTORY data_pump_dir AS '/u01/datapump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO system;

  1. 导出数据

使用expdp工具导出数据:

expdp system@prodDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=prodDB.dmp LOGFILE=prodDB_exp.log

  1. 传输转储文件

将转储文件prodDB.dmp
复制到目标数据库服务器的相同目录中。

  1. 导入数据

使用impdp工具将数据导入到目标数据库:

impdp system@testDB FULL=y DIRECTORY=data_pump_dir DUMPFILE=prodDB.dmp LOGFILE=testDB_imp.log

示例2:使用全传输导出/导入在数据库之间传输表空间

prodDB
数据库中的表空间传输到pdbprod
数据库。

  1. 将表空间设为只读
ALTER TABLESPACE appl1 READ ONLY;
ALTER TABLESPACE hrtbs READ ONLY;

  1. 执行全传输导出
expdp user_name@prodDB FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORTABLE=always LOGFILE=export.log

  1. 传输数据文件和转储文件

将数据文件和转储文件复制到目标数据库服务器。

  1. 导入数据
impdp user_name@pdbprod FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORT_DATAFILES='/oracle/oradata/prod/file1.dbf''/oracle/oradata/prod/file2.dbf''/oracle/oradata/prod/file3.dbf' LOGFILE=import.log

举例

示例1:在CentOS上使用Data Pump导出和导入数据

一个名为hrdb
的数据库,我们需要将其数据导出到名为salesdb
的新数据库。

  1. hrdb
    数据库上创建Data Pump目录:
CREATE DIRECTORY data_pump_dir AS '/u01/datapump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO system;

  1. 使用Data Pump导出数据:
expdp system@hrdb FULL=y DIRECTORY=data_pump_dir DUMPFILE=hrdb.dmp LOGFILE=hrdb_exp.log

  1. salesdb
    数据库上创建Data Pump目录:
CREATE DIRECTORY data_pump_dir AS '/u01/datapump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO system;

  1. 将转储文件复制到salesdb
    的Data Pump目录。
  2. 使用Data Pump导入数据:
impdp system@salesdb FULL=y DIRECTORY=data_pump_dir DUMPFILE=hrdb.dmp LOGFILE=salesdb_imp.log

示例2:在CentOS上使用全传输导出/导入

需要将数据库proddb
的数据传输到pdbprod

  1. proddb
    上创建Data Pump目录:
CREATE DIRECTORY data_pump_dir AS '/u01/datapump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO system;

  1. 将表空间设为只读:
ALTER TABLESPACE appl1 READ ONLY;
ALTER TABLESPACE hrtbs READ ONLY;

  1. 使用全传输导出:
expdp user_name@proddb FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORTABLE=always LOGFILE=export.log

  1. 如有必要,进行字节序转换(RMAN CONVERT或DBMS_FILE_TRANSFER)。
  2. 将数据文件和转储文件复制到pdbprod
    的Data Pump目录。
  3. pdbprod
    上导入数据:
impdp user_name@pdbprod FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir TRANSPORT_DATAFILES='/oracle/oradata/prod/file1.dbf''/oracle/oradata/prod/file2.dbf''/oracle/oradata/prod/file3.dbf' LOGFILE=import.log

非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

让AI工具成为你的得力助手,感受AI工具的无限可能,让复杂的任务变得简单,让你的工作更加轻松和高效。


文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论