注册
【与达梦同行】通过DBLINK进行ORACLE到DM8的数据迁移、增量更新
技术分享/ 文章详情 /

【与达梦同行】通过DBLINK进行ORACLE到DM8的数据迁移、增量更新

ZhuHong 2022/12/14 1876 16 1

场景

从ORACLE迁移数据至DM8的方法很多,常用的有DTS迁移工具、ETL工具,还可以通过DMHS同步,kettle工具,快速装载等诸多方式实现。
对于一些语法复杂度不高的应用系统,借助于DM8对ORACLE高程度的语法兼容性,通过DBLINK也可实现便捷的数据迁移、同步。
尤其是对于一些运维场景,需要从ORACLE增量更新数据到DM8库的,较为方便。
因此做个举例,记录参考。

前提

1.A库ORACLE和B库DM8,网络互通
2.有建库脚本(初始化数据库对象的整套sql)
3.搭建DM8到ORACLE的DBLINK

说明

DBLINK搭建
在之前的博文中,已经收集整理,这里直接引用:
https://mp.csdn.net/mp_blog/creation/editor/122689342

建库脚本
这里指的是,应用系统在新的环境部署时,初始化数据库对象的整套SQL脚本。
这个脚本之前对标ORACLE环境,在DM8环境基本也能成功执行。对于一般复杂度不高的应用系统,语法问题的可能性较低,即使有,稍有修改就可使用。(如果创建数据库对象时,如package、type、function等语法问题较多的,不适用此方法)
示例:
W0WEagYltJ.jpg

步骤

1.执行建库脚本
在DM8目标库中,执行建库脚本,创建和ORACLE一致的数据库对象。
MDsSqDxhqb.jpg

2.创建DM8到ORACLE的DBLINK
image.png
具体步骤参考说明中的链接

3.清空DM8中的表

select 'truncate table "'||owner||'".'||table_name||';' from dba_tables where owner='DM-DW-PLATFORM';

yX3iPeKNHe.jpg

truncate table "DM-DW-PLATFORM".AGENT_INFO;
truncate table "DM-DW-PLATFORM".ALERT_RULE;
truncate table "DM-DW-PLATFORM".DB_ARCH;
truncate table "DM-DW-PLATFORM".DB_DEADLOCK;
truncate table "DM-DW-PLATFORM".DB_FILE_LOG;
truncate table "DM-DW-PLATFORM".DB_INFO;
truncate table "DM-DW-PLATFORM".DB_LOG;
truncate table "DM-DW-PLATFORM".DB_SESSION_ACTIVE;
truncate table "DM-DW-PLATFORM".DB_SESSION_COUNT;
truncate table "DM-DW-PLATFORM".DB_SQL;
truncate table "DM-DW-PLATFORM".DB_SQL_ANALYZE;
truncate table "DM-DW-PLATFORM".DB_SQL_EXPLAIN;
truncate table "DM-DW-PLATFORM".DB_STATS;
truncate table "DM-DW-PLATFORM".DB_TABLESPACE;
truncate table "DM-DW-PLATFORM".DB_TASK;
truncate table "DM-DW-PLATFORM".DM_INI;
truncate table "DM-DW-PLATFORM".DM_INI_ALTER;
truncate table "DM-DW-PLATFORM".DM_INI_ALTER_DETAIL;
truncate table "DM-DW-PLATFORM".DM_INI_FILE;
truncate table "DM-DW-PLATFORM".MONITOR_PANEL_CUSTOM;
truncate table "DM-DW-PLATFORM".MONITOR_SERVER;
truncate table "DM-DW-PLATFORM".MONITOR_SWITCH;

4.使用DBLINK,从ORACLE向DM8插入表数据
语法格式如下:

insert into  "DM-DW-PLATFORM".T_DB_SQL_EXPLAIN select * from T_DB_SQL_EXPLAIN@link02 ;
commit;
insert into  "DM-DW-PLATFORM".MONITOR_PANEL_CUSTOM select * from MONITOR_PANEL_CUSTOM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_EXCHMARGINPARAM select * from T_EXCHMARGINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_EXCHMARGINPARAM select * from T_EXCHMARGINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_EXCHMARGINPARAM select * from T_EXCHMARGINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_MARGINPARAM select * from T_MARGINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_XOPTIONSTRIKE select * from T_XOPTIONSTRIKE@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_OPTIONSTRIKE select * from T_OPTIONSTRIKE@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_XOPTIONSTRIKE select * from T_XOPTIONSTRIKE@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_XPOSITIONDTL select * from T_XPOSITIONDTL@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_POSITIONDTL select * from T_POSITIONDTL@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_XTRANSFERPOSDTL select * from T_XTRANSFERPOSDTL@link02 
commit;

5.增量更新
只需修改步骤4中的select语句,增加where条件,过滤出增量数据,作为结果集插入DM8即可。如下:

insert into  "DM-DW-PLATFORM".T_DB_SQL_EXPLAIN select * from T_DB_SQL_EXPLAIN@link02  where create_time>='20221021';
commit;
insert into  "DM-DW-PLATFORM".MONITOR_PANEL_CUSTOM select * from MONITOR_PANEL_CUSTOM@link02   where create_time>='20221021';
commit;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服