oracle数据库导入导出expdp/impdp命令详细操作过程

一、 我们为什么现在要用expdp/impdp命令,而不是使用exp/imp命令来备份/还原数据库?

  • expdp/impdp命令,我们也通常称之为“数据泵(DataPump”,它具有以下优点:

在性能上,具有并行处理能力,因此可以获得性能上的优势,加快导入导出速度。

在功能上,

——为数据及数据对象提供更细微级别的选择性

——可以设定数据库版本号(主要是用于兼容老版本的数据库系统)

——预估导出作业所需要的磁盘空间

——支持导入时重新映射功能(即将对象导入到新的目标数据文件,架构,表空间等)

——支持元数据压缩及数据采样

 

  • 限制条件:

数据泵是服务端的实用程序,只能在数据库服务器上执行,不能在客户端执行。

 

  • 如需详细了解,可参考网上文章

http://www.oracledatabase12g.com ... A8%A1%E5%BC%8F.html

 

二、 准备过程(以下步骤在源数据库和目标数据库上均需要执行,第一次执行即可,以后不需要重复执行,如不确认是否已做相关设置,可直接执行第3步查看)

创建数据库物理存放路径,例如d:\dbbak

(以下3步操作都是)创建逻辑目录,指向上面所建物理路径。dpdata1为我们定义的逻辑目录名。

SQL>create directory dpdata1 as 'd:\dbbak';

验证上述步骤操作是否成功(注意:此处只是验证是否成功创建逻辑路径,并不会检查对应的物理路径是否真实有效)

SQL>select * from dba_directories;

以管理员身份赋予sbnetdba用户赋予在指定目录的操作权限,如果有多个用户,请对用户授权。

SQL>grant read,write on directory dpdata1 to sbnetdba;

 

三、 导出数据(注意下面命令不是在SQL下执行,而是直接在CMD命令行中执行)

按用户导数据,如果有多个用户,按每个用户分别执行备份。

expdp sbnetdba/passwd@netdb schemas=sbnetdba dumpfile=expdp.dmp DIRECTORY=dpdata1

——schemas:需要进行导出的用户身份

——dumpfile:导出的文件名

——导出完成后,会生产export.log日志文件,记录导出信息,如有疑问可用来分析。

 

四、 还原数据

先将备份数据拷贝至目标数据库对应路径下

指定用户导入。如果有多个用户,按每个用户分别执行导入。

——如果目标库为新建的空库,还没有数据表的时候,可采用下面语句直接导入 (注意红字部分的格式,只有一个实例时,不要写成sbnetdba/passwd@netdb):

impdp sbnetdba/passwd DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=sbnetdba

 

——如果目标数据库中已有表存在,我们只想覆盖原有数据,则需加入table_exists_action= REPLACE参数,否则数据不会被覆盖。具体命令如下:

impdp sbnetdba/passwd directory=dpdata1 dumpfile=EXPDP.DMP table_exists_action= REPLACE schemas=sbnetdba

——导出完成后,会生产import.log日志文件,记录导出信息,如有疑问可用来分析。

——使用remap_schema=mamdba:sbnetdba参数,前面是源SCHEMA 后面是导入目标schema,即把数据以mamdba schema导出,

posted @ 2018-03-29 13:55  年轻的卖油翁  阅读(20206)  评论(0编辑  收藏  举报