背景环境
生产数据库A:linux环境
测试数据库B:windows环境
需求:从生产库A全量导出oracle数据库,包含存储过程等,然后导入到测试数据库B中,以更新测试数据库。
导出
在生产环境中,使用管理员账号登陆
切换到数据库用户,登录sqlplus并创建目录
1
2
3
4
5su - orall
export ORACLE_SID=hzdev
sqlplus "/as sysdba"
create directory dumpdir as '\tmp';
quit导出数据库dump文件(shell环境,非sqlplus)
1
2
3
4
5expdp srmis/srmis directory=dumpdir dumpfile=20190520.dump full=y parallel=10 logfile=20190520.log
Dump file set for SRMIS.SYS_EXPORT_FULL_01 is:
/tmp/20190520.dump
Job "SRMIS"."SYS_EXPORT_FULL_01" successfully completed at 12:16:49
导入
将导出的dump文件上传到测试环境
在测试环境,登录sqlplus并创建目录
1
2
3
4
5
6
7
8
9C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.3.0 Production on 星期一 5月 20 11:54:07 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
create or replace directory dumpdir as 'D:\新建文件夹';
目录已创建。
quit
从 Oracle Database 11g Release 11.2.0.3.0 - 64bit Production 断开导入数据库dump文件(shell环境,非sqlplus)
1
2
3C:\Users\Administrator>impdp srmis/srmis directory=dumpdir dumpfile=20190520.dump full=y table_exists_action=replace logfile=20190520.log
作业 "SRMIS"."SYS_IMPORT_FULL_01" 已经完成, 但是有 7304 个错误 (于 12:41:19 完成)
扩展说明
- 关于导入时table_exists_action参数,用于选择如何处理重复数据,有四个选项:
- skip:忽略跳过
- append:在原有数据上增加
- replace:先drop表后在创建,最后完成数据插入
- truncate:截断表后并插入
- 导入时由于有些数据异常或者队列已存在,会有错误出现,需根据实际情况判断是否需要修正。