ORACLE数据库跨平台迁移技术的研究

作者简介:李飞目前就职过北京海天起点技术服务股份有限公司,提供Oracle内蒙区域技术支持;超过十年的ORACLE SUPPORT从业经验。ORACLE 10g OCP,ORACLE 11g OCP,ORACLE 11g OCM。擅长Oracle数据库各种场景问题处理,熟悉Oracle的调优,排错,实施等。主要服务:金融,通信,政府等客户。

摘要:为了实现不同平台上的ORACLE数据库迁移,可以采用导入导出工具、数据泵、CTAS、GOLDENGATE等方式。但对于数据量较大或数据库对象较多的情况下,就不太适合使用。针对大规模数据库,ORACLE提供了一种简便方法,在操作系统的字节序一致的情况下,可以使用RMAN的convert database命令简化迁移步骤,提高迁移速度。

关键字:ORACLE数据库;跨平台迁移;RMAN;字节序

引言

随着信息系统建设的快速发展,越来越多的数据被存储下来,直接导致数据库的规模不断增加,单个表保存几十亿条数据的情况越来越多,数据库的大小达到上T的情况也屡见不鲜。随着信息系统环境的变化,有时会将现有的数据库从一种操作系统上迁移到另一种操作系统上,以实现硬件的升级,或者在其他操作系统上搭建测试环境,以满足开发、测试分离的需要,这就遇到了一个棘手的问题,如何实现大数据库的跨平台迁移?

以较常使用的ORACLE数据库为例,为了解决跨平台迁移的问题,可以采用导入导出工具(exp/imp)、数据泵(expdp、impdp)、CTAS(create table as select)、GOLDENGATE等方式。这些方法对于小规模数据库来说比较合适,但对于数据量较大或数据库对象较多的情况下,就不太适合使用。针对大规模数据库,ORACLE提供了一种简便方法,在操作系统的字节序一致的情况下,可以使用RMAN的convert database命令简化迁移步骤,提高迁移速度。

跨平台迁移场景分析

ORACLE数据库支持的操作系统平台种类较多,对于主流的操作系统上都提供了安装软件。常见的数据库操作系统平台有AIX、HP-UX、Linux、Windows等,迁移场景可能是将ORACLE数据库从HP-UX上迁移到AIX平台上,或者从AIX平台上迁移到Linux平台上。判断ORACLE数据库是否支持相应的操作系统可以通过查询动态视图 v$transportable_platform来确认:

从显示的结果中可以看出,此ORACLE数据库支持的操作系统平台有17种。不同的ORACLE数据库版本查询到的结果可能不一样。这里需要注意一个跨平台迁移的重要影响因素:字节序,即ENDIAN_FORMAT列显示的结果。

字节序:是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。常见的字节序有两种:

  • Little endian:将低序字节存储在起始地址
  • Big endian:将高序字节存储在起始地址

LE (little-endian)

最符合人的思维的字节序,地址低位存储值的低位,地址高位存储值的高位。怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说低位值小,就应该放在内存地址小的地方,也即内存地址低位,反之,高位值就应该放在内存地址大的地方,也即内存地址高位。

BE (big-endian)

最直观的字节序,地址低位存储值的高位,地址高位存储值的低位。为什么说直观,不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出。两者对照,一个字节一个字节的填充进去。

例子:在内存中双字0x01020304(DWORD)的存储方式

内存地址

查询当前数据库所在的操作系统平台类型可以通过动态视图 v$database 来确认:

从显示的结果中可以看出,当前数据库安装在Windows 32位操作系统上。进行跨平台迁移前需要查询出目标端的操作系统类型,如果字节序一致,即都为BIG或都为LITTLE,则可以直接使用RMAN的convert database方法迁移,否则就需要考虑通过其他方法(例如:XTTS交叉平台传输表空间)进行迁移。

技术原理介绍

RMAN是ORACLE数据库提供的一个备份恢复管理工具,平时主要用于对数据库进行备份或恢复等用途,随着RMAN功能越来越强大,使此工具也具备了一些其他功能,例如为了满足跨平台迁移的需求,可以将数据文件内容进行转换,以适应不同操作系统。(不同的操作系统字节序可能不一样,所以需要转换)。以前ORACLE提供的转换功能是针对数据文件或表空间而设计的,为了简化转换命令,ORACLE 10gR2以后的版本,在相同字节序的前提下,可以对整个数据库进行转换,即convert database命令来实现跨平台迁移。执行此命令需要将源数据库置于read only状态,然后通过RMAN 的convert database命令将整个数据库的数据文件复制一份,同时生成一个脚本文件和初始化参数文件,然后将这些文件复制到目标数据库上(通常是另一种操作系统),最后执行此脚本文件完成整个转换过程,将数据库启动起来。

Convert database特性

  • 只转换数据文件,临时文件不会被传输
  • 会转换源库的pfile文件,如果源库使用spfile,将自动生成一个pfile进行传输
  • 控制文件将被重建,redo文件会自动生成
  • BFILE、外部表、directory将不会被传输,因此需要手工创建

跨平台迁移步骤

进行转换前检查

检查版本

需要检查源库和目标库的版本,为了减少迁移的麻烦,最好软件版本一致。

检查支持的操作系统

源库和目标库的字节序一致,则可以直接使用convert database进行准换。

检查外部文件

使用DBMS_TDB.CHECK_EXTERNAL 检查 external tables, directories, or BFILEs这些rman无法传输的。

输出的内容是无法完成转换的,因此需要手工创建这些内容。

检查是否有阻止传输的情况

如果没有的话,不会有任何输出。

将源库置于只读状态

执行跨平台迁移操作期间要求将数据库置于只读状态,转换完后才可以再置回读写状态,因此此期间内数据库只能查询不能写入,业务系统通常不能使用。

关闭数据库命令如下:

执行转换

使用rman工具进行转换。

此过程耗时长短由数据库大小决定。执行此命令会将当前数据库的所有数据文件复制一份到新目录下,大小与源库一样。转换完毕后,可以将源库恢复到读写状态,命令如下:

传输到目标服务器上

将新目录 /oradata3/hp2aix/ 下的所有文件通过ftp、scp等方式复制到目标库服务器上,通常如下:

如果数据文件较多,可以考虑开启多个窗口同时传输,提高效率。

正常打开目标库

在目标服务器上,首先需要创建参数文件中使用到的目录,例如background_dump_dest、user_dump_dest等,然后执行trans.sql可以将数据库打开。

当然,为了细调转换内容,可以手工编辑trans.sql,然后再执行。

关于提高性能

整个迁移过程基本上分为:转换、传输、启动三个阶段,为了提高转换性能,缩短停机时间窗口,可以考虑在转换阶段通过并行技术,提高转换的速度。为了减少传输时间,可以将远程目标端的存储通过NFS方式挂载到源库服务器上,这样就直接生成到目标端了,不再需要传输时间了,当然,前提是优化网络、NFS参数,保障足够的网络带宽。启动过程基本上没有什么可以采用的优化手段,此时间也相对固定。

结束语

跨平台迁移的实现可以采用多种技术,在字节序一致的前提下,通过ORACLE的RMAN工具可以简便快捷的实现大规模数据库在不同平台间进行迁移,为提高转换效率,增强运维水平提供了一种便捷方法。

参考文献

  • Oracle® Database Backup and Recovery User’s Guide. Part Number B28270-03
  • Oracle® Database Backup and Recovery Advanced User’s Guide Part Number B14191-01
  • 维基百科   字节序.
  • 利用RMAN convert特性跨平台迁移Oracle11g数据库教程http://www.askoracle.org/oracle/backup/
  • blue_prince利用RMAN Convert database特性进行跨平台数据库迁移 http://www.itpub.net/thread-806483-2-1.html

未经允许不得转载:Oracle一体机用户组 » ORACLE数据库跨平台迁移技术的研究

相关推荐