​ 常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍!

1.exp/imp

三种导入导出类型

Oracle支持三种导入导出类型分别是

  1. 表方式(T方式),用户方式(U方式),全库方式(Full方式)

A: 表方式(T方式)

备份(exp)某个用户模式下指定的对象(表),

  1. exp guwei/ai123456@10.21.19.63/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO

恢复(imp)备份数据中的指定表,

  1. imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO

B:用户方式(U方式)

备份(exp)某个用户模式下的所有对象,

  1. exp jnth/thpassword@oracle owner=guwei rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log

恢复(imp)备份数据的全部内容,

  1. imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log

恢复(imp)备份数据中的指定表,

  1. imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO

C:全库方式(Full方式)

备份(exp)完整的数据库,

  1. exp system/systempassword@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=exp_table.dmp log=exp_table.log

导入(imp)完整数据库,

  1. imp system/systempassword@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=exp_table.dmp log=exp_table.log

导出导入的优缺点

优点:

  • 简单易行;
  • 可靠性高;
  • 不影响数据库的正常运行。

缺点:

  • 只能提供到"某一时间点上"的恢复,不能最大可能的恢复数据;
  • 数据量大时,恢复较慢。

导出exp参数说明

参数名 说明 默认值
USERID 用户名/口令
FULL 导出整个文件 N
BUFFER 数据缓冲区的大小
OWNER 导出指定的所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 导出指定的表名列表
COMPRESS 是否压缩导出的文件 Y
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 Y
INCTYPE 增量导出类型
INDEXES 导出索引 Y
RECORD 跟踪增量导出 Y
ROWS 导出数据行 Y
PARFILE 参数文件名
CONSTRAINTS 导出限制 Y
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象(ESTIMATE)
DIRECT 直接路径 N
TRIGGERS 导出触发器 Y
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 N
TABLESPACES 导出指定的表空间列表

导入imp参数说明

参数名 说明 默认值
USERID 用户名/口令
FULL 导入整个文件 N
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 N
TABLES 表名列表
IGNORE 忽略创建错误 N
RECORDLENGTH IO记录的长度
GRANTS 导入权限 Y
INCTYPE 增量导入类型
INDEXES 导入索引 Y
COMMIT 提交数组插入 N
ROWS 导入数据行 Y
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 Y
DESTROY 覆盖表空间数据文件 N
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 N
FEEDBACK 每 x 行显示进度
TOID_NOVALIDATE 跳过指定类型 ID 的验证
FILESIZE 每个转储文件的最大大小
STATISTICS 始终导入预计算的统计信息
RESUMABLE 在遇到有关空间的错误时挂起
RESUMABLE_NAME 用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
COMPILE 编译过程, 程序包和函数 Y
STREAMS_CONFIGURATION 导入 Streams 的一般元数据 Y
STREAMS_INSTANITATION 导入 Streams 的实例化元数据 N
TRANSPORT_TABLESPACE 导入可传输的表空间元数据
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

2.expd/impd

ORCALE10G提供了新的导入导出工具,数据泵。

一、主要特性

  1. 1.支持并行处理导入、导出任务
  2. 2.支持暂停和重启动导入、导出任务
  3. 3.支持通过Database Link的方式导出或导入远端数据库中的对象
  4. 4.支持在导入时通过Remap_schemaRemap_datafileRemap_tablespace几个参数实现导入过程中自动修改对象属主、 数据文件或数据所在表空间。
  5. 5.导入/导出时提供了非常细粒度的对象控制。通过IncludeExclude两个参数,甚至可以详细制定是否包含或不包含某个对象。

Directory对象

  1. Directory对象是Oracle10g版本提供的一个新功能。他是一个 指向,指向了操作系统中的一个路径。每个Directory都包含 Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路 径下的文件。
  2. 除了使用network_link参数意外,expdp生成的文件都是在服务器上(Directory指定的位置)

基本语法

导出

  1. expdp TEST/123456 schemas=geoff dumpfile=test.dmp directory=exp_imp_data logfile=impdp_20191219.log;
  2. test/123456:导出用户账号密码
  3. test.dmp:导出dmp文件名
  4. exp_imp_datadirectory对象目录
  5. geoff:导出给哪个用户
  6. impdp_20191219.log:日志名称

导入

  1. impdp TEST/123456 file=test.dmp directory=exp_imp_data REMAP_SCHEMA=test:geoff logfile=impdp_20191219.log;
  2. test/123456:待导入用户账号密码
  3. test.dmp:导入dmp文件名
  4. exp_imp_datadirectory对象目录
  5. testgeoff :将test用户数据导入到Geoff用户下
  6. impdp_20191219.log:日志名称

二、操作模式

1.全库模式

导入或者导出整个数据库,对应impdp/expdp命令中的full参数,只有拥有dba或者 exp_full_database和imp_full_database权限的用户才能执行。

2.Schema模式

导出或导入Schema下的自有对象,对应impdp/expdp命令中的Schema参数,这是默认的操作模式。 如果拥有dba或者 exp_full_database和imp_full_database权限的用户执行的话,就可以导出或导入多个Schema中的对象。

3.表模式

导出指定的表或者表分区(如果有分区的话)以及依赖该表的对象(如该表的索引,约束等,不过前提是这些对象在同一个 Schema中,或者执行的用户有相应的权限)。对应impdp/expdp命令中的Table参数。

4.表空间模式

导出指定的表空间中的内容。对应impdp/expdp中的Tablespaces参数,这种模式类似于表模式和 Schema模式的补充。

5.传输表空间模式

对应impdp/expdp中的Transport_tablespaces参数。这种模式与前面几种模式最显著的区 别是生成的Dump文件中并不包含具 体的逻辑数据,而只导出相关对象的元数据(即对象的定义,可以理解成表的创建语句),逻辑数据仍然在表空间的数据文件中,导出时需要将元数据和数据文件同 时复制到目标端服务器。

这种导出方式效率很高,时间开销主要是花在复制数据文件产生的I/O上。expdp执行传输表空间模式的导出,用户必须 拥有 exp_full_database角色或者DBA角色。而通过传输表空间模式导入时,用户必须拥有imp_full_database角色或者DBA角 色。

三、过滤数据

过滤数据主要依赖于Query和Sample两个参数。其中Sample参数主要针对expdp导出功能。

1.Query

与exp命令中的Query功能类似,不过Expdp中,该参数功能得到了增强,控制的粒度更细。Expdp中的Query也是指定类 似where语句来限定记录。语法如下:

Query = [Schema.][Table_name:] Query_clause

默认 情况如果不指定Schema.table_name,则Query_clause针对所有导出的表有效,或者你可以为每一个表指定不同的 Query_clause,如:导出a表中所有id<5的记录,导出b表中所有name=’a’的记录,则Query的参数应该如下:

Query=A:”Where id<5″,B:”Where name=’a’”

如果Where条件前没有指定Schema名或者表名的话,默认就是针对当前所有要被 导出的表。如:Query=Where id <5

Warning: 建议把Query参数放入到参数文件中使用,以避免转义符带来的麻烦。

2.Sample

该参数用来指定导出数据的百分比,可指定的值的范围从0.000001到99.999999,语法如下:

Sample=[[Schema_name.]Table_name:]sample_percent

指 定该参数以后,EXPDP导出将自动控制导出的记录量,如导出A表中50%的记录,设置的Sample参数如下:

Sample=A:50

Warning: Sample_percent指定的值只是一个参考值,EXPDP会根据数据量算出一个近似值。

四、重定义表的Schema或表空间

我们还可能会遇到这样的需求,把A用户的对象转移到B用户,或者更换数据的表空间。数据泵通过 Remap_Schema和Remap_tablespace参数实现了该功能。

  1. REMAP_SCHEMA : 重定义对象所属Schema

    该参数的作用类似IMP中的Fromuser+Touser,支持多个Schema的转换,语法如下:

    REMAP_SCHEMA=Source_schema:Target_schema[,Source_schema:Target_schema]

    如 把A的对象转换到C用户,将C转换到D用户。Remap_schema=a:b,c:d

    Warning: 不能在同一个IMPDP命令中指定remap_schema=a:b,a:c.
  2. REMAP_TABLESPACE : 重定义对象所在的表空间。

    该参数用来重映射导入对象存储的表空间,支持同时对多个表空间进行 转换,相互间用逗号分割。语法如下:

    REMAP_TABLESPACE=Source_tablespace:Target_tablespace[,Source_tablespace:Target_tablespace]

    Warning: 如果使用Remap_tablespace参数,则要保证导入的用户对目标表空间有读写权限。

五、优化导入/导出效率

对于大数据量来说,我们不得不考虑效率问题。数据泵对效率也提出了更高的要求。甚至官方的描述就是Oracle Data Pump technology enables Very High-Speed movement of data and metadata from one database to another.这里的Very High-Speed依赖我们的parallel参数。

所 有的优化操作都会有三种结果:变得更好、没有变化、变得更差。Parallel参数也是这样,并不是指定一个大于1的参数,性能就会有提升。

  1. 对于导出的parallel

    对于导出来说,由于dump文件只能由一个线程进行操作(包 括I/O处理),因此如果输出的DUMP文件只有一个,即使你指定再多的并行,实际工作仍然是 一个,而且还会触发ORA-39095错误。因此,建议设置该参数小于或等于生成的DUMP文件数量。那么,如何控制生成的DUMP文件数量呢?

    EXPDP 命令提供了一个FILESIZE参数,用来指定单个DUMP文件的最大容量,要有效的利用parallel参数,filesize参数必不可少。

    举 例:某用户对象占用了4G左右的空间,实际导出后的DUMP文件约为3G,我们尝试在导出该用户时指定并行度为4,设置单个文件不超过500M,则语法如 下:

    $ expdp user/pwd directory=dump_file dumpfile=expdp_20100820_%U.dmp logfile=expdp_20100820.log filesize=500M parallel=4
  2. 对于导入的parallel

    对于导入来说,使用parallel参数则要简单的多,我认为导入更能体现parallel参数的优势。 参数设置为几,则认为同时将几张表的内容导入到库中。

    举例:某dmp文件中包含了200张表,我们尝试在导入该DMP文件时指定并行度为10,则 语法如下:

    $ impdp user/pwd directory=dump_file dumpfile=expdp_20100820.dmp logfile=impdp_20100820.log parallel=10

3.区别

​ 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP

  1. 1.EXPIMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
  2. 2EXPDPIMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
  3. 3IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
  4. 4EXPDPIMPDP在导出导入的时候需要依赖Directory对象,而IMPEXP不需要依赖。
  5. 5oracle11g中有个新特性,当表无数据时,不分配segment,以节省空间,所以exp导不出空表,解决的办法是用expdp
  6. 数据泵取只能在服务器端运行,客户端只能用来连接服务器启动导入导出操作

exp和expdp原理对比

  1. 1exp/imp客户端程序,受网络,磁盘的影响; impdp/expdp服务器端程序,只受磁盘的影响
  2. 2、假设文件把文件导出在服务端,exp常规方式是使用SELECT的方式查询数据库中的数据,是需要通过buffer cache并通过sql的语句处理层再转移至exp的导出文件(即要经过sga,pga才传输到客户端,而exp直接路径则是直接从磁盘上将数据转移至exp的导出文件,所以速度更快;而expdpexp的升级版,相当于exp + direct mode + parallel(可能对导出文件还进行了压缩,这是从导出文件的对比结果发现的,具体不清楚)。所有从总的来说,expdpexp提供了并行的方式(写入多个导出文件)

Oracle数据库备份/导出(exp/expd)、导入(imp/impd)的更多相关文章

  1. Oracle数据库备份---导出与导入

    利用windows的cmd命令备份导出数据(也可以连接上sqlplus进行操作)--导出--将数据库orcl完全导出 exp system/oracle@orcl file=c:\oracle_bak ...

  2. oracle数据库cmd导出数据和导入数据

    一:前言 每次我自己来导出oracle数据的数据进行备份的时候都是要看一遍记载的语句,还别说自己敲多了,也熟练了,但是还是不是很放心,所以就记载下来吧. 二:内容 (1).最简单,最直接的导入方式(这 ...

  3. oracle数据库备份

    --数据库备份--导出 exp userid=shoppingsys/shoppingsys@orcl file=/home/oracle/shoppingsys.dmp log=/home/orac ...

  4. oracle数据库备份还原命令

    oracle数据库备份命令exp 用户名/密码@orcl file=d:\xxxxxx.dmp owner=用户名 oracle数据库还原命令sqlplus conn / as sysdba drop ...

  5. oracle数据库备份、还原 (如何将Oracle 11g备份的dat文件导入到10g数据库里面)

    如何将Oracle 11g备份的dat文件导入到10g数据库里面 解决方法:      导出的时候后面加上目标数据库的版本号   导出: 在SQL plus下执行:create or replace  ...

  6. oracle 数据库备份、还原、和使用心得(表丢失、视图丢失的解决办法)

    一.oracle数据备份:exp 关键字     说明(默认值)                  关键字      说明(默认值) --------------------------------- ...

  7. Oracle数据库备份还原笔记

    Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...

  8. Oracle数据库备份、灾备的23个常见问题

    为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案.在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责) ...

  9. 数据库备份及SQL脚本导入

    数据库备份及SQL脚本导入 数据导出 su - oracle exp 数据库用户名/数据库密码@ORCL file=20190905.dmp full=y SQL脚本导入 首先导入前查看Oracle用 ...

随机推荐

  1. MAC终端中tree命令

    Mac没有自带的tree命令,需要额外安装才可以,操作方法有两种: 一.用find命令模拟tree效果 1.mac下默认是没有 tree命令的,不过我们可以使用find命令模拟出tree命令的效果,如 ...

  2. Django使用mysql数据的流程

    创建一个mysql数据库 1.打开终端(cmd): 输入: mysql -uroot -p 密码:*** 输入: create database 数据库名字; 2.在settings中进行配置 DAT ...

  3. Java工作流系统-驰骋BPM工作流 引擎的工作模式

    关键字:驰骋工作流引擎 流程引擎工作模式 流程中间件工作模式  工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流bpm工作流系统  java工作流主流框架  自定义工 ...

  4. 新闻实时分析系统Hive与HBase集成进行数据分析 Cloudera HUE大数据可视化分析

    1.Hue 概述及版本下载 1)概述 Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python ...

  5. 开始你的api:NetApiStarter

    在此之前,写过一篇 给新手的WebAPI实践 ,获得了很多新人的认可,那时还是基于.net mvc,文档生成还是自己闹洞大开写出来的,经过这两年的时间,netcore的发展已经势不可挡,自己也在不断的 ...

  6. nginx(二):基本应用

    配置文件详解 event段配置 worker_connections #; 每个worker进程所能够响应的最大并发请求数量: nginx最大并发响应数=worker_proceses * worke ...

  7. 解密面试中的套路,你都get到了么?

    如果大家有关注一些测试类的公众号或者论坛的话,肯定会发现很多文章都在表示现在行业的寒冬冷潮来了!然后有很多测试行业从业者,或者转行测试行业者都表示:工作好难找,公司跑了千千万,依然拿不到一个offer ...

  8. Theano中的导数

    计算梯度 现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数.为此,我们将使用宏T.grad.例如,我们可以计算相对于的梯度 import ...

  9. Docker harbor 安装和基础操作

    目录 简介 离线安装 配置文件 安装 查看 访问测试 及 简单操作 创建一个用户 创建一个测试仓库 创建测试仓库 测试上传和下载镜像 上传 下载镜像测试 简介 Docker容器应用的开发和运行离不开可 ...

  10. 4k图片爬取+中文乱码

    4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...