学习笔记imp/exp tunning

imp/exp优化

标签: buffer数据库importoraclearchive优化
3727人阅读 评论(0) 收藏 举报
本文章已收录于:
.embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px #ededed; } .embody_b{ margin:0 ; padding:10px 0; } .embody .embody_t,.embody .embody_c{ display: inline-block; margin-right:10px; } .embody_t{ font-size: 12px; color:#999; } .embody_c{ font-size: 12px; } .embody_c img,.embody_c em{ display: inline-block; vertical-align: middle; } .embody_c img{ width:30px; height:30px; } .embody_c em{ margin: 0 20px 0 10px; color:#333; font-style: normal; }
category_icon.jpg 分类:
Oracle Optimization(30) arrow_triangle%20_down.jpg arrow_triangle_up.jpg


 

imp的优化

Imp调优

Oracle Import进程需要花比Export进程数倍的时间将数据导入数据库。某些关键时刻,导入是为了应对数据库
的紧急故障恢复。为了减少宕机时间,加快导入速度显得至关重要。没有特效办法加速一个大数据量的导入,但
我们可以做一些适当的设定以减少整个导入时间。

1.避免I/O竞争

Import是一个I/O密集的操作,避免I/O竞争可以加快导入速度。如果可能,不要在系统高峰的时间导入数据,不
要在导入数据时运行job等可能竞争系统资源的操作。

2.将数据库设置到noarchivelog模式

sql > archive log start;
sql > archive log stop;

3.增加排序区

Oracle Import进程先导入数据再创建索引,不论INDEXES值设为YES或者NO,主键的索引是一定会创建的。创建
索引的时候需要用到排序区,在内存大小不足的时候,使用临时表空间进行磁盘排序,由于磁盘排序效率和内存
排序效率相差好几个数量级。增加排序区可以大大提高创建索引的效率,从而加快导入速度。

8i及其以下版本:导入数据前增加数据库的sort_area_size大小,可设为正常值的5-10倍。但这个值设定会影响
到所有会话,设的过高有可能导致内存不足出现paging, swapping现象。更为稳妥的方法是,对于大表和索引特
别多的表,只导数据不导索引。导完数据后,创建一个会话,设定当前会话的sort_area_size一个足够大的值,
再手工创建索引。

9i:在workarea_size_policy=AUTO的情况下,所有会话的UGA共用pga_aggregate_target定义的内存,不必单独
设定sort_area_size。导入数据前增加pga_aggregate_target大小,如果机器内存够大,可从通常设定的500M提
高到1-2G。pga_aggregate_target大小可以动态调整,导入完成后可在线调回原值。

我在9i系统里

alter system set pga_aggregate_target=2000m scope=spfile;

4.调整BUFFER选项

Imp参数BUFFER定义了每一次读取导出文件的数据量,设的越大,就越减少Import进程读取数据的次数,从而提
高导入效率。BUFFER的大小取决于系统应用、数据库规模,通常来说,设为百兆就足够了。但我一般都设置为
buffer=409600000

5.使用COMMIT=Y选项

COMMIT=Y表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次。这样会大大减少对系统回滚段等
资源的消耗,对顺利完成导入是有益的。

6.使用INDEXES=N选项

前面谈到增加排序区时,说明Imp进程会先导入数据再创建索引。导入过程中建立用户定义的索引,特别是表上
有多个索引或者数据表特别庞大时,需要耗费大量时间。某些情况下,需要以最快的时间导入数据,而索引允
许后建,我们就可以使用INDEXES=N 只导入数据不创建索引,从而加快导入速度。

我们可以用INDEXFILE选项生成创建索引的DLL脚本,再手工创建索引。我们也可以用如下的方法导入两次,第
一次导入数据,第二次导入索引。

7.增加LARGE_POOL_SIZE

如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等参数,tnsnames.ora中又没有(SERVER=DEDICATED)
的配置,那么数据库就使用了共享服务器模式。在MTS模式下,Exp/Imp操作会用到LARGE_POOL,建议调整
LARGE_POOL_SIZE到150M。

检查数据库是否在MTS模式下:

SQL>select distinct server from v$session;

如果返回值出现none或shared,说明启用了MTS

8.临时表空间大小确认,最好大点,根据情况自己而定,不要让他狂增

9.如果你是按数据文件导入的话,可以并行导入,多起几个导入过程,可以提高速度

10.如果是不同机器上的话,尽量把机器放到同一个局域网,不要走太多的交换机


例如:
[oracle@localhost ~]$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@localhost ~]$ nohup imp userid= system/aibo fromuser=hpo5 touser=hpo5 file=/tmp/hpo5_090319.dmp log=/tmp/hpo5_1.log indexes=n indexfile=/tmp/hpo5_index ignore=y commit=y  feedback=100000  buffer=409600000


技术经验总结:
1.根本问题是:没有将目标端的索引和约束全部去掉,估计是在不停的插入过程中一直在扫描索引,具体的原理还得深入研究;
2.在回滚段够大的情况下,可以不用加commit=y参数,频繁的提交会影响效率;
3.在表比较小的情况下可以考虑使用DBLINK迁移;
4.在迁移的过程中时刻注意各种空间是否够用(包括redolog,archivelog,undo segment,temp tablespace);
5.查找是否有其他的因素干扰任务的进展,我的任务中就是因为after类的trigger给我添乱不少;
6.多google,多查询,只有遇到问题,思考问题,解决问题才能迅速的提高

 
exp优化

参考imp的优化

1.加大buffer
2.直接路径导出,direct=y
3.不导统计和索引

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8568259/viewspace-2103810/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8568259/viewspace-2103810/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值