Oracle数据库备份/导出(exp/expd)、导入(imp/impd)

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

1.exp/imp

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

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

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

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)备份数据中的指定表,

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

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

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

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

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)备份数据中的指定表,

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

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

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

导入(imp)完整数据库,

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

优点:

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

缺点:

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

参数名 说明 默认值 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 导出指定的表空间列表

参数名 说明 默认值 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.支持并行处理导入、导出任务
2.支持暂停和重启动导入、导出任务
3.支持通过Database Link的方式导出或导入远端数据库中的对象
4.支持在导入时通过Remap_schema、Remap_datafile、Remap_tablespace几个参数实现导入过程中自动修改对象属主、 数据文件或数据所在表空间。
5.导入/导出时提供了非常细粒度的对象控制。通过Include、Exclude两个参数,甚至可以详细制定是否包含或不包含某个对象。
    Directory对象是Oracle10g版本提供的一个新功能。他是一个 指向,指向了操作系统中的一个路径。每个Directory都包含 Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路 径下的文件。
    除了使用network_link参数意外,expdp生成的文件都是在服务器上(Directory指定的位置)
 expdp TEST/123456 schemas=geoff dumpfile=test.dmp directory=exp_imp_data logfile=impdp_20191219.log;

test/123456:导出用户账号密码
test.dmp:导出dmp文件名
exp_imp_data:directory对象目录
geoff:导出给哪个用户
impdp_20191219.log:日志名称
impdp TEST/123456 file=test.dmp directory=exp_imp_data REMAP_SCHEMA=test:geoff logfile=impdp_20191219.log;

test/123456:待导入用户账号密码
test.dmp:导入dmp文件名
exp_imp_data:directory对象目录
test:geoff :将test用户数据导入到Geoff用户下
impdp_20191219.log:日志名称

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

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

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

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

对应impdp/expdp中的Transport_tablespaces参数。这种模式与前面几种模式最显著的区 别是生成的Dump文件中并不包含具 体的逻辑数据,而只导出相关对象的元数据(即对象的定义,可以理解成表的创建语句),逻辑数据仍然在表空间的数据文件中,导出时需要将元数据和数据文件同 时复制到目标端服务器。
这种导出方式效率很高,时间开销主要是花在复制数据文件产生的I/O上。expdp执行传输表空间模式的导出,用户必须 拥有 exp_full_database角色或者DBA角色。而通过传输表空间模式导入时,用户必须拥有imp_full_database角色或者DBA角 色。

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

与exp命令中的Query功能类似,不过Expdp中,该参数功能得到了增强,控制的粒度更细。Expdp中的Query也是指定类 似where语句来限定记录。语法如下:
Query = [Schema.][Table_name:] Query_clause
默认 情况如果不指定Schema.table_name,则Query_clause针对所有导出的表有效,或者你可以为每一个表指定不同的 Query_clause,如:导出a表中所有id

该参数用来指定导出数据的百分比,可指定的值的范围从0.000001到99.999999,语法如下:
Sample=[[Schema_name.]Table_name:]sample_percent
指 定该参数以后,EXPDP导出将自动控制导出的记录量,如导出A表中50%的记录,设置的Sample参数如下:
Sample=A:50
Warning: Sample_percent指定的值只是一个参考值,EXPDP会根据数据量算出一个近似值。

我们还可能会遇到这样的需求,把A用户的对象转移到B用户,或者更换数据的表空间。数据泵通过 Remap_Schema和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的参数,性能就会有提升。

3.区别

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

1.EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

2、EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

3、IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

4、EXPDP和IMPDP在导出导入的时候需要依赖Directory对象,而IMP和EXP不需要依赖。

5、oracle11g中有个新特性,当表无数据时,不分配segment,以节省空间,所以exp导不出空表,解决的办法是用expdp。

数据泵取只能在服务器端运行,客户端只能用来连接服务器启动导入导出操作
1、exp/imp客户端程序,受网络,磁盘的影响; impdp/expdp服务器端程序,只受磁盘的影响

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

Original: https://www.cnblogs.com/GeoffA/p/12068657.html
Author: 昊狼
Title: Oracle数据库备份/导出(exp/expd)、导入(imp/impd)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586480/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 请你说说Spring

    一. Spring是什么? 是一个轻量级的开源容器框架,用来装JavaBean,可以把其他的一些框架进行整合使用,使得开发更快,更简洁。 轻量级:占用空间小,非入侵式的(Sprin…

    Java 2023年6月7日
    082
  • rabbitmq安装

    rabbitmq简介 rabbitmq安装 rabbitmq是erlang语言开发的,rabbitmq安装需要先安装erlang,再安装rabbitmq; ​ 官方网址: 双击安装…

    Java 2023年6月16日
    070
  • Spring Boot:实现MyBatis分页

    综合概述 想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,…

    Java 2023年5月30日
    082
  • RandomStringUtils 生成随机字符串

    代码: System.out.println(RandomStringUtils.randomAlphanumeric(32));System.out.println(Random…

    Java 2023年6月7日
    098
  • Spring boot——JMX 监控

    spring.jmx.enabled=true 在命令行中执行 jconsole命令启动”Java管理和监视控制台”,然后选择org.springframe…

    Java 2023年5月30日
    085
  • asp.net ajax 客户端框架未能加载 sys 未定义

    一般来说与配置文件有关: 查看HTML源文件,会发现脚本有 后缀是.axd 把以上路径放IE里如果能提示下载,则说明是其他问题,如果不能提示继续往 下看。 我找了个能正常运行AJA…

    Java 2023年6月13日
    084
  • 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第11版)

    第11版更新震撼发布,功能更加强大,速度过来围观,此次版本更新如下: 1、新增数据源配置管理功能,可以为每种类型的数据库添加多个不同的数据源。 2、新增快速新增数据源功能,快速为当…

    Java 2023年6月9日
    087
  • java MD5加密

    /** * MD5加密 * @param message 要进行MD5加密的字符串 * @return 加密结果为32位字符串 */ private static String g…

    Java 2023年6月16日
    082
  • api进阶Day1文件的创建、删除、访问、设置过滤器并查询。目录的删除、创建。

    文件的创建: package file; import java.io.File;import java.io.IOException; /*create:创建new:新file:…

    Java 2023年6月13日
    089
  • 手把手教你如何高效落地多项目管理 | 一看既会

    如何高效落地多项目管理,云效Projex 是新一代企业级研发协作平台,集成了敏捷研发项目管理的最佳实践,提供了针对项目、迭代、需求、缺陷等多个维度的协同管理以及相关的统计报告,让研…

    Java 2023年6月8日
    099
  • Java(4)字符串

    从概念上讲,Java字符串就是 Unicode字符序列。例如,字符串 “Java\u2122″由5个 Unicode字符 J、 a、 v、 a和 ™组成。Ja…

    Java 2023年6月9日
    088
  • 监控JAVA应用的好工具javamelody

    今天在JAVAEYE首页看到这个工具的推荐,看了下,不错:JavaMelody能够在QA和实际运行生产环境监测Java或Java EE应用程序服务器。并以图表的形式显示:Java内…

    Java 2023年5月29日
    083
  • Aerospike java client

    1、要求 java client 要求jdk8及以上版本 2、依赖包 maven com.aerospike aerospike-client 5.0.0 gradle repos…

    Java 2023年5月29日
    078
  • Java使用HTTPS登录网站代码实现

    步骤一,获得网站的登录URL,及Form页元数据 这点可以通过Chrome的F12按键,检查登录时发送的数据包获得(【Preserve Log】建议打勾)。以登录京东网站为例,示范…

    Java 2023年5月29日
    0167
  • 堆排序(java)

    目录 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 四、Java 实例代码 优化堆排序 Java 实例代码 基础堆排序 一、概念及其介绍 堆排序(Heapsort)是指…

    Java 2023年6月5日
    075
  • Spring Boot 2.7.0发布,2.5停止维护,节奏太快了吧

    这几天是Spring版本日,很多 Spring工件都发布了新版本, Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修…

    Java 2023年5月30日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球