“G”术时刻:Oracle到GBase 8s的数据迁移技术指南(上)

56 阅读4分钟

将数据从Oracle迁移至南大通用GBase 8s,好比一次计划周详的“系统搬家”。整个过程主要分为两步:首先是“搬结构”,即在GBase 8s中原样重建表、视图等数据库对象,如同先绘制好新的“家具图纸”;接下来是更为关键的“搬数据”,即将实实在在的“数据家具”安全、无误地运送至新家。本文将聚焦这最关键的第二阶段,为您详细解析数据迁移的完整流程。

为了确保数据在迁移过程中不出错,最稳妥的办法是暂时停止一下应用程序,就像搬家时把家里的东西都打包好再运走。如果数据量特别大,又不想让应用停太久,可以请一个“同步助手”(如CDC工具)。它能帮你把迁移期间新产生的数据也实时同步过去,这样就能实现几乎不停机的“无缝迁移”。

图片

迁移过程示意

文件格式:

把数据库从Oracle导出时,要将格式尽量调整为匹配GBase 8s的导入格式,这样可以最大程度上减小数据在转换过程中的工作量。这里以GBase 8s 的load工具格式为例,来说明一下导入时对文件格式的要求。GBase 8s的load工具是一个常用的文本导入工具,它的字段间默认分隔符是“|”管道符。由于“|”在文本中是很少出现的字符,所以也推荐在导出时使用“|”来作为分隔符。每个字段后都应由“|”来作为结束标识,换行符作为行与行之间的分隔符。每个表的数据单独存储在一个文件中。

示例:

create table customer_log 

  (  id char(14),

    update_date datetime year to second,

    tablename varchar(20),

    update_count float,

updated float  );

表customer_log的导出/导入格式如下:

20101013114153|2010-10-13 11:41:53|2|53.0|53.0|

20101013114153|2010-10-13 11:41:53|3|0.0|0.0|

20101015094917|2010-10-15 09:49:17|2|15.0|15.0|

20101015094917|2010-10-15 09:49:17|3|0.0|0.0|

20101015094918|2010-10-15 09:49:18|4|1.0|1.0|

20101015102622|2010-10-15 10:26:22|2|2.0|2.0|

20101015102622|2010-10-15 10:26:22|4|0.0|0.0|

20101015111103|2010-10-15 11:11:03|1|1.0|1.0|

数据导出

Oracle的数据可以通过SQLPlus的功能,导出符合GBase 8s要求的文本格式。

以下是SQLPlus导出数据时的一个示例

set colsep '|'

set head off 

set echo off

set headsep off

set newp none

set long 2000000000

set longchunksize 32767

set linesize 32767

set numw 32

set pagesize 0

set sqlblanklines off

set trimspool on

set termout off

set feedback off 

set numw 32

set verify off

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 

alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff5';   

spool c:\customer.unl

select customer_id,Birth_Date,Address||'|' from customer;

spool off

exit

可以编写脚本来并发执行以上操作来提升数据从Oracle导出的效率。导出的数据以GBase 8s导入要求的格式存储在c:\customer.unl中。

图片

通过本文的介绍,我们梳理了从Oracle到GBase 8s数据迁移过程中的结构迁移策略、文件格式规范与高效导出方法。如果您希望了解本文所述方法在真实环境中的表现,欢迎延伸阅读我们的两大标杆案例:西南某高速智慧收费站迁移实战某省移动运营商核心系统升级实录 下期 “G”术时刻,我们将进一步讲解Oracle到GBase 8s的数据迁移技术中数据导出和数据校验的内容。