您的位置:首页 > 数据库 > Oracle

ORACLE-数据导入导出-常规exp/imp以及数据泵方式

2017-05-17 11:47 489 查看
博文说明【前言】:
本文将通过个人口吻介绍有关Oracle数据库导入导出相关知识,在目前时间点【2017年5月16号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。
本文所写的导入导出是指在不使用工具的情况下,在命令行下进行的oracle数据库的导入和导出
[b][b]正文:[/b][/b]
一:常规exp/imp,导入导出方法

1、导出:
命令格式:exp user/pwd@IP/SID file=path/sth.dmp full=y ignore=y;
实际案例:
exp mcptest/mcptest@192.168.137.138/cklp file=/home/oracle/cklptest.DMP full=y ignore=y;

2、导入
命令格式:imp user/passwd@IP/SID fileName=fielPath full=y(full 不能少) ignore=y;
实际案例:
imp mcptest/mcptest@192.168.137.138/cklp file=/home/oracle/cklptest.DMP full=y ignore=y;


FILE="D:\移动查勘\228冻结环境\数据库\cklptest.dmp"
LOG="D:\移动查勘\228冻结环境\数据库\imp_cklptest.log"
FROMUSER=CKLPTEST
TOUSER=DJYDCK
IGNORE=Y
FEEDBACK=1000

二:数据泵导入导出方法
一、导出:1. 创建默认导出目录
注意:操作系统级别需要该目录存在,本例中目录为dmp_dir,对应操作系统级别的/orasoft目录
SQL>create directory dmp_dir as'/orasoft';


2. 赋予指定用户在此目录的读写权限
SQL>GRANT READ,WRITE ON DIRECTORY dmp_dir to system;


3. 使用expdp导出数据库
expdp [dba_user/passwd]@SID full=y parallel=2 directory=dmp_dir
dumpfile=<ORACLE_SID>_%U.dmp logfile=log_name.log


二、导入:

1.创建默认导出目录
SQL>create directory dmp_dir as'/app/oracle';


2. 赋予指定用户在此目录的读写权限
SQL>GRANT READ,WRITE ON DIRECTORY dmp_dir to system;


3. 使用impdp工具进行全库导入
impdp [dba_user/passwd]@SID full=y parallel=2 directory=dmp_dir
dumpfile=<ORACLE_SID>_%U.dmp logfile=log_name.log


三:实际案例分析-数据泵导出

1. 创建默认导出目录
SQL>create directory dump_dir as '/orasoft/dumpfile';


2. 赋予指定用户在此目录的读写权限
SQL>GRANT READ,WRITE ON DIRECTORY dump_dir to system;


3. 导出整个数据库【操作系统层面执行该命令】:
# cd /orasoft
# expdp system/manager full=y cluster=no parallel=2 directory=dump_dir dumpfile=fccklpfull_%U.dmp logfile=log_name.log


注意:第三步操作需要在路径/orasoft 目录下执行,这里的server_name是fccklp,dmp名称为fccklpfull是表示整库数据,而且这里必须要写成fccklpfull_%U.dmp 的形式,因为开启了2路并行 就指定了一个文件是不行的,因此需要%U参数。

强烈注意:RAC集群环境无需加@SID,也即只需要输入[dba_user/passwd],后面无需加上@SID

如果导出单个用户,需要额外的再添加一个参数:
expdp [dba_user/passwd]@SID schemas=[用户名] full=y parallel=2
directory=dmp_dir dumpfile=<ORACLE_SID>_%U.dmp logfile=log_name.log


四:RAC集群数据泵导出问题记录:

曾经在RAC集群下执行数据泵导出的时候,出现过问题,后经DBA折腾2小时才弄好,顺便记录下解决过程

1、查询导出任务找到job_name
select * from dba_datapump_jobs


2、进入sqlplus界面,将该工作杀死
stop_job---->yes

3、其他相关sql
删除数据泵默认目录:
delete * from dba_directories where DIRECTORY_NAME="DMP_DIR";


查询数据泵默认目录:
select * from dba_directories;


结尾:

感谢阅读,祝有收获的一天!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle