oracle数据库数据迁移解决方案
首先,迁移过程中,在迁移之前,先写一个好的方案,特别是程序步骤的执行必须写得清楚,然后完成测试。在迁移时,有些系统已经经过四、五次测试,程序和过程都经过测试完善。
根据物理迁移,即RMAN的备份恢复和归档应用方式(这里不讨论通过DD迁移,这样虽然冷)注意力测井数据库,在使用RMAN做的好,必须执行:
否则,可能会产生一个坏块。
逻辑迁移,注重工作下的执行时间,在job_processes工作的用户设置的> 0.for例子的价值,工作的定义已经进口之前,但在时间的迁移,工作已经运行。迁移完成后,下一次作业仍然是同一时间,因此可以重复运行。此外,通过IMP导入作业后,属于作业的用户将成为导入用户的名称。显然,作业的原始用户不能管理作业,可以通过以下SQL进行修改。
在迁移之前,应禁止系统的结构修改和发布,如表结构、索引、存储过程包等。
如果您使用的是口 /进出口对象导入,包括存储过程中,应检查对象是否与原生产基地相一致,例如在dblink,小鬼的原因,存储过程不能被创建,在储存过程中造成一定的损失,尽管这些存储过程可能无法使用。
下面是加速迁移的一些建议:
使用dblink,使用附加的插入,以及使用并行,这种方式比口 /小鬼快
对于长类型的列,插入…选择的方式是显而易见的。它可以通过进出口来完成,但这种方式非常慢。原因是,IMP是插入表格一次一行。还有一个办法,就是目前的复制命令,然后下面是一个例子:
然而,sqlpus的复制命令不支持表的时间戳和LOB列的类型。如果你有一个表的时间戳类型,您可以将一个表的多个部分和操作,同时当你添加实验rowid在你口在同一时间,你可以为你的类型的挑表一样。在选择的方式,当有一个LOB类型的列,它还插在一行行)。注意,这样,你可以不使用直接的方式口 / imp.the以下是名字的参数比如口出口:
该表是在同一时间分成几个部分,不仅可以使用rowid,也可以使用表中的列,例如,一列的created_date表,这是增加插入数据,所以在这种情况下,您也可以使用此字段列表到不同范围的进口和出口。然而,对rowid的使用通常是更有效。
当然,对于一个有一个子列的表,它可以同时被分解成多个插入模式,而不需要输入/输出。
一个特别大的分区表,虽然并行的使用可以提高速度,但仅限于一个单一的过程(不跨数据库链接平行交易,只有并行查询,即插入。选择只选择部分平行)的处理能力,这种方式仍然是有限的。你可以将数据插入到表中的多个中间平行,然后通过交换分区,交换分区没有验证。这样大大提高了速度。
一个朋友可能会问,为什么不直接插入分区表并行,当然,如果它是一个非直接的路径(追加)的方式,这是没有问题的,但这种方式插入的性能较低。在直接路径的方式,模式= 6(互斥)TM锁将在表举行,和多个会话不能同时插入。(更新:使用此声明的插入:插入表的分区(件号)SELECT * FROM tablename哪里…它的简单和高效。)
在迁移时,数据分为两个部分,一个是历史表,第二个是动态变化表。在迁移之前,我们首先导入历史表并在历史表上构建索引,这将大大减少我们迁移时业务系统的中断时间。
在迁移之前,请考虑清理垃圾数据。
在迁移时,应确保表上没有索引、约束(不包括null)和触发器,并且在数据导入完成后,重新构建索引。同时使用多个进程运行脚本。在索引创建未完成之后,应删除索引的并行属性。
创建约束时,检查约束、主键、唯一键和外键约束的顺序应该是先创建的约束状态是使作用,大大降低了约束创建时间和迁徙完成之后,考虑重新设置为启用验证。
利用dbms_stats.export_schame_stats和dbms_stats.import_schame_stats进口原库的统计信息,而不是使用统计。
朋友们可以看到,以上都是针对9i,事实上,在10G甚至11g环境,它仍然是一个很大的参考。当然,这些技术不仅用于完成数据库的迁移,但也可以应用于单个表复制到其他数据库。
在这里没有提及使用物化视图,如触发或高级复制技术,因为这些技术,毕竟,修改生产基地,生产运行的影响较大,基础因此,只有在非常严格的要求的时间,在这段时间,不能完成迁移应考虑。
从迁移的经验来看,只有一个完整的过程,一个完整的测试才能保证成功。