美文网首页Oracle数据库问题记录
Oracle数据泵的导入导出

Oracle数据泵的导入导出

作者: 单名一个冲 | 来源:发表于2018-11-27 10:21 被阅读12次
导出操作(源库):
  1. 创建以供存储导出数据库文件的文件夹(源数据库服务器操作)
  • root用户下创建数据泵文件目录并赋予权限
创建文件
mkdir <文件目录>

赋与Oracle权限与rwx权限
chown -R oracle:oinstall <文件目录>
chmod -R <rwx> <文件目录>
  1. 创建数据泵目录(源数据库服务器操作)
  • 在DBA账号下创建数据泵并赋权
登陆并创建数据泵
su - oracle
sqlplus / as sysdba
create or replace directory <数据泵名称> as '<数据泵文件目录>';

查看所有数据泵及数据泵文件目录
select * from dba_directories;

赋予该用户的读写权限
grant read, write on directory <数据泵名称> to <Oracle用户>;
  1. id检查当前用户,在Oracle用户下导出数据文件
cd <数据泵文件目录>
nohup expdp \"/ as sysdba\ " directory=<数据泵名称> dumpfile=<生成的文件名.dmp> logfile=<日志名.log> TABLES=<需要导出的表名>  version=<Oracle版本号> &
tail -f nuhup.out

参数说明:
nohup ... &         可后台执行,并输出日志文件
directory           数据泵名称
dumpfile            生成的dmp文件(导出文件)
logfile             数据泵导出日志
TABLES              表名,可以写多个用,隔开
version             Oracle版本号
full=y              表示全库导入导出(选填)
cluster=N           告知是集群,个别数据库版本需要加
tail -f nuhup.out   查看输出日志
  1. 传输到目标库(或将目录通过存储层面直接挂载至目标主机),将接收文件夹权限改为777,无免密访问提示输入密码
scp -r <文件或目录> user@0.0.0.0:<接收目录>
例:scp -r /data root@127.0.0.1:/data
也可以从目标主机去取源库文件
例:scp -rp root@127.0.0.1:/data /data
导入操作(目标库):
  1. 从目标主机检查传输过来的数据文件权限
chown -R oracle:oinstall <目录>
chmod -R 777 <目录>
  1. 目标库建立数据泵
su - oracle
sqlplus / as sysdba
create or replace directory <数据泵名称> as '<数据泵文件目录>';

查看所有数据泵及数据泵文件目录
select * from dba_directories;

指定公有,也可以指向某一用户
grant read, write on directory <数据泵名称> to public;
  1. 导入目标数据库(full=y,表示全库导入导出)
nohup impdp <Oracle用户>/<密码> directory=<数据泵名称> dumpfile=<导入文件名>.dmp TABLE_EXISTS_ACTION=REPLACE logfile=<日志名>.log cluster=N full=y &
也可以使用多进程执行导入,但是可能多进程执行时会报主外键关系错误
nohup impdp <Oracle用户>/<密码> directory=<数据泵名称> dumpfile=<导入文件名>.dmp TABLE_EXISTS_ACTION=REPLACE logfile=<日志名>.log cluster=N parallel=4 full=y &

参数说明:
nohup ... &         可后台执行,并输出日志文件
directory           数据泵名称
dumpfile            生成的dmp文件(导入文件)
logfile             数据泵导出日志
parallel            进程数(应小于cpu核心数)
TABLE_EXISTS_ACTION 指定表存在的处理方式
version             Oracle版本号
full=y              表示全库导入导出(选填)
cluster=N           告知是集群,个别数据库版本需要加
tail -f <日志名>   查看输出日志
REMAP_SCHEMA=<源用户>:<目标用户>  指定导入用户
remap_tablespace=<源表空间>:<目标表空间>  指定导入表空间

其他:

  • 问题:
ORA-01157: cannot identify/lock data file 1029 - see DBWR trace file

原因:数据库数据字典还记录临时表空间TEMP的信息,但是其对应的数据文件已经不存在

  • 解决:
创建一个临时的临时表空间
create temporary tablespace temp00   tempfile '+DATA' size 1G autoextend on;

将数据库临时表空间调整未新建的临时表空间
alter database default temporary tablespace temp00;

删除原有的临时表空间以及其对应的数据文件
drop tablespace temp including contents and datafiles;

相关文章

网友评论

    本文标题:Oracle数据泵的导入导出

    本文链接:https://www.haomeiwen.com/subject/pqbkfqtx.html