您的位置:首页 > 数据库 > Oracle

【Oracle】利用管道导入用户数据

2010-11-15 15:31 204 查看
在生产环境中,Oracle 数据库每天凌晨 3:00 进行全库数据备份,由于数据巨大,因此备份出来的数据都直接进行压缩保存,并按 db<MMDD>.dmp.gz 规则进行命名。
因测试要求,需将 db1113.dmp.gz 备份文件中的 cw 用户数据导入到测试服务器上,由于测试服务器中磁盘空间不足,无法正常将 db1113.dmp.gz 文件进行解压,因此使用 mknod -p 创建管道的方式进行用户数据导入。

$ df -g | grep Oracle
/dev/oralv        90.00     41.08   55%    17421     1% /Oracle

$ ls -l db1113.dmp.gz
-rw-r--r--    1 root     system   2804225957 Nov 13 12:58 db1113.dmp.gz

1. 删除 cwtest 用户及数据
$ sqlplus '/as sysdba'
SQL> DROP USER cwtest CASCADE;

2. 创建 cwtest 用户并授权
SQL> CREATE USER cwtest IDENTIFIED BY cw8899 DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp;
SQL> GRANT connect,dba to cwtest;
SQL> exit

3. 通过 mknod -p 创建管道 /Oracle/imppipe
$ mknod /Oracle/imppipe p

4. 导入 cw 用户数据到 cwtest 用户
$ imp cwtest/cw8899 file=/Oracle/imppipe fromuser=cw touser=cwtest & gunzip < db1113.dmp.gz > /Oracle/imppipe

5. 删除管道
$ rm -fr /Oracle/imppipe

 

PS: 利用管道也可以在导出数据时直接进行压缩,参考指令如下:
$ mknod /Oracle/exppipe p
$ exp system/manager full=y inctype=complete file=/Oracle/exppipe & gzip -9 < /Oracle/exppipe > /Oracle/db1113.dmp.gz
$ rm -fr /Oracle/exppipe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息