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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE-数据导入导出-常规exp/imp以及数据泵方式相关的知识,希望对你有一定的参考价值。

博文说明【前言】:

    本文将通过个人口吻介绍有关Oracle数据库导入导出相关知识,在目前时间点【2017年5月16号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。


    本文所写的导入导出是指在不使用工具的情况下,在命令行下进行的oracle数据库的导入和导出 



正文:


一:常规exp/imp,导入导出方法


1、导出:

命令格式:exp user/[email protected]/SID file=path/sth.dmp full=y ignore=y;

实际案例:

exp mcptest/[email protected]/cklp file=/home/oracle/cklptest.DMP full=y ignore=y;


2、导入

命令格式:imp user/[email protected]/SID fileName=fielPath full=y(full 不能少) ignore=y;

实际案例:

imp mcptest/[email protected]/cklp file=/home/oracle/cklptest.DMP full=y ignore=y;



二:数据泵导入导出方法


一、导出:


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;






结尾:



     感谢阅读,祝有收获的一天!





本文出自 “清风揽月的博客” 博客,请务必保留此出处http://watchmen.blog.51cto.com/6091957/1926565

以上是关于ORACLE-数据导入导出-常规exp/imp以及数据泵方式的主要内容,如果未能解决你的问题,请参考以下文章

oracle exp imp实现导出导入

Oracle中用exp/imp命令快速导入导出数据

Oracle exp/imp数据导入导出工具基本用法

Oracle中用exp/imp命令快速导入导出数据

linux 下使用exp/imp 或者expdp/impdp导出导入oracle数据表数据

windows上oracle数据库导入导出数据