暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 ZhuHong 2022-12-14
1667

场景

从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_NPARAM select * from T_NPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_GINPARAM select * from T_GINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_INPARAM select * from T_INPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_RGINPARAM select * from T_RGINPARAM@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_OPTION select * from T_OPTION@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_OPTIONSTRIKE select * from T_OPTIONSTRIKE@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_RIKE select * from T_RIKE@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_ONDTL select * from T_ONDTL@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_DTL select * from T_DTL@link02 ;
commit;
insert into  "DM-DW-PLATFORM".T_POSDTL select * from T_POSDTL@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;

本文为达梦在线服务平台【与达梦同行】征文活动投稿文章,活动详情 【与达梦同行】 🏆🏆🏆 第一届达梦数据库技术征文大赛来啦!🚀🚀🚀 | 达梦技术社区

复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论