EXPORT: ; 增加 BUFFER (eg ) ; 停止所有应用(不一定现实) ; export文件不在ORACLE使用的驱动器上 ; 不要export到NFS文件系统 IMPORT: ; 建立一个indexfile在数据import完成后在建立索引 ; 将import文件放在不同的驱动器上 ; 增加DB_BLOCK_BUFFERS ; 增加LOG_BUFFER ; 用非归档方式运行ORACLE 如果有个大的日志文件当然也会提高速度不过临时加大太烦琐 ALTER DATABASE NOARCHIVELOG; ; 建立大的表空间和大的回滚段OFFLINE其他回滚段回滚段的大小为最大表的/ ; 使用 COMMIT=N ; 使用ANALYZE=N 另外可以用单用户模式导入 或者用管道模式直接导入导出来提高imp/exp的性能 管道的使用方法 在源机器之上(称之为SRC)执行导出 mknod /dev/p_exp p 在目的机器之上(称之为TRGT)执行导出 mknod /dev/p_imp p 在两个机器上通过l s命令确保两个管道都已被创建 ) 将导入管道(在SRC之上)复制到导入管道(在TRGT之上)可以使用任何允 许远程复制的命令(例如rcp)本例通过rsh使用dd命令 在TRGT之上 rsh src dd if=/dev/p_exp > /dev/p_imp ) 启动导出进程 在SRC之上 exp userid=username file=/dev/p_exp full=y direct=y ) 启动导入进程 在TRGT之上 imp userid=username file=/dev/p_imp buffer=???? full=y 另外一种增加导出/导入吞吐量的方法是使用单任务模式的导出和导入实用工具在UNIX上缺省情况下 imp/exp都是以双任务模式链接的(换句话说创建了一个影子进程利用它隔离Oracle内核代码和导出/导入代码 又就是说这些代码变成私有不再给共享了)使用单任务的导出/导入使用工具可以增加整个吞吐量大致为~% 但是以单任务模式链接的实用工具会消耗更多的内存因为Oracle可执行代码不再被所有后台进程和前台进程共享 单任务可执行代码的名字与常规的双任务可执行代码一样除了前者拥有st后缀之外(所以单任务的exp变为expst 单任务的imp变为impst) 单任务模式的实用工具需要通过下面的 命令显式地链接 cd $ORACLE_HOME/rdbms/lib make f ins_rdbmsmk expst make f ins_rdbmsmk impst ins_rdbmsmk要根据oracle版本来决定 这个我自己也没有试过大家可以测试一下把性能比较发上来;) [ Last edited by fly on at : PM ] |