我们在做exp的时候,如果希望能实现一边导出边压缩,我们可以用管道技术也实现。
root用户建立管道:
1 |
mknod /opt/exp_path/test_pipe p |
1 2 3 4 |
注:mknod用法: mknod name b|c major minor mknod name p 在这里我们只建立管道,只需用第二种方法即可 |
注意/opt/exp_path该路径的权限,如果只用来做导出,那么只需要进入目录和写目录的权限即可(x和w):
1 |
chmod 733 /opt/exp_path |
如果需要即做exp,又做imp,那么需要xrw的权限:
1 |
chmod 777 /opt/exp_path |
当然,如果我们是在oracle属主的目录下,就不必赋予其他权限了。
1 2 3 4 5 |
注:chmod的后面参数意义: chmod abc file_name abc表示User、Group、及Other的权限 r=4,w=2,x=1 如果file_name是个目录,x代表能进入这个目录 |
开始做exp:
1 2 |
exp sh/sh owner=sh file=/opt/exp_path/test_pipe & gzip < /opt/exp_path/test_pipe > exp.dmp.gz |
注意此处,文件是生产在当前的执行目录,不是在/opt/exp_path/(虽然要求/opt/exp_path/目录有写权限),文件生成的地点是根据gzip 决定。在执行gzip之前,不会有文件生成,执行gzip后,有压缩文件生产。
同理,做imp也是一样可以用管道技术,不过gzip要换成gunzip了。:)
一条评论
请教下,如果exp有多个文件,例如exp sh/sh owner=sh filesize=2g file=01.dmp,02.dmp,03.dmp……,请问有没有办法让它递归产生04.dmp,05.dmp这样子一直到数据完全导出,并且如何让它递归产生文件的同时压缩?