Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2119545
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:09:34

EXPORT:

        增加 BUFFER (eg. 2800000)
        停止所有应用(不一定现实)
        export文件不在ORACLE使用的驱动器上
        不要export到NFS文件系统


IMPORT:
        建立一个indexfile,在数据import完成后在建立索引
        将import文件放在不同的驱动器上
        增加DB_BLOCK_BUFFERS
        增加LOG_BUFFER
        用非归档方式运行ORACLE:
                --如果有个大的日志文件当然也会提高速度,不过临时加大太烦琐
       ALTER DATABASE NOARCHIVELOG;
        建立大的表空间和大的回滚段,OFFLINE其他回滚段,回滚段的大小为最大表的1/2
        使用 COMMIT=N
        使用ANALYZE=N

另外可以用单用户模式导入
或者用管道模式直接导入导出来提高imp/exp的性能

管道的使用方法
在源机器之上(称之为SRC)执行导出:
mknod /dev/p_exp p
在目的机器之上(称之为TRGT)执行导出:
mknod /dev/p_imp p
在两个机器上通过l s命令确保两个管道都已被创建。
2) 将“导入管道(在SRC之上)”复制到“导入管道(在TRGT之上)”。可以使用任何允
许远程复制的命令(例如rcp)。本例通过rsh使用dd命令。
在TRGT之上:
rsh src dd if=/dev/p_exp > /dev/p_imp
3) 启动导出进程。
在SRC之上:
exp userid=username file=/dev/p_exp full=y direct=y
4) 启动导入进程。
在TRGT之上:
imp userid=username file=/dev/p_imp buffer=???? full=y
     
另外一种增加导出/导入吞吐量的方法是使用单任务模式的导出和导入实用工具。在UNIX上,缺省情况下
imp/exp都是以双任务模式链接的(换句话说,创建了一个影子进程,利用它隔离内核代码和导出/导入代码,
又就是说这些代码变成私有,不再给共享了)。使用单任务的导出/导入使用工具可以增加整个吞吐量大致为0~20%。
但是,以单任务模式链接的实用工具会消耗更多的内存,因为可执行代码不再被所有后台进程和前台进程共享。
单任务可执行代码的名字与常规的双任务可执行代码一样,除了前者拥有“st”后缀之外(所以单任务的exp变为expst,
单任务的imp变为impst)。
单任务模式的实用工具需要通过下面的
命令显式地链接:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk expst     
make -f ins_rdbms.mk impst
-- ins_rdbms.mk要根据oracle版本来决定

这个我自己也没有试过,大家可以一下,把性能比较发上来;)

[ Last edited by fly115 on 2004-6-30 at 08:49 PM ]
【责编:wayen】

--------------------next---------------------

阅读(210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~