浏览 5969 次
锁定老帖子 主题:Oracle中Exp/Imp的使用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-24
我们以UNIX为例首先看看如何超越2GB限制. 这需利用UNIX的通用技术, 如管道(named pipe), 数据拷贝工具dd以及数据压缩(compress). 下面分别讨论这几种技术. ·管道 是一种伪文件. 它存在于内存中, 用于快速I/O操作. 管道的缓冲区采用先进先出机制, 即写管道进程写到缓冲区头部而读管道进程读取管道尾部. 建立管道的命令为”mknod filename p". ·dd 允许我们从一个设备拷贝数据到另一个设备. ·compress 为UNIX数据压缩工具. 实施exp之前, 我们可先检查所产生dmp文件的大小. 以下步骤既可实现, 1. 生成管道: $ mknod /tmp/mypipe p 2. exp结果输出到该管道 $ exp file=/tmp/mypipe <...其它exp选项> & 3. 读取管道并把结果输出到管道, 只为查看数据量: $ dd if=/tmp/mypipe of=/dev/null 结果返回exp (.dmp)文件大小, 单位为块(512 bytes). 现在我们可以着手讨论具体方法, 1. 文件压缩 2. 直接exp到磁带 3. 综合方法 首先看文件压缩方法. 利用文件压缩我们可尽量避免dmp文件大小超过2GB限制. 我们利用UNIX的管道技术, 具体步骤如下, 1. 启动compress进程, 使之从管道读取数据并输出到磁盘文件. $ mknod /tmp/exp_pipe p $ compress < /tmp/exp_pipe > export.dmp.Z & 2. exp到管道. $ exp file=/tmp/exp_pipe ... & imp时情况类似. 再看看直接exp到磁带上的方法. $ exp file=/dev/rmt/0m volsize=4G $ imp file=/dev/rmt/0m volsize=4G 最后看看exp到裸设备上的方法, $ exp file=/dev/rdsk/c0t3d0s0 volsize=4G imp类似.以上方法都可使我们避免2GB限制. 下面讨论如何缩短exp索需时间的问题. 目前多数用户会采用exp到磁带的方法只因没有足够的剩余硬盘空间. 而整个exp过程所花时间的大部分都在写磁带上. 通过我们上面对UNIX工具的讨论, 我们可以做到先exp到管道, 再将管道数据压缩后输出到磁带上. 这样写磁带的数据量可大大减少, 从而在相当程度上缩短写磁带时间. 另外从Oracle内部角度讲, 从7.3版开始, Oracle允许用户做direct path export, 即跳过Oracle $ make -f $ORACLE_HOME/rdbms/lib/oracle.mk expst $ make -f $ORACLE_HOME/rdbms/lib/oracle.mk impst 以上步骤产生的可执行文件expst (exp single task)和impst与exp/imp用法完全相同. 使用它们比使用exp/imp可节省多至30%的时间. 但在使用它们时千万要注意一点, 即一定要保证在使用expst/impst时不能有任何其他用户在使用Oracle数据库, 否则数据库会产生不可预知的后果甚至毁坏. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |