这里假设已存在数据库用户,并是计划通过该用户导入导出该用户表空间上的数据。(我们这里假定用户名称为ls)

1.创建逻辑目录(数据库命令,sqlplus中执行)

Oracle不能直接指定系统目录让他去读写文件,只能先将系统目录映射成Oracle中的逻辑目录其才能读写。

先以sysdb登录,将系统/oracle/dump目录映射成Oracle的逻辑目录impexp;然后赋给导入导出用户在该目录的读写权限

create directory impexp as '/oracle/dump';
grant read,write on directory impexp to ls;

另外后边的参logfile是用于记录导入导出的日志文件,文件名随意;schemas应该是导出的用户名。

2.expdp导出数据(非数据库命令,在主机命令行而非sqlplus中执行)

expdp ls/lsdb123#@lsdb directory=impexp dumpfile= lsdb.dmp logfile=lsdb.log  schemas= ls

3.impdp导入数据(非数据库命令,在主机命令行而非sqlplus中执行)

impdp ls/lsdb123# directory=impexp dumpfile= lsdb.dmp logfile= lsdb.log  schemas= ls

如果要导到的用户与导出dumpfile的用户名不一样则要使用remap_schema代替schemas,将旧用户名指向新用户名:

impdp user_new/pass_new directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log remap_schema=user_old:user_new

如果要导到的表空间名称不一样,则要使用remap_tablespace将旧表空间名指向新表空间名:

impdp ls/lsdb123# directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log schemas=ls remap_tablespace=tablespace_old:tablespace_new

如果要导到的用户名和表空间名与原来导出时的都不一样,那么要同时使用remap_schema和remap_tablespace:

impdp user_new/pass_new directory=impexp dumpfile=lsdb.dmp logfile=lsdb.log remap_schema=user_old:user_new  remap_tablespace=tablespace_old:tablespace_new

如果导出的dmp文件中有多个表空间,那么remap_tablespace写多个:

impdp ls/lsdb123# directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log schemas=ls remap_tablespace='(tablespace_old1:tablespace_new1,tablespace_old2:tablespace_new2)'

如果原先已有数据,想使用覆盖导入使用table_exists_action=replace:

impdp ls/lsdb123# directory=impexp dumpfile= lsdb.dmp logfile= lsdb.log  schemas= ls table_exists_action=replace

如果expdp限制了单个文件大小使用%U导出多个文件(比如6个),则导入:

impdp lsdb/lsdb123# directory=impexp dumpfile=lsdb_%U.dmp logfile= lsdb.log  schemas= lsdb  parallel=

4.导错处理

导入报错后一般是删除用户及其所有对象然后重导

drop user lsdb cascade;     --删除lsdb用户及其所有对象
select sid,serial# from v$session where username='lsdb'; --如果用户存在活动会话则drop会失败所以先查找到用户会话
alter system kill session'sid_num,serial#_num'; --杀除用户会话

imp导入:

imp lsdb/lsdb123#@lsdb fromuser=lsdb touser=lsdb file=/oracle/backup/lsdb.dmp log=/oracle/backup/lsdb.log

格式:imp 数据库用户/用户密码@数据库实例 fromuser=导出时的用户 touser=导入到的用户 file=导出的dmp文件当前所在目录 log=导入日志文件要存放的位置

报错:IMP-00013: only a DBA can Import a file Exported by another DBA

原因:用于导入数据的lsdb用户没有dba权限

处理:使用sys等dba用户导入或赋权:grant imp_full_database to lsdb

执行脚本文件(类似mysql的source)

sqlplus user/pass@servicename</path/to/sql_script.sql
SQL>start /path/to/sql_script.sql
SQL>@ /path/to/sql_script.sql

参考:

http://blog.csdn.net/haitaofeiyang/article/details/72026962

http://blog.csdn.net/by84788186/article/details/8958332

http://www.jb51.net/article/76786.htm

Oracle使用expdp/impdp导出导入数据的更多相关文章

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

    一.环境配置 1.执行环境: exp/imp可以在客户端执行也可以在服务器端执行,在客户端执行需要先安装有oracle的客户端,如果是linux系统,就是以oracle用户登录,在控制台下执行.建议在 ...

  2. Oracle expdp/impdp导出导入命令及数据库备份

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  3. Oracle expdp/impdp导出导入命令及数据库备份(转)

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  4. Oracle数据库备份 expdp/impdp导出导入命令

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  5. Oracle使用expdp/impdp迁移数据

    Oracle使用expdp/impdp迁移数据 1.#以下步骤在开发库执行(expdp导出) 一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. sqlplus / ...

  6. GreenPlum/postgres copy命令导出/导入数据

    一.COPY命令简单实用 1.copy在postgres与GreenPlum介绍 1.1 postgrespostgres的COPY命令可以快速的导出/导入数据到postgresql数据库中,支持常用 ...

  7. Linux服务器下对Oracle数据库expdp(导出)和impdp(导入)

    紧接上篇文章,Oracle数据库架构已经创建完成,我的需求是:将老服务器上的数据库迁移到新的数据库上. 这就用到impdp(导入)操作. 要想实现对新数据库的impdp(导入)工作, 首先需要从老的数 ...

  8. ORACLE expdp/impdp导出实例

    服务器上以sys或system超级管理员登录. SQL>create directory expdp_dir as '/home/oracle/dmpdata';(dmpdata 需要建立.赋予 ...

  9. expdp impdp 数据库导入导出命令详解

    一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建.create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员目录(同时 ...

随机推荐

  1. C#在高分屏上让窗体程序忽略系统的显示缩放

    [STAThread] static void Main() { ) SetProcessDPIAware(); Application.EnableVisualStyles(); Applicati ...

  2. 【Python】【有趣的模块】【requests】【一】HTTP头信息总结

    [HTTP请求 == 请求行 + 消息报头 + 请求正文 ] 请求行:Method Request-URL HTTP-Version CRLF HTTP协议定义了许多与服务器交互的方法 ① PUT:请 ...

  3. SourceTree/git解决pre-commit hook failed的问题

    一. git commit -m 'xxx' 出现问题 今天在上传项目的时候在commit阶段遇到一个问题,无论是在Sourcetree上传还是用命令git commit -m 'xxx'都报了一下错 ...

  4. 理解git的分支原理,更好地使用git

    文章内容转载于git-scm. 部分内容涉嫌枯燥 一.git分支概念 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控 ...

  5. Oracle(限定查询1)

    3.1.认识限定查询 例如:如果一张表中有100w条数据,一旦执行了“SELECT * FROM 表”语句之后,则将在屏幕上显示表中的全部数据行的记录,这样即不方便浏览,也有可能造成死机的问题出现,所 ...

  6. tkinter拦截关闭事件

    import tkinter as tk from tkinter import messagebox root = tk.Tk() def on_closing(): if messagebox.a ...

  7. mysql 5.7.18 winx64安装配置方法

    在mysql-5.7.18-winx64文件夹下新建my.ini文件 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置 ...

  8. Uncaught TypeError: (intermediate value)(...) is not a function 上一个方法结束没有加分号; 代码解析报错

    Uncaught TypeError: (intermediate value)(...) is not a function 别忽略了,  第一个方法后面的结束 分号; 不起眼的,引来麻烦, 哎,规 ...

  9. tensorflow example1

    用tensorflow实现J(w)=w**2-10*w+25的微分结果 import numpy as npimport tensorflow as tf w=tf.Variable(0,dtype= ...

  10. Vuex结合 async/await 优雅的管理接口请求

    先看看 async/await 的语法 async 函数返回一个 Promise 对象 async 函数内部 return 返回的值.会成为 then 方法回调函数的参数. 1 2 3 4 async ...