expdp和impdp常用于ORACLE数据库的导入导出。
expdp导出数据库
1、root用户创建用于impdp/expdp导入导出的目录;
# mkdir -p /home/dmpdata
# chown oracle:oinstall /home/dmpdata
2、切换到oracle用户,dba用户登录创建逻辑目录
sqlplus / as sysdba
SQL> create directory DMP_DATA_DIR as '/home/dmpdata'; #创建
SQL> select * from dba_directories; #查看创建结果
说明:如果已经存在DMP_DATA_DIR目录但是值不同,可先执行drop directory DMP_DATA_DIR;删除重建。
3、给待导出数据库用户TEST赋予在指定目录DMP_DATA_DIR的操作权限
SQL> grant read,write on directory DMP_DATA_DIR to TEST;
4、导出TEST数据库
expdp system/oracle schemas=TEST dumpfile=TEST_20171020.dmp DIRECTORY=DMP_DATA_DIR logfile=expdp_TEST_20171020.log
5、检查/home/dmpdata路径下导出的dmp文件、expdp导出日志结果显示successfully completed则表示导出成功,结束。
impdp导入数据库
前提:预先创建好导入数据库涉及的表空间。如果是大数据量导入,确保空间足够。
方法一:不预先创建数据库,impdp直接导入自动创建TEST2数据库用户,密码为TEST数据库密码。也就是与旧的数据库密码一致。
impdp system/oracle remap_schema=TEST:TEST2 directory=DUMP_DATA_DIR dumpfile=expdp_TEST_20171020.dmp logfile=impdp_TEST2_20171020.log
方法二:预先创建数据库,impdp导入待EXCLUDE=user参数,可以避免出现ORA-31684错误。
1、预先创建数据库
SQL> create user test2 identified by test2;
SQL> grant dba,connect,resource to test2;
SQL> grant read,write on directory DMP_DATA_DIR to TEST2;
2、导入备份的数据库
impdp system/oracle remap_schema=TEST:TEST2 EXCLUDE=user directory=DUMP_DATA_DIR dumpfile=expdp_TEST_20171020.dmp logfile=impdp_TEST2_20171020.log
说明:如果导入的表空间发生变化,可以使用remap_tablespace=old_tablespace:new_tablespace解决,类似remap_schema参数
基本设计思路
参考impdp/expdp手工操作
使用方法
1、下载代码:exp_imp_oradb.sh
2、登录root用户,创建/home/dmpdata目录,并赋权限chown oracle:oinstall /home/dmpdata
3、上传expimp_db.sh文件到oracle用户的相关目录下,可任意目录。
4、执行chmod +x exp_imp_oradb.sh赋予可执行权限。
5、执行expimp_db.sh imp db1 [db2] 导入数据库 或者expimp_db.sh exp db1 [db2] 导出数据库
说明:导入时数据库的dmp文件名为expdp_${CURRENT_DATE}_${dbname}.log。就是中间的时间变量是当前日期,如果不是,手工修改再执行。