博文说明【前言】:
本文将通过个人口吻介绍有关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;
结尾:
感谢阅读,祝有收获的一天!