在一次系统升级的同时伴随着部分历史数据的迁移。我的工作是搭建好他们的数据库环境。
23点左右我的工作基本完成了,来到会议室咪一会。刚咪着不到一个小时被同事叫醒。说数据
提的很慢,跟预期的效果相差很多。如果这样继续下去,会影响明天早上九点系统上线的计划。
如果系统上不了线,后果将是很严重的。
简单的询问之后,看过迁移方案,提出如下几点改进建议:
1.中间库到生产库的提取方式由存储过程提数,改为用exp/imp的方式提取。
2.数据提取由不同实例的数据库之间提取改为同实例数据库相互提取。
3.用户之间表的访问方式由db_link改为 user_name.table_name 的方式。
4..批量插入数据使用nologing方式。
a)插入前使用更新表的属性为nologging
ALTER TABLE &TABLE_NAME NOLOGGING;
b)插入数据时在insert后加入hint提示 /*+ append */
insert /*+ append */ into test2 values(1,'2');
c)数据插入后恢复表的logging模式
ALTER TABLE &TABLE_NAME LOGGING;
5.对于业务之间无关联的多个存储过程并行执行。
6.优化提数sql。
7.数据提取完成后收集统计信息。
由于我事先没看过迁移方案,一些脚本和改进的建议都是都是临时准备的,也没考虑方案的可行性。
幸亏手头还积累了一些脚本,否则现去写脚本,加上调试,在时间上真是悬。加上紧张,中间也耽误了
一些时间。从凌晨干一直感到早上8点多,终于按照预期的时间完成的历史数据的迁移。系统也在预期的
时间内上线。
感觉真是累!
我想,如果我们能准备的更充分一些,有些问题我们还是可以避免的。