Oracle 12c 使用(Full Transportable Export/Import)进行升级/迁移

Oracle 12c 使用(Full Transportable Export/Import)进行升级/迁移

Oracle 作者:羽化残虹 时间:2016-07-08 15:21:51 148 0

本文介绍如何通过使用新的 Oracle 数据库 12c 的完整可传输导出/导入(Full Transportable Export/Import)功能来使用较少的停机时间,将数据库升级/迁移到 Oracle 数据库 12c 中。

传统的方法,如导出/导入,数据泵导出/导入和传输表空间,仍然可以用来升级/迁移数据库到 Oracle Database12c 中。但是,Oracle 数据库 12c 现在提供了另一种方法通过使用新功能,即,所谓的完整可传输导出/导入使得迁移/升级更容易,更快,且更高效。

让我们来看看各种方法的简要比较:

通过使用数据库升级助手(DBUA)进行升级
  • 需要更多停机时间
  • 无法跨平台迁移
常规导出/导入
  • 相对较慢
  • 对于大型数据库系统不是推荐的方案
  • 可靠的迁移技术,但只建议用于 Oracle 9i 和更早版本的数据库
数据泵导出/导入(于 Oracle 数据库 10g 版本引入)
  • 用于处理大数据量
  • 取代了原来的导出/导入作为移动 Oracle 数据库之间数据的最常用的方法
  • 通过可传输表空间的方法在性能方面获得提升
可传输表空间
  • 通过拷贝数据文件到目标系统来实现更快速的升级/迁移
  • 需要额外的步骤,将用户和系统元数据移动到目标数据库
  • 非用户表空间(SYSTEM 和 SYSAUX表空间)相关联的用户对象需要手动操作
  • 源和目标有不同的 Endian 格式时,需要执行数据库文件的转换
完整可传输导出/导入
  • 同时使用可传输表空间的机制和数据泵功能
  • 可传输表空间的机制是用来移动数据库文件到目标系统来获得更快的迁移,即使是大数据量迁移。
  • 数据泵是用于移动元数据到目标数据库
  • 单一的 import 命令即可完成整个迁移
  • 能够对所有需要的用户数据和元数据进行数据库迁移

 

先决条件

在开始完整可传输导出/导入程序之前,请注意以下先决条件:

  1. 新的目标库必须是 Oracle 数据库 12c 的数据库(可以是 non-CDB(容器数据库)或 PDB(可插拔数据库))
  2. 为将要执行迁移的用户授权 DATAPUMP_IMP_FULL_DATABASE 角色
  3. 执行升级/迁移之前,设置表空间为只读
  4. 源数据库必须是 11.2.0.3 或更高版本。

 

步骤

下面是使用完全可传输导出/导入方法时的步骤:

    1. 创建新的目标Oracle数据库12c的数据库
      新创建的数据库中包含了一套管理的表空间,Oracle 提供的组件和包。正如之前提到的,它可以是一个非容器数据库或一个可插拔数据库。
    2. 检查源和目标平台的 Endian 格式
      SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_ID = d.PLATFORM_ID;
      如果 Endian 格式相同,数据文件可以直接拷贝到目标平台。否则,需要使用 RMAN 来为数据文件进行转换。
    3. 检验被迁移的表空间是自包含的
      验证是必需的。可以用来确认准备被迁移的和不被迁移的表空间,在表空间内的对象存储之间,没有逻辑或者物理上的依存关系。
      SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK(‘<User Tablespace names separated by comma operator>‘, TRUE);
      其结果可以通过检查
      SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
      如果查询返回有值,则需要在进行整个迁移操作之前解决掉依存关系。依存对象需要移动到准备迁移的表空间里。缺少该步骤,迁移对象将存在问题。
    4. 创建目录对象
      在源服务器和目标服务器上创建目录对象来存储 dump 文件。
      SQL> CREATE DIRECTORY dp_dir AS ‘<Physical location>‘;
    5. 将准备迁移的用户表空间置为只读模式
      SQL> ALTER TABLESPACE <tablespace_name> READ ONLY;
    6. 在源数据库上调用完整可传输导出。它将导出元数据和存储在管理表空间中的用户对象。
      在目标端数据泵导入(impdp)过程中如果使用 database link,则可以忽略该步骤。完整可传输导入在目标数据库端可以通过 database link 获取源数据库的元数据。
      expdp system/<password> full=y transportable=always version=12 \
      directory=<database directory> dumpfile=<dump file name> \
      metrics=y exclude=statistics \
      logfile=<log file name>
      为了确保兼容性,如果源数据库是11.2.0.3或11.2.0.4版本,Version 参数是必需的。
    7. 复制数据库的数据文件到目标端
      物理上复制准备迁移的表空间所属数据文件到目标端
    8. 复制导出 dump 文件到目标端。
      复制导出 dump 文件到目标端的目录
    9. 如果源和目标数据库的 Endian 格式不同,需要对复制的数据文件调用执行 RMAN convert 命令
      CONVERT DATAFILE ‘<Datafile name>‘ FROM PLATFORM "<Source platform>" FORMAT=‘<Format of datafile at target site>‘;
    10. 在 Oracle 数据库 12c 目标数据库端,调用完整可传输导入
      impdp system/<password>@<db name> directory=<directory name> \
      dumpfile=<dump file name> logfile=<log file name> \
      metrics=y \
      transport_datafiles=‘<datafile names with full path>
      Database link 参数可以用来搜集源数据库的元数据。
    11. 在目标和源数据库上将表空间转换为读写模式
      SQL> alter tablespace <tablespace-name> read write;

Oracle 12c 使用(Full Transportable Export/Import)进行升级/迁移

上一篇:mysql on where


下一篇:idea连接mysql的jar失败