RMAN to Transport Data Across Platforms

跨平台传输数据

RMAN(Recovery Manager)可以用于跨平台传输数据库、数据文件和表空间:

  • 跨平台传输:支持不同字节序格式(endian formats)。
  • 基于镜像副本和备份集:使用镜像副本和备份集进行数据传输。
  • 使用不一致的表空间备份:允许使用不一致的表空间备份。

好处

  • 减少迁移平台的停机时间:有效减少迁移过程中的停机时间。
  • 压缩和多段选项:提供压缩和多段选项以优化备份和恢复过程。
  • 不在控制文件中编目:这些操作不在控制文件中编目,不用于常规的恢复操作。

2. RMAN CONVERT 命令

RMAN CONVERT命令

RMAN可以将表空间、数据文件或数据库转换为目标平台的格式:

  • 转换表空间、数据文件或数据库:将文件格式转换为目标平台的格式。
  • 不改变输入文件:转换过程中不改变原始输入文件。
  • 将转换后的文件写入输出目的地:转换后的文件将被写入指定的输出目录。
  • 可以在源平台或目标平台上转换:支持在源平台或目标平台上进行转换。
  • 需要手动启动数据传输:假定你会手动启动数据传输。

示例:

rman target sys@orcl
RMAN> ALTER TABLESPACE bartbs READ ONLY;
RMAN> CONVERT TABLESPACE bartbs TO PLATFORM 'Solaris Operating System (x86-64)' FORMAT '/tmp/transport/%U';

最小化停机时间的数据传输

考虑所需的数据库打开模式和字节序格式:

  • 数据库传输:只读模式,相同字节序格式。
  • 表空间传输:读写模式,不同字节序格式。

步骤:

  1. 创建数据库增量0级备份并应用到目标
  2. 创建增量备份并应用到目标
  3. 重复:创建和应用增量备份
  4. 执行最终的只读模式增量备份,应用它,并打开两个数据库,以确保它们一致。

使用镜像副本传输表空间

步骤:

  1. 将表空间设为只读
  2. 使用Data Pump提取元数据
  3. 检查目标平台是否使用相同的字节序格式

    • 如果是,则将数据文件和转储文件传输到目标。
    • 如果不是,则使用RMAN转换数据文件。
  4. 在目标上使用Data Pump导入元数据
  5. 将表空间设为读写模式

确定平台的字节序格式

跨平台可传输表空间:

  • 简化在数据仓库和数据集市之间移动数据。
  • 允许数据库从一个平台迁移到另一个平台。
  • 允许源和目标平台使用相同的字符集。

支持平台及其字节序格式的列表:

SELECT * FROM V$TRANSPORTABLE_PLATFORM;

确定源和目标平台的字节序格式:

SELECT tp.endian_format FROM v$transportable_platform tp, v$database sp WHERE tp.platform_name = sp.platform_name;

使用备份集传输数据

所需条件:

  • COMPATIBLE=12.0或更高
  • 只读模式:用于创建跨平台数据库备份。
  • 读写模式:用于创建跨平台表空间备份。

步骤:

  1. 检查前提条件
  2. 确定目标
  3. 进行字节序转换(如有必要)。
  4. 传输备份数据
  5. 在目标数据库上应用元数据和数据

传输表空间

步骤:

  1. 验证前提条件
  2. 在源数据库中启动RMAN会话
  3. 查询目标平台的确切名称
  4. 将表空间改为只读模式
RMAN> ALTER TABLESPACE test READ ONLY;
  1. 执行跨平台传输备份和Data Pump导出

    • 在目标主机上转换:
    RMAN> BACKUP FOR TRANSPORT FORMAT '/bkp/test.bck' DATAPUMP FORMAT '/bkp/test_meta.bck' TABLESPACE test;
    • 在源主机上转换:
    RMAN> BACKUP TO PLATFORM 'HP Tru64 UNIX' FORMAT '/bkp/test.bck' DATAPUMP FORMAT '/bkp/test_meta.bck' TABLESPACE test;
  2. 移动备份集和Data Pump导出转储文件到目标主机
  3. 连接到目标主机
  4. 恢复跨平台传输的备份和Data Pump导出
RMAN> RESTORE FOREIGN TABLESPACE test FORMAT '/oracle/test.dbf' FROM BACKUPSET '/bkp/test.bck' DUMP FILE FROM BACKUPSET '/bkp/test_meta.bck';

传输不一致的表空间

步骤:

  1. 创建跨平台不一致增量备份,使用ALLOW INCONSISTENT子句。
  2. 恢复不一致的跨平台表空间备份,使用RESTORE FOREIGN TABLESPACE命令。
  3. 使用跨平台增量备份恢复已恢复的数据文件副本,使用RECOVER FOREIGN DATAFILECOPY命令。

示例1:使用RMAN和Data Pump在不同平台之间传输表空间

将Oracle数据库中的一个表空间从Linux平台迁移到Solaris平台。

  1. 在源平台(Linux)上将表空间设为只读
ALTER TABLESPACE example READ ONLY;
  1. 使用Data Pump导出元数据
expdp system/password@orcl DIRECTORY=dump_dir DUMPFILE=example.dmp LOGFILE=example_exp.log TRANSPORT_TABLESPACES=example
  1. 使用RMAN转换数据文件格式
rman target sys/password@orcl

RMAN> CONVERT TABLESPACE example TO PLATFORM 'Solaris Operating System (x86-64)' FORMAT '/tmp/example_%U';
  1. 将转换后的数据文件和转储文件复制到目标平台(Solaris)
  2. 在目标平台(Solaris)上将表空间设为读写
rman target sys/password@orcl

RMAN> ALTER TABLESPACE example READ WRITE;
  1. 使用Data Pump导入元数据
impdp system/password@orcl DIRECTORY=dump_dir DUMPFILE=example.dmp LOGFILE=example_imp.log TRANSPORT_TABLESPACES=example

示例2:使用RMAN和Data Pump在不同平台之间传输数据库

将整个数据库从Linux平台迁移到Windows平台。

  1. 在源平台(Linux)上将数据库设为只读
ALTER DATABASE OPEN READ ONLY;
  1. 使用Data Pump导出数据库
expdp system/password@orcl FULL=Y DIRECTORY=dump_dir DUMPFILE=full_db.dmp LOGFILE=full_db_exp.log
  1. 使用RMAN转换数据文件格式
rman target sys/password@orcl

RMAN> CONVERT DATABASE TO PLATFORM 'Microsoft Windows IA (32-bit)' FORMAT 'C:\oracle\datafile\%U';
  1. 将转换后的数据文件和转储文件复制到目标平台(Windows)
  2. 在目标平台(Windows)上将数据库设为读写
rman target sys/password@orcl

RMAN> ALTER DATABASE OPEN READ WRITE;
  1. 使用Data Pump导入数据库
impdp system/password@orcl FULL=Y DIRECTORY=dump_dir DUMPFILE=full_db.dmp LOGFILE=full_db_imp.log

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




像0-1的学习,提供全面的学习资源和社群,多种副业选择,总有一个适合你。


本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝