做法是:
由于一些table非常大,而且还有LOB, 停机导出可能需要15个小时,所以选择使用MV和EXP同时动作,动态导出大表的部分数据,同时由于MV是在目标库上另外建立的一个独立表,专门用于记录源数据库上的一些大表的变化部分, 仅仅纪录变化的DATA, 而且由于源数据库中的MV LOG Refresh之后,DELETE的部分不会纪录在目标数据库新建MV中,所以还需要在源数据库中创建各个大表对应的 DEL_LOG 表,用Trigger 来记录删除的纪录,保存在各个表对应的DEL_LOG表中 。
动作的时候碰到的一些问题。
1. sequences 问题,因为exp的时候最先导出的是SEQUENCES, 所以如果EXP的时候, 源数据库还在操作,那么IMP到目标数据库的SEQUENCES可能就会和目前的SEQUENCES 的Last Value 不同, 因为MV仅仅纪录变化的DATA, 而不会纪录变化的SEQUENCE 或Procedure 等 。 需要参考源数据库的SEQUENCE重新建立 。
2. IMP 的时候注意一些表的Trigger, 可能存在INSERT激发的Trigger . 可能会导致数据重复或不一致 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84393/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-84393/
本文介绍了一种针对大型数据库表的动态导出方法,利用MV(Materialized View)和EXP工具实现不停机的数据导出。该方法适用于含有大量数据及LOB的大表,并通过创建DEL_LOG表记录删除操作,确保数据一致性。
829

被折叠的 条评论
为什么被折叠?



