datapumpdir oracle_使用 Oracle Data Pump 卸载和加载数据库内容

使用 Oracle Data Pump 卸载和加载数据库内容

目的

本单元主要介绍了数据和元数据的加载与卸载。

主题

本单元将讨论以下主题:

查看屏幕截图

将鼠标移到该图标上可以显示所有屏幕截图。还可以将鼠标移到每个图标上来仅查看相关的屏幕截图。

概述

Oracle 数据库 10g 提供了多种卸载和加载数据的方法。在本单元中,您将使用 Oracle Data Pump Export 实用程序卸载数据,然后使用 Oracle Data Pump Import 实用程序加载数据。您还将观看到使用可跨平台传输的表空间快速加载大量数据的演示。

何为 Oracle Data Pump?

Oracle Data Pump 是 Oracle 数据库 10g 的一个新特性,通过它可以对 Oracle 数据库内容实现高速、并行的批量数据和元数据移动。新的公共接口 PL/SQL 程序包 DBMS_DATAPUMP 提供了一个服务器端基础架构,用于快速地移动数据和元数据。在 Oracle 数据库 10g 中,提供了一个使用该接口的新的导出 (expdp) 和导入 (impdp) 客户端。新的 Data Pump 导入和导出工具显著增强了性能和功能,如可重启性能、灵活的对象选择以及对导出和导入作业的更好监视和控制。由于这些可贵的改进,Oracle 建议您使用新的 Data Pump 导入和导出客户端,替换原有的导出 (exp) 和导入 (imp) 客户端。

课程概述

MyCompany 正在对其产品系列进行评估,以确定哪些产品最终能够为其带来最大收益。为完成此项工作,MyCompany 使用 Data Pump 的导出和导出工具卸载和加载他们之后将会进行分析的各种数据库对象。其中,Sales History (SH) 模式具有若干表格,首先需要对这些表格进行卸载,然后再将其加载到其他模式中进行分析。

前提条件

Data Pump 基于服务器,而不是基于客户端。因此,要以基于服务器的目录路径为参照来访问转储文件、日志文件和 SQL 文件,以便实施相应的文件安全性。Data Pump 要求您将目录路径指定为目录对象。目录对象将名称映射映射为文件系统上的目录名。

要运行 Data Pump Export 或 Data Pump Import,首先必须由 DBA 或任何具有 CREATE ANY DIRECTORY 权限的用户创建目录对象。然后,在您使用导出或导入工具时,请使用 DIRECTORY 参数指定该目录对象。

创建目录对象

要创建目录对象,请执行以下步骤:1.

system 的身份登录到

SQL*Plus,然后输入以下 SQL 命令创建两个目录。请注意,指定的目录路径将取决于您的系统。这只是一个示例。您需要确定使用系统上的哪些目录来定位由 Data Pump 创建的文件。

CREATE DIRECTORY datadir1 AS '/home/oracle/wkdir';

CREATE DIRECTORY datadir2 AS '/home/oracle/wkdir';

2.

创建目录后,创建该目录对象的用户需要将该目录的 READ 和 WRITE 权限授予其他用户。要使 Oracle 数据库能够以用户 SH 的身份读取和写入名为 datadir1 和 datadir2 的目录中的文件,请执行以下命令:

GRANT READ,WRITE ON DIRECTORY datadir1 TO sh;

GRANT READ,WRITE ON DIRECTORY datadir2 TO sh;

exit

确定表依赖性

您需要卸载 SALES、PRODUCTS 和 COSTS 表。要确定这些表是否与其他表(可能也是要卸载的表)存在依赖关系,请执行以下步骤:1.

打开一个浏览器,并输入以下 URL:

http://:5500/em

system/ 的身份登录,然后单击

Login。

2.

单击

Administration 选项卡。

3.

单击

Tables 链接。

4.

在 Schema 域中输入

SH,然后单击

Go。

5.

选择

Costs,然后从下拉列表中选择

Show Dependencies。单击

Go。

6.

请注意,Costs 表依赖于其他四个表:Channels、Products、Promotions 和 Times。除 Products 表以外,其他表都不需要进行分析。单击

OK。

7.

选择

Products,然后从下拉列表中选择

Show Dependencies。单击

Go。

8.

Products 表不依赖于任何其他表。单击

OK。

9.

选择

Sales,然后从下拉列表中选择

Show Dependencies。单击

Go。

10.

Sales 表依赖于几个其他表:Channels、Countries、Customers、Products、Promotions 和 Times。除 Products 表以外,其他表都不需要进行分析。单击

OK。

卸载数据

Data Pump Export 是一个实用程序,它用于将数据和元数据卸载到一组名为转储文件集的操作系统文件中。转储文件集可以复制到其他系统并由 Data Pump Import 实用程序加载。转储文件集由一个或多个包含表数据、数据库对象元数据和控制信息的磁盘文件组成。这些文件以专有的二进制格式写入。在导入操作期间,Data Pump Import 实用程序使用这些文件在转储文件集中定位每个数据库对象。利用 Data Pump Export,您可以指定作业是否应移动数据和元数据的子集(由导出模型确定)。该作业要使用数据筛选器和元数据筛选器,还要设定 Export 参数。

可以通过 Enterprise Manager 访问 Oracle Data Pump Export。要卸载公司的销售数据,请执行以下步骤:1.

单击

Maintenance 链接。

2.

单击

Export to Files 链接。

3.

要导出表,请选择

Tables 按钮并输入您的 OS 用户名和口令,然后单击

Continue 按钮。

4.

选择

Add 按钮查看可供导出的表。

5.

在 Schema 域中输入

SH,然后单击

Go。

6.

选中

Costs、Products 和

Sales 表的复选框,然后单击

Select。

7.

单击

Next。

8.

为 Maximum Number of Threads in Export Job 输入

4 ,并为 Directory Object 选择

DATADIR1。将导出日志文件的名称更改为

EXPORT_.log,然后单击

Next。

9.

单击

Next。

10.

输入作业名称

EXPORT 并确保将 Start 设置为

Immediate,然后单击

Next。

11.

单击

Submit Job 按钮,提交导出作业。

12.

已经成功提交了导出作业。单击

View Job。

13.

选择

Export 链接查看 Export 日志状态。

14.

该作业仍在运行。单击

Show more 查看更多日志内容。如果未显示 Show more,请在浏览器窗口中单击 Reload。

15.

作业完成。向下滚动到底部以查看日志中的所有消息。

16.

导出成功完成。记下转储文件的名称,以便在本课程的稍后部分中使用。

您将执行以下有关使用 Data Pump Export 命令行界面的示例:

执行表模式导出

可以使用 TABLES 参数指定表导出。在以下示例中,NOLOGFILE 参数指示将不生成操作的 Export 日志文件。

执行以下导出命令以导出表 Costs 和表 Sales:1.

打开终端窗口,执行以下命令:

expdp system/ \

TABLES=sh.costs,sh.sales \

DUMPFILE=datadir2:table.dmp \

NOLOGFILE=y

估计该模式导出将占用的磁盘空间大小

ESTIMATE_ONLY 参数会对模式导出将占用的空间大小进行估计,并在评估停止之后,才开始实际的导出操作。估计值将打印在日志文件中,并显示在客户端的标准输出设备中。该估计值只用于表行数据;它不包含元数据。

INCLUDE 参数使您可以通过为当前的导出模式指定对象和对象类型来过滤导出的元数据。导出指定的对象以及它们的所有相关对象。授予这些对象的权限也被导出。

请执行以下操作:1.

从终端窗口中,执行以下命令,以估计从 Sales History (SH) 模式中导出三个表(Sales、Products 和 Costs)中的数据所需的块数量。在特殊字符(如圆括号)之前使用反斜线 (\) 作为转义字符,这样操作系统就不会将该字符视为特殊字符。

expdp sh/sh \

INCLUDE=table:\"IN \( \'SALES\',\'PRODUCTS\',\'COSTS\'\) \" \

DIRECTORY=datadir2 \

ESTIMATE_ONLY=y

执行模式导出

可以使用 SCHEMAS 参数指定模式导出。在模式导出中,只卸载属于相应模式的对象。这是默认模式。如果您具有 EXP_FULL_DATABASE 角色,则可以指定模式列表,并包含模式定义本身以及授予这些模式的系统权限。在以下示例中,文件名包含一个替换变量 (%U),它表示导出可能生成多个文件。

请执行以下操作:1.

从终端窗口中,执行以下导出命令以执行模式导出:

expdp system/ \

SCHEMAS=sh \

DUMPFILE=datadir1:schema1%U.dmp,datadir2:schema2%U.dmp \

LOGFILE=datadir1:expschema.log

执行并行的完全数据库导出

FULL 参数表示导出是一个完全数据库模式导出。将导出数据库中的所有数据和元数据。

PARALLEL 参数指定了以导出作业的身份执行操作时,运行的最大线程数。该参数使您可以在资源使用和已用时间之间进行权衡。要获得最佳性能,为 PARALLEL 指定的值至少应等于使用 DUMPFILE 参数指定的输出文件数。每个 Data Pump 执行线程每次以独占方式写入一个文件。

PARALLEL 参数只在 Oracle 数据库的企业版中有效。要在作业执行过程中增大或减小 PARALLEL 的值,请使用以下示例所描述的交互式命令模式。

FILESIZE 参数将每个转储文件的最大大小限制为 2 GB。

请执行以下操作:1.

从终端窗口中,执行以下命令以使用 PARALLEL 参数执行完全导出:

expdp system/ \

FULL=y \

DUMPFILE=datadir1:full1%U.dmp,datadir2:full2%U.dmp \

FILESIZE=2g \

PARALLEL=4 \

LOGFILE=datadir1:expfull.log \

JOB_NAME=expfull

注意:由于不支持某种类型的表,因此导出完成时可能会显示一个预期的错误。

2.

在 datadir1 和 datadir2 指向的目录中,转储文件 full101.dmp、full201.dmp、full102.dmp、full202.dmp 将通过循环方式创建,依此类推。为获得最佳性能,这些目录应位于单独的 I/O 通道上。每个转储文件的大小应限制为 2 GB。作业名将为 expfull。导出日志文件将写入目录 datadir1 中的 expfull.log。

连接和停止现有作业

ATTACH 命令将客户端会话连接到现有的导出作业,并自动转到交互式命令界面。导出工具将显示已连接的作业的描述,并显示导出提示符。如果只有一个与模式关联的导出作业,则必须指定作业名。连接的作业既可以是当前正在执行的作业也可以是已停止的作业。

在以下示例中,将在导出作业运行所在的同一终端中运行交互式模式。用户也可以从未运行该作业的其他终端来使用交互式模式;这种情况下需要使用 expdp system/ ATTACH。

请执行以下操作:1.

再次运行 Full Export(完全导出)。当导出正在运行时,按

Ctrl+C 以连接到交互式命令界面(下一个示例需要该界面)。交互式命令界面停止记录到终端并显示 Export 提示符,您可以从该提示符下输入各种命令,其中的某些命令特定于交互式模式。

expdp system/ \

FULL=y \

DUMPFILE=datadir1:full3%U.dmp,datadir2:full4%U.dmp \

FILESIZE=2g \

PARALLEL=4 \

LOGFILE=datadir1:expfull2.log \

JOB_NAME=expfull2

注意:由于工作进程并行运行,因此导出过程中处理的元数据对象可能不会按顺序显示。

2.

从终端窗口中执行以下命令以停止该作业:

Export> STOP_JOB=immediate

Are you sure you wish to stop this job (y/n):y

连接并重新启动已停止的作业

系统管理员使用更高级别的并行机制重新启动作业(可能在业余时间)。请注意,由于作业以前已停止,因此在这种情况下必须提供作业名。之所以需要作业名是为了查找作业的主表。系统管理员可能还希望显示作业的累积状态以及当前操作的描述。系统管理员可以指定该状态的显示频率(秒)。该状态信息只写入标准的输出设备,而不是日志文件。

请执行以下操作:1.

从终端窗口中,执行以下命令:

expdp system/ ATTACH=expfull2

2.

显示所有作业状态后,请执行以下交互式模式命令:

Export> PARALLEL=10

Export> START_JOB

Export> STATUS=600

Export> CONTINUE_CLIENT

进入记录模式,在该模式中,作业状态以连续的方式每隔 10 分钟输出到终端一次。

注意:由于停止作业,因此导出在完成时可能会显示一个预期的错误。

加载数据

Data Pump Import 是一个用于将导出的转储文件集加载到目标系统的实用程序。转储文件集由一个或多个包含表数据、数据库对象元数据和控制信息的磁盘文件组成。Data Pump Export 实用程序以专用的二进制格式写入这些文件。在导入操作期间,Data Pump Import 实用程序使用这些文件在转储文件集中定位每个数据库对象。

如果源数据库不包含干预文件,则可以同时执行导出和导入操作,所以能使用 Import 实用程序实现源数据库到目标数据库的直接加载。这避免了在文件系统上创建转储文件,还可以最大限度地减少导出和导入操作的总消耗时间。这称作网络导入。

通过 Data Pump Import,您可以指定作业是否应移动数据和元数据子集(由导入模式确定)。该作业要使用数据筛选器和元数据筛选器,还要设定 Import 参数。

可以通过 Enterprise Manager 访问 Oracle Data Pump Import。要使用 Enterprise Manager 来导入模式,请执行以下步骤:1.

打开一个浏览器,并输入以下 URL:

http://:5500/em

system/ 的身份登录,然后单击

Login。

2.

单击

Maintenance 链接。

3.

单击

Import from Files 链接。

4.

Import Type 设置为

Tables 并输入主机用户名和口令,然后单击

Continue。

5.

选择

Add 按钮查看可供导入的表。

6.

在 Schema 域中输入

SH,然后单击

Go。

7.

选中

Costs、Products 和

Sales 的复选框,然后单击

Select。

8.

单击

Next。

9.

单击

Re-Map Schemas 区域下的

Add Another Row 按钮。

10.

在 Destination Schema 列下,选择

SCOTT,然后单击

Next。

11.

单击

Next。

12.

在 Job 域中输入

IMPORT_ ,然后单击

Next。

13.

单击

Submit Job。

14.

单击

View Job。

15.

选择

Import 链接以查看导入日志状态。

16.

该作业仍在运行。单击

Show more 查看更多日志内容。如果未显示 Show more,请在浏览器窗口中单击 Reload。

17.

作业完成。向下滚动到底部以查看日志中的所有消息。

18.

尽管日志文件显示了一些错误,但导入已经成功完成。由于

Sales 和

Costs 表所依赖的几个表未包含在导出中,因此导入中也没有,从而生成了这些错误。在这种情况下,此种遗漏由人为意愿造成,故而可以忽略日志文件中的这些错误。

请演练以下使用 Data Pump Import 命令行界面的示例:

执行仅导入数据的表模式导入

使用 CONTENT 参数可以过滤导入加载的数据和元数据。DATA_ONLY 值只加载表行数据;不重新创建数据库对象定义(元数据)。

请执行以下操作:1.

从终端窗口中,执行以下 IMPORT 命令,以使用在本教程前面的“导出”部分中创建的转储文件对表 Costs 执行仅导入表数据的导入。

impdp system/ \

TABLES=sh.costs \

CONTENT=data_only \

DUMPFILE=datadir2:table.dmp \

NOLOGFILE=y

执行模式导入

EXCLUDE 参数使您可以通过指定要从导入作业中排除的数据库对象来过滤导入的元数据。给定的导入模式中将包括源中包含的所有对象及其所有相关对象(EXCLUDE 语句中指定的对象除外)。如果不包含某个对象,则其所有相关对象也将排除在外。

TABLE_EXISTS_ACTION 指示导入在它试图创建的表已经存在时所要执行的操作。如果指定 TABLE_EXISTS_ACTION=REPLACE,则导入将删除现有表,然后使用源数据库内容重新创建并加载它。

请执行以下操作:1.

从终端窗口中,执行以下导入命令,以执行一个模式导入,该导入使用“导出”部分中的模式导出创建的转储文件集排除约束、引用约束、索引和物化视图。

impdp system/ \

SCHEMAS=sh \

REMAP_SCHEMA=sh:sh2 \

DUMPFILE=datadir1:schema1%U.dmp,datadir2:schema2%U.dmp \

EXCLUDE=constraint, ref_constraint, index,materialized_view \

TABLE_EXISTS_ACTION=replace \

logfile=datadir1:impschema.log

将鼠标移到该图标上可以隐藏所有屏幕截图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值