在服务端有实时采集数据的表,表的数据量非常大,我通过对实时表建立触发器将新增的数据同时插入到新表里,然后通过物化视图将新表的数据同步到服务端,通过服务端的数据库对数据进行处理,这样通过建立触发器的方式保存新数据到新表里再将新表数据同步到服务端,这样可行吗
解决方案 »
- 求助!!我的Oracle怎么装不上???
- oracle job 多个时间点设置
- 这样的语句该怎么写?
- 求助,200分 execute immediate的insert问题
- oracle的关联,不解中。。。。。。。。。。。。。。
- Oracle 9i问题,救急~~~~~~
- sqlldr可以大量的插入数据(我已经会使用),用sqlldr可不可以作批量的更新数据??
- 关于多线程访问数据库问题?
- Oracle安装问题INS-20802] Oracle Net Configuration Assistant failed.
- Oracle Spatial空间查询条件在where 条件中的执行顺序问题
- 关于日期
- 类之间传值
我现在是将实时插入数据的采集端的表同步到本地服务器,是FAST方式,在同步到本地的物化视图上建立触发器当有新数据过来时将新数据插入到中间表中 ,这样同时有4、5张表会同时更新数据,同步更新的表的时间不一样有的时间5秒有的是1分中,有的是一天 新增的数据量就10W左右 我通过时间差来使触发器不在同一个时间点运行 这样可行吗 如果不写触发器的话 还有什么方式可以 求大神教教
(这个你应该懂吧。SELECT COUNT(*) FROM 表 WHERE 时间 处理的更细些,就是做些自定义的判断等等,主要是知道表数据有没有新增,如果需要实时监控,就用循环) 如果数据存在,那么进入逻辑判断,开始数据同步,如何同步这个就不用多说了吧。这样就避免了触发器。例子:
DECLARE
p_Count NUMBER;
BEGIN
SELECT COUNT(*) INTO p_Count FROM 表 WHERE 时间;
WHILE p_Count = 0 LOOP
Dbms_Lock.Sleep(1200); ---10分钟之后再执行*\
--这里随便加些判断
SELECT COUNT(*) INTO p_Count FROM 表 WHERE 时间; --再次查看
END LOOP;
IF p_Count > 0 THEN
--逻辑判断
END IF;
END;