11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 1389592.1)
最近,oracle support网站有大的改变,正好需要研究这个内容,就记录一下,新的文档编号:KB134922
概要
本说明描述了此程序的旧版本 V3。除非绝对必要,否则不应使用。
要使用 XTTs,请使用:
V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1) ( KB147608)
本文其余的详细信息仅与 XTTs V3 相关。
1、文档Doc ID 1389592.1,介绍的是XTTS方法的V3版本
2、文档Doc ID 2471245.1,介绍的是XTTS方法的V4版本
3、V3和V4的区别是V4的命令更加简单 ,都可以用跨平台复制减少停机时间。
4、V3和V4都是理论上停机时间是最后一次增量备份和元数据的导出导入时间。
当使用跨平台可移植表空间(XTTS)在不同大端格式系统之间迁移数据时,所需停机时间可能相当长,因为它与要移动的数据集大小成正比。然而,将 XTTS 与跨平台增量备份结合使用可以显著减少在不同平台之间移动数据所需的停机时间。
Traditional Cross Platform Transportable Tablespaces(传统跨平台可移植表空间)
典型 XTTS 场景中的高级步骤如下:
- 将源数据库中的表空间设置为只读
- 将数据文件传输到目标系统
- 将数据文件转换为目标系统字节序格式
- 使用数据泵从源数据库导出表空间中对象的元数据。
- 使用数据泵将表空间中的对象元数据导入目标数据库
- 将目标数据库中的表空间设置为可读写
Reduce Downtime using Cross Platform Incremental Backup(使用跨平台增量备份减少停机时间)
为了减少 XTTS 所需的停机时间,Oracle 增强了 RMAN 在跨平台场景下使用增量备份向前滚动数据文件副本的能力。通过使用一系列越来越小的增量备份,可以在需要任何停机时间之前,将目标系统中的数据几乎与源系统保持同步。当结合 XTTS 和跨平台增量备份时,数据文件传输和转换所需的停机时间现在与源系统中数据块更改的速率成正比。
跨平台增量备份功能不会影响执行 XTTS 的其他操作所需的时间,例如元数据导出和导入。因此,对于包含大量元数据(DDL)的数据库,跨平台增量备份的效益将有限,因为迁移时间通常由元数据操作主导,而非数据文件传输和转换。
只有那些物理位于正在迁移的表空间中的数据库对象会被复制到目标系统。如果您需要迁移位于不同表空间中的其他对象(例如,位于 SYSTEM 表空间的 PL/SQL 对象、序列等),您可以使用数据泵将这些对象复制到目标系统。
使用跨平台增量备份功能的高级步骤如下:
-
准备阶段(源数据保持在线)
- 将数据文件传输到目标系统
- 如有必要,将数据文件转换为目标系统的字节序格式
-
前进阶段(源数据保持在线 - 根据需要重复此阶段,以使目标数据文件副本与源数据库保持同步)
- 在源系统上创建增量备份
- 将增量备份传输到目标系统
- 将增量备份转换为目标系统的字节序格式,并将其应用到目标数据文件副本上
注意:在版本 3 中,如果将数据文件添加到表空间或向 xtt.properties 文件添加新的表空间名称,将需要警告和额外的说明。
-
运输阶段(源数据为只读)
- 将源数据库中的表空间设置为只读
- 重复执行一次向前滚动阶段
- 这一步使目标数据文件副本与源数据库保持一致。
- 处理大量数据时,这一步所需的时间比传统的 XTTS 方法显著更短,因为增量备份的大小更小。
- 使用数据泵从源数据库导出表空间中对象的元数据。
- 使用数据泵将表空间中的对象元数据导入目标数据库
- 将目标数据库中的表空间设置为可读写
只要满足以下列出的平台和数据库的先决条件,源系统可以是任何平台。
如果你是从一个小端平台迁移到 Oracle Linux,那么应该首先考虑的迁移方法是 Data Guard。有关当前小端平台和 Oracle Linux 之间 Data Guard 的异构平台支持详情,请参阅<Note 413484.1>。
解决方案
概述
本文件提供了一个将名为 TS1 和 TS2 的两个表空间从 Oracle Solaris SPARC 系统迁移到运行 Oracle Linux 的 Oracle Exadata 数据库机的流程示例,并结合了 Oracle 跨平台增量备份功能以减少停机时间。
在完成初始设置阶段后,数据移动分为以下三个阶段:
Prepare phase 准备阶段
在准备阶段,将要传输的表空间的文件副本被传输到目标系统并转换。正在迁移的应用程序在准备阶段完全可用。准备阶段可以使用 RMAN 备份或dbms_file_transfer. 参考选择准备阶段方法部分了解选择准备阶段方法的详细信息。
Roll Forward phase 前滚阶段
在正向回滚阶段,准备阶段转换的数据文件副本使用从源数据库获取的增量备份进行正向回滚。通过多次执行此阶段,每个后续的增量备份都会变得更小且应用更快,使目标系统中的数据几乎与源系统保持同步。正在迁移的应用程序在正向回滚阶段完全可用。
Transport phase 传输阶段
在传输阶段,正在传输的表空间被设置为只读模式,并从源数据库中执行最终增量备份,然后将备份应用于目标系统上的数据文件副本,使目标数据文件副本与源数据库保持一致。一旦数据文件变得一致,就从源数据库中执行 TTS 导出,并将 TTS 导入到目标数据库中。最后,将表空间设置为读写模式,以便在目标数据库上进行完全访问。正在迁移的应用程序在传输阶段无法接收任何更新。
Cross Platform Incremental Backup Supporting Scripts(跨平台增量备份支持脚本)
跨平台增量备份的核心功能在 Oracle Database 11.2.0.4 及更高版本中提供。有关详细信息,请参阅要求和推荐部分。此外,本文件附加了一组支持脚本(位于rman-xttconvert_3.0.zip文件中),用于管理执行跨平台增量备份 XTTS 所需的流程。两个主要的支持脚本文件如下:
- Perl 脚本 xttdriver.pl - 执行 XTTS 跨平台增量备份步骤的主要脚本的脚本。
- 参数文件 xtt.properties - 包含您特定站点配置的文件。
要求和建议
前提条件
开始此程序前必须满足以下前提条件:
- 可移动表空间的相关限制和注意事项仍需遵守。它们在以下手册中定义:
- 除了可移动表空间的限制和注意事项外,还必须满足以下条件:
- 当前版本不支持 Windows。
- 源数据库必须运行 10.2.0.3 或更高版本。
- 跨平台仅在企业版中可行。此过程不能用于标准版。
- 源数据库的 COMPATIBLE 参数必须设置为 10.2.0 或更高版本。
- 源数据库的 COMPATIBLE 参数不能大于目标数据库的 COMPATIBLE 参数。
- 源数据库必须在 ARCHIVELOG 模式下。
- 目标数据库必须运行 11.2.0.4 或更高版本。
- 虽然首选的目标系统是 Linux(64 位 Oracle Linux 或认证版的 RedHat Linux),但此过程也可用于其他基于 UNIX 的操作系统。
- 源数据库的 Oracle 版本必须低于或等于目标版本。因此,此过程可用作升级方法。可传输表空间将适用限制。
- MAN 的默认设备类型应配置为 DISK
- 源系统上的 RMAN 不能配置 DEVICE TYPE DISK 与 COMPRESSED。如果这样,过程可能会返回:ORA-19994:跨平台压缩备份的不同字节序。
- 正在移动的表空间集必须全部在线,且不包含离线数据文件。表空间必须是 READ WRITE。只读的表空间可以使用正常的 XTTS 方法移动。对于始终是只读的表空间,无需包含跨平台增量备份来移动。
- 此过程中的所有步骤都作为属于 OSDBA 组的 oracle 用户运行。使用 OS 认证连接到源数据库和目标数据库。
- 如果选择的准备阶段方法是 dbms_file_transfer,则目标数据库必须是 11.2.0.4。有关详细信息,请参阅“选择准备阶段方法”部分。
- 如果选择的准备阶段方法是 RMAN 备份,则源系统和目标系统都需要设置暂存区。有关详细信息,请参阅“选择准备阶段方法”部分。
- 不支持对此过程在备用数据库或快照备用数据库上执行。
- 如果目标数据库版本是 11.2.0.3 或更低版本,则需要在目标系统上设置一个包含 11.2.0.4 的独立数据库家目录,并运行 11.2.0.4 实例来执行增量备份转换。有关详细信息,请参阅“目标数据库 11.2.0.3 及更早版本需要独立的增量转换家目录和实例”部分。如果使用 ASM 作为 11.2.0.4 转换家目录,则 ASM 需要是 11.2.0.4 版本,否则会引发错误 ORA-15295(例如 ORA-15295: ASM 实例软件版本 11.2.0.3.0 低于客户端版本 11.2.0.4.0)。
整个数据库迁移
如果使用跨平台增量备份来减少整个数据库迁移的停机时间,那么本文件中的步骤可以与 MAA 论文《使用可传输表空间进行平台迁移:Oracle 数据库 11g》中提供的 XTTS 指南相结合。
选择准备阶段方法
在准备阶段,要传输的表空间的文件被传输到目标系统,并由 xttdriver.pl 脚本进行转换。有两种可能的方法:
- 使用 dbms_file_transfer(DFT)传输(使用 xttdriver.pl -S 和-G 选项)
- 使用 Recovery Manager(RMAN)RMAN 备份(使用 xttdriver.pl -p 和-c 选项)
dbms_file_transfer 方法使用dbms_file_transfer.get_file()子程序通过数据库链接将数据文件从源系统传输到目标系统。与 RMAN 方法相比,dbms_file_transfer 方法具有以下优势:1)它不需要在源系统或目标系统上预留暂存区空间;2)数据文件转换在传输过程中自动进行——没有单独的转换步骤。dbms_file_transfer 方法需要以下条件:
- 运行 11.2.0.4 版本的目标数据库。注意,增量转换家或实例不参与 dbms_file_transfer 文件传输。
- 源数据库中用于复制数据文件的数据库目录对象。
- 目标数据库中用于存放数据文件的数据库目录对象。
- 目标数据库中的数据库链接,引用源数据库。
RMAN 备份方法在源系统上运行 RMAN,以创建要传输的数据文件的备份。然后必须手动将备份文件通过网络传输到目标系统。在目标系统上,如果需要,RMAN 会转换数据文件。RMAN 转换的输出将数据文件放置在其最终位置,目标数据库将在此使用它们。在 xttdriver.pl 的原始版本中,这是唯一支持的方法。RMAN 备份方法需要以下内容:
- 源系统和目标系统都需要为 RMAN 创建的数据文件副本设置暂存区。暂存区使用参数 dfcopydir 和 stageondest 在 xtt.properties 文件中引用。转换后的数据文件最终存放的位置使用参数 storageondest 在 xtt.properties 文件中引用。有关详细信息和尺寸指南,请参阅配置文件 xtt.properties 部分的参数描述。
使用每种方法的详细说明见下文说明。推荐的方法是 dbms_file_transfer 方法。
目标数据库 11.2.0.3 或更早版本需要单独的增量转换家目录和实例
跨平台增量备份的核心功能(即增量备份转换)在 Oracle Database 11.2.0.4 及更高版本中提供。如果目标数据库版本为 11.2.0.4 或更高版本,则目标数据库可以执行此功能。但是,如果目标数据库版本为 11.2.0.3 或更早版本,那么为了执行增量备份转换,必须安装一个单独的 11.2.0.4 软件家目录,称为增量转换家目录,并使用该家目录以 NOMOUNT 状态启动一个称为增量转换实例的实例。增量转换家目录和增量转换实例是临时的,仅在迁移期间使用。
注意,因为 dbms_file_transfer 的 Prepare Phase 方法需要目标数据库 11.2.0.4,该数据库可用于执行增量备份转换功能(如上所述),所以增量转换家目录和增量转换实例通常仅在 Prepare Phase 方法为 RMAN 备份时适用。
有关设置临时增量转换实例的详细信息,请参阅第 1 阶段中的说明。
故障排除
已知问题
Transport Tablespaces with Reduced Downtime using Cross Platform Incremental Backup(使用跨平台增量备份减少传输表空间停机时间)
XTTS 跨平台增量备份流程分为以下四个阶段:
Phase 1 - Initial Setup phase
第一阶段 - 初始设置阶段
Phase 2 - Prepare phase
第二阶段 - 准备阶段
Phase 3 - Roll Forward phase
第三阶段 - 正向回滚阶段
Phase 4 - Transport phase
阶段 4 - 传输阶段
步骤 1.1 - 安装目标数据库软件并创建目标数据库
在目标系统上安装所需的 Oracle 数据库软件,该系统将运行目标数据库。强烈建议使用 Oracle Database 11.2.0.4 或更高版本。请注意,dbms_file_transfer 的 Prepare Phase 方法要求目标数据库为 11.2.0.4。
在目标系统上识别(或创建)一个数据库,用于传输表空间,并创建传输表空间所需的架构用户。
步骤 1.2 - 如有必要,配置增量转换主页和实例
参见目标数据库 11.2.0.3 及更早版本需要单独的增量转换 Home 和实例部分以获取详细信息。
步骤 1.3 - 确定要传输的表空间
识别源数据库中将要传输的表空间。本文档中的示例将使用表空间 TS1 和 TS2。如前所述,传输表空间仍然必须遵循其限制和注意事项。
步骤 1.4 - 如果使用 dbms_file_transfer 准备阶段方法,则配置目录对象和数据库链接
请注意,dbms_file_transfer 准备阶段方法要求目标数据库为 11.2.0.4。
如果使用 dbms_file_transfer 作为准备阶段方法,则必须创建三个数据库对象:
- 源数据库中用于复制数据文件的数据库目录对象
- 目标数据库中用于存放数据文件的数据库目录对象
- 目标数据库中引用源数据库的数据库链接
源数据库目录对象引用源数据库中数据文件当前所在的位置。例如,要创建引用 ASM 位置+DATA/prod/datafile 中数据文件的目录对象 sourcedir,连接到源数据库并运行以下 SQL 命令:
SQL@source> create directory sourcedir as '+DATA/prod/datafile';
目标数据库目录对象引用了数据文件在目标系统上的存放位置。这应该是数据文件在使用时在目标数据库中的最终存放位置。例如,要创建目录对象 dstdir,将传输的数据文件放置在 ASM 位置+DATA/prod/datafile,请连接到目标数据库并运行以下 SQL 命令:
SQL@dest> create directory destdir as '+DATA/prod/datafile';
数据库链接在目标数据库中创建,引用源数据库。例如,要创建名为 ttslink 的数据库链接,请运行以下 SQL 命令:
SQL@dest> create public database link ttslink connect to system identified by <password> using '<tns_to_source>';
验证数据库链接能否正确访问源系统:
SQL@dest> select * from dual@ttslink;
步骤 1.5 - 创建暂存区
在源系统和目标系统上创建暂存区,具体按照以下 xtt.properties 参数定义:backupformat、backupondest。
此外,如果在准备阶段使用 RMAN 备份,请在源系统和目标系统上创建暂存区,具体按照以下 xtt.properties 参数定义:dfcopydir、stageondest。
步骤 1.6 - 在源系统上安装 xttconvert 脚本
在源系统上,以 oracle 软件所有者的身份,下载并解压作为文档rman-xttconvert_3.0.zip附带的辅助脚本。
[oracle@source]$ pwd
/home/oracle/xtt
[oracle@source]$ unzip rman_xttconvert_v3.zip
Archive: rman_xttconvert_v3.zip
inflating: xtt.properties
inflating: xttcnvrtbkupdest.sql
inflating: xttdbopen.sql
inflating: xttdriver.pl
inflating: xttprep.tmpl
extracting: xttstartupnomount.sql
步骤 1.7 - 在源系统上配置 xtt.properties
使用您特定站点的配置编辑源系统上的 xtt.properties 文件。有关 xtt.properties 文件中参数的更多信息,请参阅附录中“配置文件 xtt.properties 中的参数说明”部分。
步骤 1.8 - 将 xttconvert 脚本和 xtt.properties 复制到目标系统
作为 Oracle 软件的所有者,将所有 xttconvert 脚本和修改后的 xtt.properties 文件复制到目标系统
[oracle@source]$ scp -r /home/oracle/xtt dest:/home/oracle/xtt
步骤 1.9 - 设置 TMPDIR
在源系统和目标系统的 shell 环境中,将环境变量 TMPDIR 设置为支持脚本所在的路径。使用此 shell 运行 Perl 脚本 xttdriver.pl,如下面的步骤所示。如果未设置 TMPDIR,输出文件将创建在 /tmp 中,输入文件也预期位于 /tmp。
[oracle@source]$ export TMPDIR=/home/oracle/xtt
[oracle@dest]$ export TMPDIR=/home/oracle/xtt
第二阶段 - 准备阶段
在准备阶段,将要传输的表空间的数据库文件被传输到目标系统,并由 xttdriver.pl 脚本进行转换。有两种可能的方法:
第二阶段 A - dbms_file_transfer 方法
第二阶段 B - RMAN 备份方法
根据上方"需求与建议"部分提供的信息,选择并使用以下方法之一。
注意:对于大量文件,使用 dbms_file_transfer 已被发现是传输数据文件到目标位置最快的方法。
第二阶段 A - 准备 dbms_file_transfer 方法的阶段
仅当选择的准备阶段方法为 dbms_file_transfer 且设置说明已完成后,才使用第 2A 阶段的步骤,特别是第 1.4 步中的说明。
在此阶段,要传输的表空间的数据库文件将直接从源系统传输到目标系统,并放置在目标数据库最终使用的位置。如果需要转换,将在传输过程中自动完成。无需单独的转换步骤。本阶段的步骤只运行一次。在此阶段,正在传输的数据在源数据库中完全可访问。
第 2A.1 步 - 在源系统上运行准备步骤
在源系统上,以 oracle 用户登录,环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向源数据库,按照如下方式运行准备步骤:
[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -S
准备步骤在源系统上执行以下操作:
- 验证表空间处于在线状态,模式为 READ WRITE,并且不包含离线数据文件。
- 创建本程序后续步骤中使用的以下文件:
- xttnewdatafiles.txt
- getfile.sql
正在传输的表空间集必须全部在线,不包含离线数据文件,并且必须是可读写状态。如果源数据库中的一个或多个数据文件或表空间处于离线或只读状态,准备步骤将报错。如果表空间是只读的,并且在整个过程中保持只读状态,则可以直接使用传统的跨平台可传输表空间流程传输这些表空间。这些文件不需要增量应用。
步骤 2A.2 - 将数据文件传输到目标系统
在目标系统上,以 oracle 用户身份登录,并将环境(ORACLE_HOME 和 ORACLE_SID 环境变量)设置为目标数据库(尝试使用增量转换实例是无效的)。从源系统复制步骤 2A.1 中创建的 xttnewdatafiles.txt 和 getfile.sql 文件,并按照以下方式运行 -G get_file 步骤:
注意:此步骤将所有正在从源系统传输到目标系统的数据文件复制。此步骤完成所需的时间取决于数据文件的大小,可能需要较长时间。使用 getfileparallel 选项以实现并行处理。
[oracle@dest]$ scp oracle@source:/home/oracle/xtt/xttnewdatafiles.txt /home/oracle/xtt
[oracle@dest]$ scp oracle@source:/home/oracle/xtt/getfile.sql /home/oracle/xtt
# MUST set environment to destination database
# 必须设置目标数据库的环境
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -G
当这一步完成时,正在传输的数据文件将位于最终位置,供目标数据库使用。注意,如果需要,端序转换将在这一步自动执行。
继续进行阶段 3,为数据文件创建并应用增量备份。
阶段 3 - 前进阶段
在这个阶段,会从源数据库创建增量备份,将其传输到目标系统,转换为目标系统的字节序格式,然后应用到转换后的目标数据文件副本上以将它们向前推进。这个阶段可以多次运行。每次后续的增量备份应该比前一个增量备份花费的时间更少,并且会使目标数据文件副本与源数据库更加同步。在此阶段传输的数据是完全可访问的。
步骤 3.1 - 创建源系统上正在传输的表空间的增量备份
在源系统上,以 oracle 用户登录,环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向源数据库,按照以下方式运行创建增量步骤:
[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i
创建增量步骤执行 RMAN 命令,为 xtt.properties 中列出的所有表空间生成增量备份。它创建以下文件,用于本步骤后续操作:
- tsbkupmap.txt
- incrbackups.txt
步骤 3.2 - 将增量备份传输到目标系统
将上一步创建的增量备份文件传输到目标系统上最末端的存储位置。要复制的增量备份文件列表位于源系统上的 incrbackups.txt 文件中。
[oracle@source]$ scp cat incrbackups.txt oracle@dest:/stage_dest
步骤 3.3 - 将增量备份转换为数据文件副本并应用于目标系统上的数据文件
在目标系统上,以 oracle 用户登录,并将环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向目标数据库,从源系统复制 xttplan.txt 和 tsbkupmap.txt 文件,并按照以下方式运行 rollforward datafiles 步骤:
[oracle@dest]$ scp oracle@source:/home/oracle/xtt/xttplan.txt /home/oracle/xtt
[oracle@dest]$ scp oracle@source:/home/oracle/xtt/tsbkupmap.txt /home/oracle/xtt
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r
将增量数据文件步骤连接到增量转换实例作为 SYS,转换增量备份,然后连接到目标数据库,并对正在传输的每个表空间应用增量备份。
Note: 注意:
1. You must copy the xttplan.txt and tsbkupmap.txt files each time that this step is executed, because their content is different each iteration.
1. 每次执行此步骤时,您必须复制 xttplan.txt 和 tsbkupmap.txt 文件,因为它们的每次迭代内容都不同。
2. Do NOT change, copy or make any changes to the xttplan.txt.new generated by the script.
2. 请勿更改、复制或对脚本生成的 xttplan.txt.new 进行任何修改。
3. The destination instance will be shutdown and restarted by this process.
3. 该过程将关闭并重新启动目标实例。
步骤 3.4 - 确定下一次增量备份的 FROM_SCN
在源系统上,以 oracle 用户登录,并确保环境变量(ORACLE_HOME 和 ORACLE_SID)指向源数据库,执行确定新的 FROM_SCN 步骤,如下所示:
[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s
确定新的 FROM_SCN 步骤计算下一个 FROM_SCN,将其记录在文件 xttplan.txt 中,然后在步骤 3.1 创建下一次增量备份时使用该 SCN。
步骤 3.5 - 重复前滚阶段(阶段 3)或进入传输阶段(阶段 4)
此时有两个选择:
- 如果你需要使目标数据库中的文件与生产系统更同步,则重复前滚阶段,从步骤 3.1 开始。
- 如果目标数据库中的文件与源数据库的文件尽可能接近,则继续进行传输阶段。
注意:如果自上次增量备份以来向表空间添加了数据文件和/或向 xtt.properties 中添加了新的表空间名称,则会显示以下内容:
Error: 错误:
------
增量备份没有被执行,因为表空间中已经添加了数据文件:
请执行以下操作:
--------------------------
1. 将 fixnewdf.txt 从源复制到目标临时目录
2. 复制备份文件:
<backup list>
from <source location> to the <stage_dest> in destination
3. 在目标上运行 $ORACLE_HOME/perl/bin/perl xttdriver.pl --fixnewdf
4. 在源中重新执行增量备份:
$ORACLE_HOME/perl/bin/perl xttdriver.pl --bkpincr
注意:在运行增量备份前,请删除源临时目录中的 FAILED 文件或使用 -L 选项运行 xttdriver.pl:
$ORACLE_HOME/perl/bin/perl xttdriver.pl -L --bkpincr
必须严格按照所列指示操作。下一次增量备份将包含新的数据文件。
阶段 4 - 运输阶段
注意:确保目标数据库具有必要的对象以允许导入成功。这包括预先创建要插入表空间的表的所有者。有关可传输表空间的信息,以及 MAA 论文《使用可传输表空间进行平台迁移:Oracle 数据库 11g》中提供的指导,请参阅相关信息。
在此阶段,源数据被设置为只读,并通过创建并应用最终增量备份使目标数据文件与源数据库保持一致。在目标数据文件保持一致后,将执行正常的可传输表空间步骤,从源数据库导出对象元数据并将其导入目标数据库。在此阶段,正在传输的数据仅以只读模式访问。
步骤 4.1 - 在源数据库中将源表空间设置为只读
在源系统上,以 oracle 用户登录,并将环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向源数据库,将正在传输的表空间设置为只读。
system@source/prod SQL> alter tablespace TS1 read only;
Tablespace altered. 表空间已修改。
system@source/prod SQL> alter tablespace TS2 read only;
Tablespace altered. 表空间已更改。
步骤 4.2 - 创建最终增量备份,传输,转换,并应用到目标数据文件
重复步骤 3.1 至 3.3 最后一次,以创建、传输、转换并将最终增量备份应用于目标数据文件。
[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i
[oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/stage_dest
[oracle@source]$ scp xttplan.txt oracle@dest:/home/oracle/xtt
[oracle@source]$ scp tsbkupmap.txt oracle@dest:/home/oracle/xtt
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r
步骤 4.3 - 将对象元数据导入目标数据库
在目标系统上,以 oracle 用户登录,并确保环境变量(ORACLE_HOME 和 ORACLE_SID)指向目标数据库,执行生成 Data Pump TTS 命令步骤,如下所示:
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
生成 Data Pump TTS 命令步骤会在文件 xttplugin.txt 中创建一个示例 Data Pump 网络链接可传输导入命令,并将可传输表空间参数 TRANSPORT_TABLESPACES 和 TRANSPORT_DATAFILES 正确设置。请注意,网络链接模式会通过指向源数据库的数据库链接启动导入操作。不需要单独的导出或转储文件。如果你选择使用此命令执行表空间传输,则必须编辑导入命令,将导入参数 DIRECTORY、LOGFILE 和 NETWORK_LINK 替换为特定站点的值。
以下是一个可移植的网络模式传输导入命令的示例:
[oracle@dest]$ impdp directory=DATA_PUMP_DIR logfile=tts_imp.log network_link=ttslink \
transport_full_check=no \
transport_tablespaces=TS1,TS2 \
transport_datafiles='+DATA/prod/datafile/ts1.285.771686721', \
'+DATA/prod/datafile/ts2.286.771686723', \
'+DATA/prod/datafile/ts2.287.771686743'
在从源数据库提取传输对象元数据后,如果需要,可以再次将源数据库中的表空间设置为可读写。
如果你不使用 network_link 导入,则通过在源数据库上运行可传输模式 Data Pump Export 来执行表空间传输,将正在传输的对象元数据导出到转储文件中,然后将转储文件传输到目标系统,接着运行可传输模式 Data Pump Import 将对象元数据导入目标数据库。有关详细信息,请参阅以下手册:
- Oracle Database Administrator's Guide
- Oracle Database Utilities
步骤 4.4 - 在目标数据库中将表空间设置为读写
最后一步是在目标数据库中将目标表空间设置为可读写。
system@dest/prod SQL> alter tablespace TS1 read write;
Tablespace altered. 表空间已修改。
system@dest/prod SQL> alter tablespace TS2 read write;
Tablespace altered. 表空间已修改。
步骤 4.5 - 验证传输的数据
在这个步骤中,传输的数据在目标数据库中是只读的。执行特定于应用程序的验证以验证传输的数据。
此外,运行 RMAN 来检查物理和逻辑块损坏,方法是运行如下 TABLESPACE VALIDATE:
RMAN> validate tablespace TS1, TS2 check logical;
阶段 5 - 清理
如果为迁移创建了单独的增量转换主页和实例,则可以关闭实例并移除软件。
由该过程创建的文件不再需要,现在可以删除。它们包括以下内容:
- 源系统上的 dfcopydir 位置
- 源系统上的 backupformat 位置
- 目标系统上的 stageondest 位置
- 备份在目标系统上的最终位置
- $TMPDIR 位置在目标系统和源系统上
附录
Perl 脚本 xttdriver.pl 选项描述
下列表格描述了主支持脚本 xttdriver.pl 可用的选项。
配置文件 xtt.properties 中的参数描述
下列表格描述了 xttdriver.pl 使用的 xtt.properties 文件中定义的参数。

浙公网安备 33010602011771号