数据据泵与exp/imp 来说性能有很大的提高,其中影响最大的就是paralle。可以这么来看: expdp/impdp=exp/imp+direct mode + paralle. 所以,使用数据泵,要想提高速度,就要设置并行参数。(expdp没开并行,基本上和直接路径exp没两样),其他调整比如REDO,tmp表空间等这里就不讲了。
如果我们使用如下语句:
1 |
expdp full=y directory=dump dumpfile=orcl_%U.dmp parallel=4 |
那么expdp将为parallel 创建4个文件: ORCL_01.DMP,RCL_02.DMP ,ORCL_03.DMP,RCL_04.DMP。 每个进程一个文件。 这样的话,每个文件的大小会因进程而不同。可以某个文件很大,某个文件却很小。要解决这个问题,就是设置filesize 参数。来指定每个文件的最大值。这样当一个文件达到最大值的之后,就会创建一个新的文件。如:
1 |
expdp full=y directory=dump dumpfile=orcl_%U.dmp parallel=4 filesize=50M |
导出的dump文件和paralle有关系,那么导入也有关系。 paralle要小于dump文件数。如果paralle 大于dump文件的个数,就会因为超过的那个进程获取不到文件,就不能对性能提高。
一般parall 参数值等于CPU 的个数。而且要小于dump文件的个数。
查看CPU 个数:
1 |
SQL> show parameter cpu |
导出导入的过程,尽量避免用ssh连上服务器,在客户端的ssh里执行备份恢复命令。因为这样,如果连接中断,备份也就中断了。可以将备份脚本添加到crontab 里。让备份在服务器上执行。这样即使ssh中断,备份和恢复也不受影响。