本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
阶段 3-传输阶段(源数据库为只读)
在此阶段,源系统变为只读。通过应用最终的增量备份,可以使目标系统上的数据文件与源系统保持一致。然后,从源系统导出对象元数据并将其导入目标系统。
步骤 1:将源数据库中的表空间设为只读
使用 SYSDBA,在源系统READ ONLY上传输所有表空间。
为了减少停机时间,您可以同时运行以下两个步骤。
步骤 2:创建最终的增量备份
在源系统上,创建正在传输的表空间的最终增量备份。
cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
此步骤会返回错误,例如 “ORA-20001:TABLESPACE (S) 为只读”;该错误是预料之中的,您可以放心地将其忽略。
步骤 3:导出元数据
从源数据库导出可传输表空间的元数据。
这是用于导出可传输表空间元数据的参数文件示例。
directory=dmpdir metrics=y dumpfile=xttsmeta%U.dmp filesize=1048576000 logfile=expxtts.log transport_tablespaces= APPS_TS_ARCHIVE, APPS_TS_INTERFACE, APPS_TS_MEDIA, APPS_TS_NOLOGGING, …. exclude=table_statistics,index_statistics
此外,如果源系统有许多表和索引,则可以在导出过程中排除它们的统计信息,从而节省导出时间。导入可传输表空间后,将统计数据导入目标系统。
在运行之前expdp,请创建一个数据库目录,用于存储源系统上的转储文件。
SQL> create directory dmpdir as <location>; expdp system/<system password> parfile=<parameter file>
以下两个步骤是使用 RMAN 增量备份实现跨平台可传输表空间的最后步骤。这些步骤必须按顺序执行。
步骤 4:传输文件并应用最终的增量备份
将最终的增量备份和导出转储文件传输到目标系统,进行转换并应用最终的增量备份。
用于 Direct Connect 将最终的增量备份副本和 res.txt 文件传输到目标。您可以使用 VPN 连接,但如果有足够的带宽, Direct Connect 则使用可以显著减少停机时间。
要恢复最终的增量备份,请在目标系统上使用--restore选项对每个表空间组运行以下命令。
cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
步骤 5:导入对象元数据
使用 Oracle 数据泵将对象元数据导入目标系统。运行以下命令以获取目标系统上transport_datafiles=参数的数据文件列表。
cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
每当你运行前面的命令时,你都会得到带有transport_datafiles=参数的xttplugin.txt文件。将所有xttplugin.txt文件合并为transport_datafiles=一行,然后将数据文件列表放入导入元数据的参数文件参数中。transport_datafiles
以下代码片段显示了用于在目标系统上导入可传输表空间的参数文件。
directory=dmpdir metrics=y dumpfile=xttsmeta%U.dmp logfile=impxtts.log exclude=TYPE transport_datafiles= '+EBSDATA/APPS_TS_TX_DATA_2.dbf','+EBSDATA/APPS_TS_TX_DATA_11.dbf','+EBSDATA/APPS_TS_TX_DATA_22.dbf','+EBSDATA/APPS_TS_TX_DATA_183.dbf','+EBSDATA/APPS_TS_TX_DATA_204.dbf','+EBSDATA/APPS_TS_TX_DATA_219.dbf','+EBSDATA/APPS_TS_TX_DATA_227.dbf'…..
在运行之前impdp,创建一个指向导出转储文件位置的数据库目录。
SQL> create directory dmpdir as <location>; impdp system/<system password> parfile=<parameter file>