昨天在导入一个dmp,发现特慢,一个2G的dmp,导了1个小时都没导完,查看了一下等待的SQL,大部份是在执行导入数据库对像的统计信息。记忆中import是可以设置不导入统计信息的。于是查询了一下官方文档,并做了一些测试,总结如下。
import执行导入时,缺省会将export的dmp统计信息导入,当数据库的对像(表,分区,索引)比较多的情况下,要将这些统计信息导入将花费比较长的时间。
如果统计信息不太重要的数据库,如测试数据库或只是为了查找一些表数据的数据库,可以先不导入统计信息,等数据导入完成后,空闲时间再重新生成统计信息。
oracle import可以设置导入时数据库统计信息如何处理,具体可以设置statistcs参数.statistics参数官方说明如下:
STATISTICS
缺省值:ALWAYS
说明:指定导入时关于数据库统计信息如何处理
有如下选项:
有如下选项:
ALWAYS
总是导入数据库统计信息.
总是导入数据库统计信息.
NONE
不导入数据库统计信息.
不导入数据库统计信息.
SAFE
当dmp中统计住处没有问题时导入数据库统计信息,如果有问题,则重新生成统计信息.
当dmp中统计住处没有问题时导入数据库统计信息,如果有问题,则重新生成统计信息.
RECALCULATE
总是重新生成统计信息.
总是重新生成统计信息.
官方原文:
STATISTICS
Default: ALWAYS
Specifies what is done with the database optimizer statistics at import time.
The options are:
The options are:
ALWAYS
Always import database optimizer statistics regardless of whether or not theyare questionable.
Always import database optimizer statistics regardless of whether or not theyare questionable.
NONE
Do not import or recalculate the database optimizer statistics.
Do not import or recalculate the database optimizer statistics.
SAFE
Import database optimizer statistics only if they are not questionable. If they arequestionable, recalculate the optimizer statistics.
Import database optimizer statistics only if they are not questionable. If they arequestionable, recalculate the optimizer statistics.
RECALCULATE
Do not import the database optimizer statistics. Instead, recalculate them onimport.
Do not import the database optimizer statistics. Instead, recalculate them onimport.
注:SAFE选项本人没有测试出来,把统计信息强制设置成偏差很大都没有效果,不太清楚什么是有问题的统计信息。
本人在PC机上用import导入一个dmp时,dmp才2G,但dmp数据库的对像数有26000,如果按普通导入估计要1小时以上,不导入统计信息只花了约13分钟. 以上数据在oracle10.2.0.1 windows2003平台上测试通过。
Oracle9.2 对于STATISTICS参数好像有bug,设置了没作用,总是会导入统计信息,但是可以设置ANALYZE=NO/YES来选择是否导入统计信息。