32、高级数据泵与 OEM12c、SQL Developer 实用指南

高级数据泵与 OEM12c、SQL Developer 实用指南

在数据库管理工作中,数据的迁移、备份和恢复是至关重要的操作。高级数据泵(Advanced Data Pump)、Oracle Enterprise Manager 12c(OEM12c)以及 SQL Developer 为我们提供了强大而灵活的工具,帮助我们高效地完成这些任务。接下来,我们将详细介绍这些工具的使用方法和技巧。

高级数据泵的操作与应用

高级数据泵在数据迁移和管理方面具有重要作用,下面我们将从数据导入、数据库降级、表空间传输、闪回操作、作业状态监控以及性能调优等方面进行详细介绍。

数据导入操作

要将之前导出的数据和元数据导入到目标数据库,可以使用以下命令:

$ impdp fcomunoz/alvarez@pdborcl dumpfile=full_11_06192013.dmp logfile=imp_full_11_06192013.log

如果在同一服务器上进行导入,需要使用 REMAP_DATAFILE 参数告知 Oracle 在导入操作创建新表空间时将数据文件创建在不同位置,否则可能会因源数据库数据文件仍存在而导致导入失败。另外,也可以预先创建表空间,并在执行导入时使用 REUSE_DATAFILES=N DESTROY=N 参数。导入完成后,务必检查导入操作的日志文件,确保操作成功完成。若数据库包含 RMAN 目录,还需通过 RMAN 连接到该目录,并执行两次 UPGRADE CATALOG 命令。

数据库降级操作

使用数据泵可以将 Oracle 数据库进行降级,例如从 Oracle 12.1 迁移到 11.2.0.3 版本。要实现这一目标,需要在导出时设置 VERSION 参数为目标数据库的版本号,示例命令如下:

$ expdp fcomunoz/alvarez@pdborcl directory=datapump dumpfile=version_full_06192013.dmp full=y version=11.2.0.3

需要注意的是, impdp 工具无法读取由更高版本数据库创建的转储文件,除非在导出时使用 VERSION 参数指定了目标数据库的版本。

在不同数据库版本之间迁移数据时,使用 VERSION 参数还需注意以下几点:
- 指定比当前数据库版本旧的版本时,源数据库当前版本特有的某些功能可能不可用。
- 使用 VERSION 参数将数据迁移到旧版本时,生成的转储文件将不包含旧版本数据库不支持的对象,从而可以在目标数据库中进行导入。
- 数据泵导入工具可以读取旧版本数据库创建的任何转储文件。
- 若不使用 VERSION 参数指定目标数据库版本,数据泵导入工具无法读取比当前数据库版本新的源数据库创建的转储文件。
- 通过网络链接操作时,数据泵要求源数据库和目标数据库的版本差异不超过两个版本(不考虑版本号)。
- 对 Oracle 11g(11.2.0.3)数据库进行全模式导出时,若目标数据库使用 Oracle 12c(12.1)或更高版本,可以指定 Data Pump VERSION=12 参数。

表空间传输操作

数据泵还可以用于在不同数据库之间传输表空间,甚至可以传输整个数据库。在 Oracle 12c 引入之前,这是迁移数据的最快方法;而在 Oracle 12c 中,使用全可传输导出/导入是迁移整个数据库的更快方式。以下是将表空间从一个数据库传输到另一个数据库的详细步骤:
1. 选择自包含的表空间集 :确保所选表空间集是自包含的,以便顺利进行传输。
2. 验证表空间的自包含性 :使用 TRANSPORT_SET_CHECK 过程验证表空间是否自包含。例如,要传输包含 TESTx 模式的 11.2.0.3 数据库中的 EXAMPLE 表空间到 12.1 版本的可插拔数据库 pdborcl ,需要先执行以下操作:

SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('example', TRUE);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM transport_set_violations;
no rows selected

若查询 TRANSPORT_SET_VIOLATIONS 视图没有返回结果,则表示 EXAMPLE 表空间是自包含的,可以继续后续操作。
3. 设置表空间为只读模式并生成可传输表空间集 :在源数据库中,将 EXAMPLE 表空间设置为只读模式,并生成可传输表空间集。可传输表空间集由与所有要传输的表空间相关的数据文件组和包含这些表空间结构信息(仅元数据)的导出转储文件组成。操作命令如下:

SQL> ALTER TABLESPACE example READ ONLY;
Tablespace altered.
$ expdp fcomunoz/alvarez dumpfile=transp_example_06192013.dmp directory=datapump transport_tablespaces=example logfile=transp_example_06192013.log

也可以使用 NETWORK_LINK 避免生成导出操作,从而无需生成转储文件。同时,在导出操作中使用 TRANSPORT_FULL_CHECK=Y 参数可以验证表空间是否自包含,若表空间不自包含,导出操作将失败。
4. 复制可传输表空间集到目标数据库 :使用任何文件传输方法(如 Linux 上的 SFTP)将创建的可传输表空间集(导出转储文件和与 EXAMPLE 表空间关联的所有数据文件)复制到目标数据库。若源平台的字节序格式与目标平台不同,可以使用以下方法之一转换数据文件:
- 使用 DBMS_FILE_TRANSFER 包中的 GET_FILE PUT_FILE 过程传输数据文件,这些过程会自动将数据文件转换为目标平台的字节序格式。
- 使用 RMAN CONVERT 命令将数据文件转换为目标平台的字节序格式。可以查询 V$TRANSPORTABLE_PLATFORM 视图检查每个平台的字节序格式。
5. (可选步骤)将表空间恢复为读写模式 :在完成步骤 3 后,可以使用以下命令将源数据库中的 EXAMPLE 表空间恢复为读写模式:

SQL> ALTER TABLESPACE example READ WRITE;
Tablespace altered.
  1. 在目标数据库中导入表空间集 :首先,需要导入导出的元数据。若导出表空间中的模式在目标数据库中不存在,应在执行导入之前创建该模式,或者使用 REMAP_SCHEMA 参数将所有权迁移到现有模式。示例操作如下:
SQL> CREATE USER testx IDENTIFIED BY alvarez;
User created.
SQL> GRANT CREATE SESSION, RESOURCE TO testx;
Grant succeeded.
$ impdp fcomunoz/alvarez@pdborcl dumpfile=transp_example_06192013.dmp directory=datapump transport_datafiles='/u01/app/oracle/oradata/pdborcl/ts_example_01.dbf'

若要传输多个数据文件,可在 TRANSPORT_DATAFILES 参数中使用逗号分隔,例如:

TRANSPORT_DATAFILES='/u01/app/oracle/oradata/pdborcl/ts_example_01.dbf', '/u01/app/oracle/oradata/pdborcl/ts_example_02.dbf'

导入操作完成后,所有导入的表空间将保持与导出时源数据库中相同的只读模式。
7. 将导入的表空间设置为读写模式 :若需要,可以使用以下命令将导入的表空间设置为读写模式:

SQL> ALTER TABLESPACE example READ WRITE;
Tablespace altered.

此外,Oracle Database 12c Release 1 支持使用备份集和映像副本在不同平台之间传输数据。 BACKUP CONVERT 命令中的新子句 ALLOW INCONSISTENT 可以创建一个或多个表空间的跨平台不一致备份。可以在表空间仍处于读写模式时创建不一致备份,第一个不一致备份是 0 级增量备份,之后可以创建多个跨平台 1 级增量备份,最终的跨平台增量备份必须是一致备份,需要将表空间设置为只读模式。

数据泵闪回操作

在导出数据时,可以结合数据泵和闪回功能进行时间点导出。通过 FLASHBACK_TIME 参数指定时间戳,或使用 FLASHBACK_SCN 参数指定特定的 SCN。若使用 FLASHBACK_TIME 选项,数据库将查找最接近指定时间的 SCN,并使用该 SCN 启用闪回实用程序,导出操作将使用与此 SCN 一致的数据进行。例如,要导出 TEST 模式下 EMPLOYEE 表 30 分钟前的数据,可以使用以下命令:

$ expdp directory=datapump dumpfile=employee_flashback_06192013.dmp flashback_time="to_timestamp('19-06-2013 14:30:00', 'dd-mm-yyyy hh24:mi:ss')"

不过,这种操作存在一些限制:
- FLASHBACK_TIME FLASHBACK_SCN 相互排斥,不能同时使用。
- FLASHBACK_TIME 参数仅适用于 Oracle 数据库的闪回查询功能,不适用于闪回数据库、闪回删除或闪回数据归档。
- 在 impdp 操作中使用时,需要与 NETWORK_LINK 参数结合使用。
- 不能使用早于更改表结构的 DDL 操作的时间点。可以使用以下 SQL 查询特定时间点的正确 SCN:

SELECT TIMESTAMP_TO_SCN(TO_DATE('2013-07-07:16:04:45','YYYY-MM-DD:HH24:MI:SS')) FROM v$database;

当然,需要根据实际需求更改 SQL 中的日期和时间。

数据泵作业状态监控

数据泵的导出和导入客户端实用程序可以轻松连接到正在运行或已停止的作业,支持日志模式和交互式命令模式。在日志模式下,作业执行期间会自动显示实时详细状态信息,包括作业和参数描述、待处理数据量估计、当前操作或处理项描述、作业使用的文件、遇到的错误以及最终作业状态(停止或完成)。在交互式命令模式下,需要使用 STATUS 命令请求显示作业状态,显示的信息包括作业描述和状态、当前操作或处理项描述、正在写入的文件以及作业的累积状态。

还可以通过查询以下视图来确定作业状态或获取有关任何数据泵作业的其他信息:
| 视图名称 | 描述 |
| ---- | ---- |
| DBA_DATAPUMP_JOBS | 所有活动的数据泵作业及其状态 |
| USER_DATAPUMP_JOBS | 用户活动数据泵作业的摘要 |
| DBA_DATAPUMP_SESSIONS | 所有连接到数据泵作业的活动用户会话 |
| V$SESSION_LONGOPS | 显示每个活动数据泵作业的进度,进度以表数据传输的兆字节估计值表示 |

V$SESSION_LONGOPS 视图中与数据泵作业相关的列如下:
| 列名 | 描述 |
| ---- | ---- |
| USERNAME | 作业所有者 |
| OPNAME | 作业名称 |
| TARGET_DESC | 作业操作 |
| SOFAR | 作业期间到目前为止已传输的兆字节数 |
| TOTALWORK | 作业中估计的兆字节数 |
| UNITS | 兆字节(MB) |
| MESSAGE | 格式化的状态消息,格式为: job_name: operation_name: nnn out of mmm MB done |

此外,在执行导出或导入操作时使用 METRICS=YES 参数,数据泵日志文件将记录对象数量和经过的时间。

性能调优建议

为了提高导出和导入操作的性能,可以参考以下建议:
- 始终排除统计信息 :自数据泵(10.1 版本)引入以来,导出和导入统计信息的速度非常慢。因此,尽可能在导出时排除统计信息,若导出中包含统计信息,则在导入操作中排除它们,并在导入完成后重新生成统计信息。
- 使用并行性 :此功能需要企业版和额外的许可证。在加载或卸载数据时,充分利用可用资源以提高数据泵性能。可以通过交互式命令模式动态更改并行度,在非高峰时段提高并行度,在高峰时段降低并行度。使用并行性时,不要忘记在生成转储文件时使用通配符 %U
- 使用可传输表空间或全可传输导出/导入 :这是在不同数据库和平台之间移动数据的最快方法。若无法使用该方法,可以考虑使用网络模式导入。

表空间传输流程
graph LR
    A[选择自包含表空间集] --> B[验证表空间自包含性]
    B --> C[设置表空间为只读并生成集]
    C --> D[复制集到目标数据库]
    D --> E{是否恢复读写模式}
    E -- 是 --> F[恢复表空间读写模式]
    E -- 否 --> G[在目标数据库导入表空间集]
    F --> G
    G --> H[设置导入表空间为读写模式]
OEM12c 和 SQL Developer 的应用

许多 Oracle DBA 仍在使用传统方法(如 UNIX 脚本和 crontab)来执行使用 RMAN 或数据泵的计划备份和恢复操作。而 Oracle Enterprise Manager 12c(OEM12c R3)云控制和 SQL Developer 为这些操作提供了更便捷的途径,它们不仅能提高生产力、降低维护成本、实现集中管理,还能减少备份和恢复操作中的人为错误。下面将详细介绍如何使用 OEM12c 进行备份和恢复相关设置。

配置备份、恢复和目录设置

在 OEM12c 中配置数据库备份、恢复和目录设置时,这里仅介绍磁盘备份相关内容。具体步骤如下:
1. 导航到备份设置页面 :首先,在 OEM12c 容器数据库主菜单中,选择“可用性”|“备份与恢复”,然后点击“备份设置”。
2. 配置设备设置
- 磁盘设置 :在“磁盘设置”部分,可以设置以下参数:
- 并行性 :设置并发流到磁盘驱动的数量。
- 磁盘备份位置 :默认情况下,磁盘备份的位置是数据库的快速恢复区,也可以输入新的磁盘位置来覆盖默认设置。
- 磁盘备份类型 :有三种选项可供选择,分别是“备份集”、“压缩备份集”和“映像副本”。设置完所有磁盘设置后,可以点击“测试磁盘备份”选项来验证设置是否正确,但需要在页面底部输入主机凭据才能进行测试。
- 磁带设置 :此步骤与磁盘设置类似,如果不进行磁带备份,可以跳过该部分。
- Oracle 安全备份域设置 :这是一个可选部分,由于超出了本文的范围,这里不做详细介绍。
- 媒体管理设置和主机凭据 :需要输入运行目标数据库的服务器的主机凭据。
3. 配置备份集设置 :切换到“备份集”选项卡继续配置。重要的设置信息如下:
- 最大备份片(文件)大小 :可以输入每个备份片的限制值,单位可以是 KB、MB 或 GB。如果不需要限制备份片的大小,可以留空。
- 压缩算法 :可以指定用于磁盘和磁带压缩备份集的压缩算法。需要注意的是,只有“BASIC”选项是免费的,如果选择“LOW”、“MEDIUM”或“HIGH”,则需要获得高级压缩选项的许可。
- 优化加载 :该选项控制预压缩过程,确保 RMAN 优化 CPU 使用并避免预压缩块处理。如果不选择该选项,RMAN 将使用额外的 CPU 资源进行预压缩块处理。
4. 配置策略设置 :切换到“策略”选项卡,查看并设置相关选项。
- 备份策略
- 自动备份控制文件和 SPFILE :如果选择此选项,在执行备份操作或数据库结构发生变化时,将自动生成数据库控制文件和 SPFILE 的备份。如果需要在数据库快速恢复区之外的其他位置生成这些备份,则需要输入自动备份磁盘位置。
- 优化整个数据库备份 :选择此选项将优化整个备份,跳过已备份的未更改文件(如只读和离线数据文件)。
- 启用块更改跟踪 :选择此选项将使用块更改跟踪来提高任何增量备份的性能。如果未指定位置和文件名,将自动为您创建一个 Oracle 管理文件。
- 排除表空间 :可以指定在执行整个数据库备份时要排除的任何表空间。如果某个表空间包含在此处,则只能使用“BACKUP TABLESPACE”和“BACKUP DATABASE NOEXCLUDE”命令来备份该表空间。
- 设置备份保留策略 :以下选项是互斥的:
- 保留所有备份 :选择此选项后,需要手动删除数据库的任何备份以释放磁盘空间。
- 指定保留天数 :可以指定备份的保留天数。
- 冗余度 :可以指定每个数据文件应保留的完整备份数量。
- 归档重做日志删除策略 :有两个选项可供选择:
- :不使用归档重做日志文件的删除策略。
- 备份特定次数后 :选择此选项后,输入的数字将指定何时可以删除归档重做日志文件。例如,如果输入 5,则归档重做日志文件在备份 5 次后才能被删除。

调度备份

在 OEM12c 中可以方便地调度数据库备份任务。通过设置备份的时间、频率等参数,确保数据库的定期备份。例如,可以设置每天晚上进行全量备份,每周进行一次增量备份等。具体操作步骤如下:
1. 在 OEM12c 中导航到相关备份调度页面。
2. 选择备份类型(如全量备份、增量备份等)。
3. 设置备份的时间和频率。
4. 配置备份的存储位置和其他相关参数。
5. 保存设置,完成备份调度。

创建恢复点

恢复点是数据库在某个时间点的快照,可以在需要时将数据库恢复到该时间点。在 OEM12c 中创建恢复点的步骤如下:
1. 进入 OEM12c 的相关恢复点创建界面。
2. 指定恢复点的名称和时间点。
3. 确认设置,创建恢复点。

理解数据库导出/导入操作

OEM12c 提供了图形化界面来执行数据库的导出和导入操作,操作步骤如下:
1. 打开 OEM12c 的数据库导出/导入界面。
2. 选择导出或导入的类型(如全量导出、部分导出等)。
3. 配置相关参数,如导出文件的位置、导入的目标数据库等。
4. 执行导出或导入操作。

熟悉 SQL Developer 3.2

SQL Developer 3.2 引入了用于 RMAN 和数据泵的 DBA 导航器 GUI 界面。通过该界面,DBA 可以更方便地执行备份和恢复操作,例如:
- 直观地配置备份和恢复任务。
- 监控备份和恢复操作的进度。
- 查看操作的日志和结果。

总结

通过本文的介绍,我们详细了解了高级数据泵的多种操作(包括数据导入、数据库降级、表空间传输、闪回操作、作业状态监控和性能调优)以及 OEM12c 和 SQL Developer 在备份和恢复操作中的应用。这些工具和技术为数据库管理员提供了强大的支持,能够提高工作效率、降低管理成本,并减少人为错误。在实际工作中,合理运用这些工具和方法,将有助于更好地管理和维护数据库。

操作步骤总结表格

操作类型 操作步骤
高级数据泵数据导入 1. 使用 impdp 命令导入数据;2. 若在同一服务器导入,使用 REMAP_DATAFILE 参数;3. 检查导入日志;4. 若有 RMAN 目录,执行 UPGRADE CATALOG 命令两次
高级数据泵数据库降级 使用 expdp 命令并设置 VERSION 参数为目标数据库版本
高级数据泵表空间传输 1. 选择自包含表空间集;2. 验证自包含性;3. 设置表空间为只读并生成集;4. 复制集到目标数据库;5. 可选恢复表空间读写模式;6. 在目标数据库导入表空间集;7. 设置导入表空间为读写模式
高级数据泵闪回操作 使用 expdp 命令并设置 FLASHBACK_TIME FLASHBACK_SCN 参数
高级数据泵作业状态监控 1. 使用日志模式或交互式命令模式;2. 查询相关视图( DBA_DATAPUMP_JOBS 等)
OEM12c 配置备份设置 1. 导航到备份设置页面;2. 配置设备、备份集和策略设置
OEM12c 调度备份 1. 导航到备份调度页面;2. 选择备份类型;3. 设置时间和频率;4. 配置存储位置等参数;5. 保存设置
OEM12c 创建恢复点 1. 进入恢复点创建界面;2. 指定名称和时间点;3. 确认设置
OEM12c 数据库导出/导入 1. 打开导出/导入界面;2. 选择类型;3. 配置参数;4. 执行操作
SQL Developer 3.2 操作 通过 DBA 导航器 GUI 界面配置、监控和查看备份恢复操作

OEM12c 配置备份设置流程图

graph LR
    A[导航到备份设置页面] --> B[配置设备设置]
    B --> C[配置备份集设置]
    C --> D[配置策略设置]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值