imp imp的buffer和commit 使用undo与redo |
发表者:admin分类:数据库2015-08-21 11:42:50 阅读[2472] |
imp的buffer和commit分析
ignore=y 无视表存在错误。
将buffer 缓存设置成100M,如果我的SGA与配置足够好。可以加在buffer。
注意使用之前要加大undo表空间,会爆满。满后,会导致失败。
commit=y 导入一定数据量会自动提交。
如果数据量大,提交会频繁,请导入数据之前,将自己的redo 文件值修改大些。以免提交频繁,导致出错。
imp user1/user1 tables=t1 file=exp_1.dmp log=imp_t1.log ignore=y statistics=none
如果使用以上命令,就会使用undo表空间,会爆满。再使用之前加大undo表空间,不然满后,会导致失败。
Imp的commit和buffer分析:
Imp的commit影响:
imp的commit主要用于大表数据插入时减少回滚段的压力,以免出现长时间导入而出现的回滚段过久ora-01555,结合buffer设置则能按照buffer的大小进行分批提交,可以有效的减轻undo压力。
但是如果对于插入lob、long、ref、rowid等字段时设置commit=y则会逐条commit,我们都清楚对于批量插入数据逐条commit会降低性能,所以这里需要依据表中的具体信息。
而且还存在一个因素则是结合buffer区大小批量commit提交时,如果出现表空间,连接丢失等问题导致imp失败,则可能只提交一批数据,此时带来的影响还是很大的,即使再次插入根据主键筛选依然会出现大量的错误,而imp对这些错误的排查则会降低大量性能,这也可能是oracle默认的imp工具中commit=n缘由吧。
Imp的buffer效果
生产环境下,oracle 9I下sga大概8G,pga大概6g,需要导入一个2.7g以上的大表到成产库中,
由于是同事着手运用imp工具的默认buffer=30K,用时大概一个小时还没有结果,
考虑到pga还是很大的,跟同事商议加上buffer=409600000设置buffer大概400M的,15分钟内imp完成。
当然运用impdp然后运用parallel=n效率当然更加理想了!
首先建好了表结构,再导入数据
imp user1/user1 tables=t1 file=exp_1.dmp log=imp_t1.log ignore=y buffer=102400000 commit=y statistics=none
statistics=none 参数,不使用统计信息,不然,会导致锁表。ignore=y 无视表存在错误。
将buffer 缓存设置成100M,如果我的SGA与配置足够好。可以加在buffer。
注意使用之前要加大undo表空间,会爆满。满后,会导致失败。
commit=y 导入一定数据量会自动提交。
如果数据量大,提交会频繁,请导入数据之前,将自己的redo 文件值修改大些。以免提交频繁,导致出错。
imp user1/user1 tables=t1 file=exp_1.dmp log=imp_t1.log ignore=y statistics=none
如果使用以上命令,就会使用undo表空间,会爆满。再使用之前加大undo表空间,不然满后,会导致失败。
转载请标明出处【imp imp的buffer和commit 使用undo与redo】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
Tags: | [阅读全文...] |
最新评论