Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
10g中除了常规的导出工具exp/imp外,还有效率更高的EXPDP/IMPDP.
每次要临时写脚本不但容易出错还麻烦。方便后续的工作,写两个脚本。
查看帮助:
impdp -help
expdp -help
使用EXPDP/IMPDP前必须要创建directory
1.创建directory
SQL>create or replace directory DPUMPDIR as '/oracle/backup/dmp' ;
2.查询directory
SQL>select * from dba_directories ;
3. 授予read,write 权限给导出用户
SQL>grant read ,write on directory DPUMP_DIR to user;
4.导出脚本expdp.sh
#!/usr/bin/ksh
#. /home/oracle/.profile;
echo "***********************************************";
echo "* NAME : expdp_newclaim.sh *";
echo "* SUBJECT : SAA PRODUCT BACKUP *";
echo "* DATE : 2010-11-12 *";
echo "* AUTHOR : LIANG WEI *";
echo "* *";
echo "* *";
echo "***********************************************";
expdpDate=$(date +%Y%m%d);
userid="user/password";
cd /arch01/oracle/backup/dmp
echo " ***** bakup time ${expdpDate} ******* "
filename="newclaim${expdpDate}.dmp"
expdp ${userid} directory=dpump_dir dumpfile=${filename} parallel=4 job_name=myjob4 logfile=newclaim${expdpDate}.log
参数说明:
1.userid中指明了导出用户的用户名和密码
2./arch01/oracle/backup/dmp为备份路径
3.filename 为备份文件名
4.directory指授予该用户拥有read,write权限的directory
5. dumpfile为备份的文件名
6.parallel 指定并行度为4
7.job_name 为job名,可以随便起
8.logfile为日志文件名
5.导入脚本impdp.sh
impdpDate=$(date +%Y%m%d);
userid="newuser/newpassword";
cd /home/oracle/ca_data
echo " ***** bakup time ${impdpDate} ******* "
filename="newclaim${impdpDate}.dmp"
impdp ${userid} directory=dpump_dir dumpfile=${filename} REMAP_SCHEMA=user:newuser remap_tablespace=tbs_old:tbs_new job_name=j2 logfile=1.log
参数说明:
如果导出和导入的用户名不一致可以指定remap_schema参数。
user为原用户名,newuser为新用户名。
如果导出和导入的表空间不一致可以指定remap_tablespace参数。
tbs_old为原表空间名。tbs_new为新表空间名。
上述脚本可以简化如下:
导出命令:
expdp user/password directory=dump_dir dumpfile=test.dmp parallel=4 job_name=myjob logfile=test.log
导入命令:
impdp newuser/newpassword directory=dump_dir dumpfile=test.dmp remap_schema=user:newuser
remap_tablespace=tbs_old:tbs_new