数据迁移的问题

傻儿哥 2009-11-06 03:13:23
最近有个项目涉及了一个数据迁移的问题.
两个库,其中有个库,相对较小(160G的数据量),
但是业务最多能在晚上停下来.(能承受最长停应用的时间是10小时左右)
对其中一个库,我准备采取下面的方式来做:

查数据库,找其中的应用大表.
发现其中有7张大表,一共占用了130G左右的容量.(有张表单表容量有60G)

1.在老库把用户大表 导出(生产库正常运行时)
2.在新库把用户大表导入(生产库正常运行时)

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.停业务(当天晚上)
4.先查老库大表中哪些是exp之后改动过的,再在新库中把这些表中的行全部删除掉.(当天晚上)
5.把老库的大表中的数据(改动过的行)导出来(当天晚上)[带where 条件的exp]
6.在新库把这些增量的数据导入,(当天晚上)[imp之前,需要对新库做操作,先把触发器、约束禁用,]
7.把数据库中其他的小表插入。
8.全部导完之后,再把触发器启用。
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

整个流程有什么瑕疵?
where 条件的exp,相关语法和相关注意事项?
触发器、约束禁用启用相关语法和注意事项?
...全文
79 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻儿哥 2009-11-08
  • 打赏
  • 举报
回复
最后再在主库做一个 增量导出

指的是 带where 子句的exp
傻儿哥 2009-11-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 inthirties 的回复:]

10G不支持exp的incremental type叻。 如果老机不能停。而且又需要相隔时间内的数据的话,可以用logminer挖出来,在新库上执行
[/Quote]

针对这个问题,我准备采用时间戳的方法来克服。
导出的表都有一个时间戳,显示了这个操作的具体时间,另有一个字段,表示是插入、删除、更新操作。

先做一次基表的导出,导入,
在实际割接当晚,把生产库停掉后,检查所有这段时间生产库上增量的数据,找到他们的主键。
再到目的库中把这些主键代表的行都删除掉,
最后再在主库做一个 增量导出。在目的库做一个增量导入就okey了。
傻儿哥 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tianlesoftware 的回复:]
这么大的数据搬迁还真没做过, 不过我有个想法,就是先做个Data Guard, 让他先同步, 之后在切换下..

这样也很快呀..

10个小时来搭DG时间应该够了..
[/Quote]
dataguard 还是不太可行了,因为是异构平台的,( linux -> aix)
inthirties 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 inthirties 的回复:]
引用楼主 csucxcc 的回复:
最近有个项目涉及了一个数据迁移的问题.
两个库,其中有个库,相对较小(160G的数据量),
但是业务最多能在晚上停下来.(能承受最长停应用的时间是10小时左右)
对其中一个库,我准备采取下面的方式来做:

查数据库,找其中的应用大表.
发现其中有7张大表,一共占用了130G左右的容量.(有张表单表容量有60G)

1.在老库把用户大表 导出(生产库正常运行时)
2.在新库把用户大表导入(生产库正常运行时)

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.停业务(当天晚上)
4.先查老库大表中哪些是exp之后改动过的,再在新库中把这些表中的行全部删除掉.(当天晚上)
5.把老库的大表中的数据(改动过的行)导出来(当天晚上)[带where 条件的exp]
6.在新库把这些增量的数据导入,(当天晚上)[imp之前,需要对新库做操作,先把触发器、约束禁用,]
7.把数据库中其他的小表插入。
8.全部导完之后,再把触发器启用。
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

整个流程有什么瑕疵?
where 条件的exp,相关语法和相关注意事项?
触发器、约束禁用启用相关语法和注意事项?


最好先实验一下先。

10g不支持exp的增量
[/Quote]

用exp和imp了,如果机器的状况不错的话,时间不会花的太久。
10G不支持exp的incremental type叻。 如果老机不能停。而且又需要相隔时间内的数据的话,可以用logminer挖出来,在新库上执行
傻儿哥 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liusong_china 的回复:]
操作流程应该没什么问题。。。
业务中用到了触发器,有没有用序列啊,(如自增字段),注意一下序列的值。。。
[/Quote]
发现它生产库上有4个序列,这个问题是要考虑下
inthirties 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 csucxcc 的回复:]
最近有个项目涉及了一个数据迁移的问题.
两个库,其中有个库,相对较小(160G的数据量),
但是业务最多能在晚上停下来.(能承受最长停应用的时间是10小时左右)
对其中一个库,我准备采取下面的方式来做:

查数据库,找其中的应用大表.
发现其中有7张大表,一共占用了130G左右的容量.(有张表单表容量有60G)

1.在老库把用户大表 导出(生产库正常运行时)
2.在新库把用户大表导入(生产库正常运行时)

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.停业务(当天晚上)
4.先查老库大表中哪些是exp之后改动过的,再在新库中把这些表中的行全部删除掉.(当天晚上)
5.把老库的大表中的数据(改动过的行)导出来(当天晚上)[带where 条件的exp]
6.在新库把这些增量的数据导入,(当天晚上)[imp之前,需要对新库做操作,先把触发器、约束禁用,]
7.把数据库中其他的小表插入。
8.全部导完之后,再把触发器启用。
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

整个流程有什么瑕疵?
where 条件的exp,相关语法和相关注意事项?
触发器、约束禁用启用相关语法和注意事项?
[/Quote]

最好先实验一下先。

10g不支持exp的增量
wh62592855 2009-11-06
  • 打赏
  • 举报
回复
不太懂

帮剑飞兄顶一个
Dave 2009-11-06
  • 打赏
  • 举报
回复

这么大的数据搬迁还真没做过, 不过我有个想法,就是先做个Data Guard, 让他先同步, 之后在切换下..

这样也很快呀..

10个小时来搭DG时间应该够了..
liusong_china 2009-11-06
  • 打赏
  • 举报
回复
操作流程应该没什么问题。。。
业务中用到了触发器,有没有用序列啊,(如自增字段),注意一下序列的值。。。
傻儿哥 2009-11-06
  • 打赏
  • 举报
回复
新库还没起业务.才装的10.2.0.4的rac
liusong_china 2009-11-06
  • 打赏
  • 举报
回复
新库也在做业务吗?
archwuke1 2009-11-06
  • 打赏
  • 举报
回复
关注,不过楼主可以自己先试验一次看看效果的吧,反正对老库没有操作

17,377

社区成员

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

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