Oracle数据库备份/导入工具

服务器

浏览数:177

2019-9-16

  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。就是中间的时间变量是当前日期,如果不是,手工修改再执行。

作者:Beng Dou