十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最好的办法就是用DB_LINK
网站制作、成都网站制作,成都做网站公司-创新互联公司已向上1000+企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。
加物化视图来实现数据同步。
当然还有像
ORACLE
STREAM
和
GLODEN
GATE来实现同步,不过这两个用在这里有点大材小用了!
一、第一套方案
1、用新的建库脚本创建一套新的数据库,结构和类型都是新的;
2、用数据导入工具,将原数据库的数据导入到新的数控里面;
二、第二套方案
1、用新的建库脚本创建一套新的数据库,结构和类型都是新的;
2、用数据库结构同步工具,将老的数据库结构更新同步到新建的数据库上面;
两套方案肯定都可行,主要在工作量和工作效率上面区别太大,导数据需要工具,可以用Sqlserver提供的DTS,有的结构变动大的需要对应字段关系,太麻烦;
所以我想到用数据库结构同步工具来进行,记得以前就用过这个功能,我们可以在网上轻松找到oracle数据库客户端操作工具PLSQL Developer,这个工具除了对数据库进行日常的维护之外,还提供很多使用的功能,同步两个数据库的结构,就是其中一个,操作步骤如下:
1、打开PLSQL Developer进入新创建的数据库;
打开菜单如下图:
点击菜单--工具--比较用户对象,进入如下图:
会列出所以的表,你可选择单独的表或者多个表同时操作,然后点击目标回话,会弹出要同步的数据库连接对象窗口,输入用户名和密码等等,确定后点击右下角的比较按钮,这样会出现如下的比较窗口:
这时,会把不同之处用脚本列出来,只要点击右边的绿色对号,同步即可;
这样,结构一下就都改好了,很方便。
1.所谓的物化视图,
2手工写TRIGER,
3.通过ORACLE的CDC工具可以实现同步或者异步的表的变化。
4。关于你说的表三和表一表二之间同步,俺没有明白。猜测是对表一表二做ETL,然后放到表三中。只对增量进行抽取和转换。如果是这样。通过上面的一二三步之一后。对增量进行抽取和转换。
ETL是个比较复杂也好玩的东西。多种方式可以实现,但是相互影响较大。容易顾此失彼。比如说管理和性能的平衡问题就是其中之一。
1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下
SQL code?
SQL code-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --数据库用户
@rmtpassword = 'password' --密码
3. 建立一个作业,通过作业调度存储过程,存储过程使用类似的语句将oracle的数据插入到sqlserver表中
SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE数据是实时增加的,并且ORACLE记录上有递增的字段,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
SQL code?
insert into sqlserver表 select * from test..oracle表名 where id@id
5. 防止sqlserver同步的时候oracle仍在不断的插入,每次要取一个结束ID
SQL code?
select @endid=max(id) from test..oracle表名.
背景:项目中遇到的问题,需要二区两台数据库之间同步一些表,以及导出sql文件同步至三区数据库。
新建SQL文件生成的目录D:mptmsudataDNLTBDIR。
二区数据库中执行下列语句:
1)新建二区数据库服务器到二区数据库服务器的数据库DATABASE LINK文件。
二区数据库中执行下列语句:
2)二区数据库服务器新建表DNL_TBJL。
二区数据库中执行下列语句:
在二区数据库服务器说新建相关表的触发器,触发器实现的功能是东区2区向西区直接通过DBLINK直接执行;东区2区向东区3区通过生成SQL文件到D:mptmsudataDNLTBDIR目录下;触发器的每次操作都记录到表格DNL_TBJL(id, tables,czlx, SQL, TIME, BAK)内。
通过Windows系统自带的计划任务执行下面批处理实现数据入库
1)三区区数据库服务器新建表DNL_SQLJL。
三区数据库中执行下列语句:
2)三区区数据库服务器新建计划任务定期执行DQ3QRK-ZXWJ.bat批处理。
3)DQ3QRK-ZXWJ.bat批处理调用DQ3QRK-ZXSQL.bat来执行入库操作。
DQ3QRK-ZXWJ.bat语句如下:
DQ3QRK-ZXSQL.bat语句如下: