大家好:
最近开发一个项目,偏向数据收集类的,数据量大概在百万/天,可以理解为表对表的拷贝。
举个例子:DA.Table1 到 DB.Table1,A、B表结构一样,正常增量情况下,两库的数据会一致。
但当DA删除DB已有的数据时候,这时候就出现无法保持一致的问题。
想到一些办法,但都有利由有弊
1)采用触发器,在DA每张表里创建删除触发器,记录删除的数据,再通过程序去将DB里面相同的数据删除。这种是最直接但可靠性比较低
2) 采用日志归档或者闪回规则,这相对来说比价可靠,但感觉有点大才小用
3) 欢迎大家补充、拍砖
Oracle库数据一致
最近开发一个项目,偏向数据收集类的,数据量大概在百万/天,可以理解为表对表的拷贝。
举个例子:DA.Table1 到 DB.Table1,A、B表结构一样,正常增量情况下,两库的数据会一致。
但当DA删除DB已有的数据时候,这时候就出现无法保持一致的问题。
想到一些办法,但都有利由有弊
1)采用触发器,在DA每张表里创建删除触发器,记录删除的数据,再通过程序去将DB里面相同的数据删除。这种是最直接但可靠性比较低
2) 采用日志归档或者闪回规则,这相对来说比价可靠,但感觉有点大才小用
3) 欢迎大家补充、拍砖
Oracle库数据一致
解决方案 »
- 求助 查询主从表显示的问题
- 帮我解释下这个触发器,各位!
- 请教一个问题,,关于 10g 连接的问题,菜鸟 呵呵
- 菜鸟求助
- F_66654_66908_6033500003
- ado打开Oracle的程序的路径为什么不能包含右括号')'
- 关于Java调用Oracle出现乱码的问题.(字符集为AMEROCAN_AMERICA.US7ASCII)
- 关于动态掉用SP(EXECUTE IMMEDIATE 相关)
- windows下如何连接linux下的oracle9i
- 请各位介绍一点好的oracle的资料!!
- 【在线等!!!】SQL2005使用excel作为数据源导入时 错误 0xc002f210: 准备 SQL 任务: 执行查询“”失败
- Oracle关联查询问题?
--这句话我不是太理解
是这个意思:A库里面的表1里面有1000条数据,在10点10分的时候已经同步到了B库的表1。
在10点20的时候,A库的表1又新增了1000条,程序会从10点10分之后获取数据,也就是获取继续是1000条,如果10点10分到20分期间,删除了10点10分中的100条,也就是10点10分之前库A只有900条,而库B却还是有1000条。
新建表你可以要这些字段:A表中的ID ,操作类型,操作时间
当表中的操作类型为Delete时直接删除就OK了。
如果都是百万级的数据量,那其实建立DBLINK,写一个通用的数据同步程序(drop...create...),定时调度就可以了。只要不是上亿的数据量,效率应该都可以接受。
我一直觉得这是最初设计时系统架构的问题,在设计时就要明确区分当前信息记录表和历史信息记录表,当前信息的量相对小一些,表中可以用时间戳,或者可用性FLAG等来标注,没用的记录可以不用删除,加个状态栏位,没用的数据多久之后定时PURGE掉,保证同步时方便,历史信息记录表就是不能删除,干嘛要删除,任何增删改都必须有犯罪记录。这样我可以拍着胸脯说只要给我时间,我可以把数据还原到任何你想要的时间点去。其实就是ORACLE中REDO LOG的做法,但我们只需要从公司业务逻辑角度来保存重要业务数据。
你太想当然了...需求是业务决定的 而不是系统技术框架决定的
恕我孤陋寡闻,你说的是对的,各行各业业务模型千差万别。最近刚巧看到oracle的oracle data integrator这个产品,花大力气做肯定是因为有市场。不过就你提出的问题,我几年前碰到类似的,但没有这么数据量大,当时基本也是你列出的这两种方案,trigger没有用是因为一旦trigger发生问题会导致主数据库的操作受影响,所以没有采用,后者公司觉得没能力也没钱,最终还是采用投机取巧的办法,通过业务的制约关系来处理数据。
oracle的另一个产品干的就是这个事儿,基于log的,如果oracle基础产品能内嵌一个迷你版就完美了-----〉GoldenGate TDM(交易数据管理)软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。GoldenGate TDM 软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制。