资料来⾃百度搜索,测试全库备份正常导出。
常⽤的oracle数据库备份(导⼊/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导⼊导出⼯具,后者是Oracle10g后出现的,下⾯进⾏分别介绍!
1.exp/imp
三种导⼊导出类型
Oracle⽀持三种导⼊导出类型分别是
表⽅式(T⽅式),⽤户⽅式(U⽅式),全库⽅式(Full⽅式)A: 表⽅式(T⽅式)
备份(exp)某个⽤户模式下指定的对象(表),
exp guwei/ai123456@10.21.19.63/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmplog=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=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOB:⽤户⽅式(U⽅式)
备份(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=nfile=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=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOC:全库⽅式(Full⽅式)备份(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
导出导⼊的优缺点
优点:
简单易⾏;可靠性⾼;
不影响数据库的正常运⾏。缺点:
只能提供到\"某⼀时间点上\"的恢复,不能最⼤可能的恢复数据;数据量⼤时,恢复较慢。
导出exp参数说明
参数名
USERIDFULLBUFFEROWNERFILETABLESCOMPRESSRECORDLENGTHGRANTSINCTYPEINDEXESRECORDROWSPARFILECONSTRAINTSCONSISTENTLOGSTATISTICSDIRECTTRIGGERSFEEDBACKFILESIZEQUERYTABLESPACES
⽤户名/⼝令导出整个⽂件数据缓冲区的⼤⼩输出⽂件导出指定的表名列表是否压缩导出的⽂件IO 记录的长度导出权限增量导出类型导出索引跟踪增量导出导出数据⾏参数⽂件名导出交叉表⼀致性屏幕输出的⽇志⽂件分析对象(ESTIMATE)直接路径导出触发器显⽰每 x ⾏ (0) 的进度各转储⽂件的最⼤尺⼨选定导出表⼦集的⼦句导出指定的表空间列表说明
N
(EXPDAT.DMP) Y Y YYY Y NY N
默认值
导出指定的所有者⽤户名列表
TRANSPORT_TABLESPACE导出可传输的表空间元数据导⼊imp参数说明
参数名
USERIDFULLBUFFERFROMUSERFILETOUSERSHOWTABLESIGNORE
RECORDLENGTHGRANTSINCTYPEINDEXESCOMMITROWSPARFILELOG
CONSTRAINTSDESTROYINDEXFILEFEEDBACKTOID_NOVALIDATEFILESIZESTATISTICSRESUMABLE
⽤户名/⼝令导⼊整个⽂件数据缓冲区⼤⼩所有⼈⽤户名列表输⼊⽂件⽤户名列表只列出⽂件内容表名列表忽略创建错误IO记录的长度导⼊权限增量导⼊类型导⼊索引提交数组插⼊导⼊数据⾏参数⽂件名
屏幕输出的⽇志⽂件导⼊
覆盖表空间数据⽂件
将表/索引信息写⼊指定的⽂件每 x ⾏显⽰进度跳过指定类型 ID 的验证每个转储⽂件的最⼤⼤⼩始终导⼊预计算的统计信息在遇到有关空间的错误时挂起
说明
N (EXPDAT.DMP) N N Y YNY YN N 默认值
SKIP_UNUSABLE_INDEXES跳过不可⽤索引的维护
RESUMABLERESUMABLE_NAMERESUMABLE_TIMEOUTCOMPILE
STREAMS_INSTANITATIONTABLESPACESDATAFILESTTS_OWNERS
在遇到有关空间的错误时挂起RESUMABLE 的等待时间编译过程, 程序包和函数导⼊ Streams 的实例化元数据将要传输到数据库的表空间将要传输到数据库的数据⽂件
YYN ⽤来标识可恢复语句的⽂本字符串 STREAMS_CONFIGURATION导⼊ Streams 的⼀般元数据TRANSPORT_TABLESPACE导⼊可传输的表空间元数据
拥有可传输表空间集中数据的⽤户 2.expd/impd
ORCALE10G提供了新的导⼊导出⼯具,数据泵。
⼀、主要特性
1.⽀持并⾏处理导⼊、导出任务2.⽀持暂停和重启动导⼊、导出任务3.⽀持通过Database Link的⽅式导出或导⼊远端数据库中的对象4.⽀持在导⼊时通过Remap_schema、Remap_datafile、Remap_tablespace⼏个参数实现导⼊过程中⾃动修改对象属主、 数据⽂件或数据所在表空间。5.导⼊/导出时提供了⾮常细粒度的对象控制。通过Include、Exclude两个参数,甚⾄可以详细制定是否包含或不包含某个对象。Directory对象
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:⽇志名称
⼆、操作模式
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 <5Warning: 建议把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:dWarning: 不能在同⼀个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 technologyenables 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=42. 对于导⼊的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.EXP和IMP是客户端⼯具程序,它们既可以在客户端使⽤,也可以在服务端使⽤。
2、EXPDP和IMPDP是服务端的⼯具程序,他们只能在ORACLE服务端使⽤,不能在客户端使⽤。
3、IMP只适⽤于EXP导出⽂件,不适⽤于EXPDP导出⽂件;IMPDP只适⽤于EXPDP导出⽂件,⽽不适⽤于EXP导出⽂件。4、EXPDP和IMPDP在导出导⼊的时候需要依赖Directory对象,⽽IMP和EXP不需要依赖。
5、oracle11g中有个新特性,当表⽆数据时,不分配segment,以节省空间,所以exp导不出空表,解决的办法是⽤expdp。数据泵取只能在服务器端运⾏,客户端只能⽤来连接服务器启动导⼊导出操作exp和expdp原理对⽐
1、exp/imp客户端程序,受⽹络,磁盘的影响; impdp/expdp服务器端程序,只受磁盘的影响
2、假设⽂件把⽂件导出在服务端,exp常规⽅式是使⽤SELECT的⽅式查询数据库中的数据,是需要通过buffer cache并通过sql的语句处理层再转移⾄exp的导出⽂件(即要经过sga,pga才传输到客户端,⽽exp直接路径则是直接从磁盘上将数据转移⾄exp的导出⽂件,所
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务