我这里oracle有一张表,有1万5的数据量,要把这里的数据同步到sql server那里,因为是用户表,同步的时间间隔最好越短越好,怎样设置时间间隔,又不会影响系统的正常运行?我本来是设置一天,同步一次。
解决方案 »
- 为什么给用户授权了还是不能访问?
- ORACLE存储过程
- 请问在PowerDesigner如何对表进行分区?
- 配置一个侦听器具有两个侦听地址和配置两个侦听器分别监视两个地址有什么不同?
- 求助,如何写oracle存储过程来读取excel文件!
- 请问:我在oracle官方网站下载了92010NT_Disk1(2,3).zip三个文件,在win2003下怎么不能安装?
- 求助! 各位谁有关于ORACLE开发框架的文章
- 类似 sql server 语句中的 if exists ...(如果存在就...)用法在oracle中怎么用?
- 如果没有主键,要怎么判断唯一性
- Toad for Oracle 导入Excel数据表出错!
- 一个分组合并字符串的问题
- 求一个oracle 查询语句
ON [dbo].[CB_ChaoBiaoSJ]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(select * from deleted)
begin
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,3 from deleted;
end
IF EXISTS(select * from inserted)
BEGIN
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,1 from inserted;
END
END 每一次对该表所作的操作,都会同步触发插入LocalSyncTable表一条记录。要同步的数据,就来自LocalSyncTable表,进行数据同步的时候,记得优化一下(不是所有这张表的数据都要同步的,比如对表TableA某一记录行的不同字段做3次修改操作,那么会在LocalSyncTable表插入6条记录,有用的就是最后一条记录,优化掉其它5条记录,然后再同步);ORACLE和SQL SERVER同步数据的逻辑,无非就是插入、修改。才15000条记录,同步时间不会超过20秒钟。
2、然后在要同步的表TableA上创建触发器ALTER TRIGGER [Trg_TableA]
ON [dbo].[TableA]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(select * from deleted)
begin
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,3 from deleted;
end
IF EXISTS(select * from inserted)
BEGIN
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,1 from inserted;
END
END 3、表LocalSyncTable中的记录,即是要同步的记录,该表的记录并非所有都要同步(比如对表TableA中某一记录进行3次update操作,触发器会插入LocalSyncTable3条deleted数据3条inserted数据,对该表的操作的这6条记录就最后一条是有用记录,其它5条要优化掉。然后执行同步逻辑,无非就是插入、删除等操作。
2、然后在要同步的表TableA上创建触发器ALTER TRIGGER [Trg_TableA]
ON [dbo].[TableA]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(select * from deleted)
begin
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,3 from deleted;
end
IF EXISTS(select * from inserted)
BEGIN
insert into LocalSyncTable (tablename,keyname,keyvalue,OperateType) select 'CB_ChaoBiaoSJ','I_ChaoBiaoID',I_ChaoBiaoID,1 from inserted;
END
END 3、表LocalSyncTable中的记录,即是要同步的记录,该表的记录并非所有都要同步(比如对表TableA中某一记录进行3次update操作,触发器会插入LocalSyncTable3条deleted数据3条inserted数据,对该表的操作的这6条记录就最后一条是有用记录,其它5条要优化掉。然后执行同步逻辑,无非就是插入、删除等操作。