一个另人头疼的数据移植问题

black_snail 2004-05-03 05:12:10
oracle9i的主数据库运行在UNIX 机器上,
数据库中的业务数据不断增长,周期型的
housekeep程序会把部分旧数据删除 (比如3个月前的数据可以删除)。

用户的需求是在另一台机器上,建立同样一个
oracle9数据库,每天晚上,业务数据从主数据库被mirror到这个数据库中。
再这个数据库中,没有housekeeping。所有的数据都会被保存,
历史纪录将一直保存。

由于没有办法用snapshot实现这个需求,请问高手如何解决这个棘手的问题。
1。如何同步每天的业务数据
2。如何在主数据库housekeeping是,保持从数据库的数据不变
...全文
123 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2004-05-08
  • 打赏
  • 举报
回复
个人认为,既然是删除了用户,再建立用户IMP
exp/imp的唯一性约束和很多其他的约束,还会存在?
如果存在也就是说主数据库的数据都存在有问题了。
用job,可以保证现有的数据库数据同步,怎么同步还要看楼主
要同步那些数据了,在存储过程里面实现,。。。
zhongchai 2004-05-08
  • 打赏
  • 举报
回复
发表一点不成熟的想法:
既然是业务数据,根据我的经验,业务数据记录都是有处理时间的
既然是用户的需求,搞一个从数据库,应该两台数据库主机会在同一网段,就是说在主从数据库之间建立链接是可行的

有了上面的条件,我觉得在两个数据库之间建立链接,然后作一个job,每天从主库表里insert into 从数据库表 select 数据 from 主数据库相应表表 where 处理时间> 从数据库相应表.处理时间
这个方法在处理结果上是可以满足楼主所提需求的,但是如果业务数据量每天增长很快很多,在效率上我就没有测试过,不知能不能满足现实的需求;这个方法不涉及到exp/imp的唯一性约束和很多其他的约束
cqsun 2004-05-08
  • 打赏
  • 举报
回复
学习!
zeng1980 2004-05-07
  • 打赏
  • 举报
回复
我这里有数据集成的中间件,完全可以解决你的问题,你要吗?
MSN zeng20004@hotmail.com
QQ:195553308
minkoming 2004-05-07
  • 打赏
  • 举报
回复
我在使用中,发现ORACLE触发器在大批量数据更新的时候,有时候会出现一些BUG。
不知道大家有没有碰到过?
这个问题,还是在应用程序上想办法来实现,对表加入一些标志位来控制。

洪十二 2004-05-07
  • 打赏
  • 举报
回复
study
maohuijian 2004-05-07
  • 打赏
  • 举报
回复
xuexi
mwonder 2004-05-07
  • 打赏
  • 举报
回复
业务机--->快照--->备份机临时表--->备份机正式备份表

业务机 有 周期型的 housekeep程序

备份机临时表 与业务机 同步

写1程序或job,每天从备份机临时表提取数据 到备份机正式备份表

备份机正式备份表 数据永远追加,不删除
shuangyu 2004-05-06
  • 打赏
  • 举报
回复
用ufile将要导出的数据生成txt文件,作一个shell用sqlldr导入,这个导入速度很快,我现在的电信业务也是这样,将生成的文件按一定名字保存,晚上将文件导入到另一服务器,然后将主数据库的删除,以便 主服务器的数据不是很多,
snowy_howe 2004-05-06
  • 打赏
  • 举报
回复
关键在于怎么导入!
一般我导入(完全备份)时,为保证数据准确性,先删除用户或清除库,
再进行导入。
刚才我测试了一下,如果用删除数据后的备份去IMP到从数据库,那么会报
违反唯一性约束错误,参数选择了忽略创建错误也不行。这种恢复应该
是插入式的,应该不会因为主数据库删除了数据而在导入时将从数据库
的数据删除(显然的)。但是如果主数据库更新了数据,也不会导入到
从数据库里,怎么解决呢?
zhouyong110 2004-05-06
  • 打赏
  • 举报
回复
我有一个小建仪,你可以用过程,然后用job,定时传输(insert到b库中,选择业务少的时间传输即可),
baojianjun 2004-05-05
  • 打赏
  • 举报
回复
學習中。。。。。。
skystar99047 2004-05-05
  • 打赏
  • 举报
回复
每天把主数据库中的前一天更新的数据在第二天早上导入到从数据库中不行吗?
主数据库housekeeping时,对从数据库不操作有什么影响吗?
pollipop 2004-05-05
  • 打赏
  • 举报
回复
不可以采用同步复制的功能吗?
leimin 2004-05-05
  • 打赏
  • 举报
回复
给每个表增加一个时间字段是一个不错的建议,但要更改大量的表结构。
是否可以这样,在建立一个HIST表,保存当天的所有记录,并且每日复制到B数据库后,清除。
wangzi163 2004-05-04
  • 打赏
  • 举报
回复
高手啊,向你们学习
东方小女人 2004-05-04
  • 打赏
  • 举报
回复
snowy_howe(天下有雪)不释为一个好办法,但如果是开发商还需要不断更新(连表结构不时也要更新,如“中国税收管理信息系统”),你将怎么办?一偶之见,是否可以利用oracle可同时存在多个触发器的特点,建立一个永远不会与这个系统重名的insert触发器,利用颁布分式事务来完成?
snowy_howe 2004-05-04
  • 打赏
  • 举报
回复
假设目前数据库容量为A,一个月后增量为Ai,housekeep程序周期为1个月,则删除的数据容量为Ad。
则一个月后A=A+Ai-Ad;
而另一数据库为B,应该B=A+Ai。
所以不能实时更新B,只能伴随housekeep程序且在其之前做更新。
由于
Any modification (UPDATE, INSERT, or DELETE) on a table automatically qualifies that table for incremental Export.
而且
If you use cumulative and incremental Exports, you should periodically perform a complete Export to create a base backup. Following the complete Export, perform frequent incremental Exports and occasional cumulative Exports. After a given period of time, you should begin the cycle again with another complete Export.
增量导出可能不行。

这确实是个难题。我想只能辛苦辛苦,在每张表中加上exp_date字段,做存储过程将大于等于该日的数据导入到B,并更新exp_date。这样删除以前的数据不会影响到该过程,自然也
不会影响到B。一家之言,姑妄听之
glucose 2004-05-04
  • 打赏
  • 举报
回复
cron增量导出,另一台cron ftp 然后增量导入应该可以

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧