expimp增量备份测试.docx
《expimp增量备份测试.docx》由会员分享,可在线阅读,更多相关《expimp增量备份测试.docx(18页珍藏版)》请在冰豆网上搜索。
![expimp增量备份测试.docx](https://file1.bdocx.com/fileroot1/2022-11/24/efb7987f-57dc-4c2a-86a3-4ad9ebe4591b/efb7987f-57dc-4c2a-86a3-4ad9ebe4591b1.gif)
expimp增量备份测试
Oracle数据库逻辑增量备份之exp/imp
Oracle数据库逻辑增量备份之exp/imp1
一、实现需求1
二、逻辑备份恢复工具exp/imp2
1、逻辑备份原理2
2、exp语法和参数2
3、imp语法和参数3
三、exp逻辑备份4
1、exp表模式备份4
2、exp用户模式备份5
3、exp全库模式备份5
四、imp逻辑恢复6
1、imp表模式恢复6
2、imp用户模式恢复6
3、imp全库模式恢复7
五、exp/imp增量参数INCTYPE8
1、exp增量备份条件8
2、exp增量备份类型8
六、增量备份恢复实例8
1、exp增量备份恢复策略8
2、A时间点全备9
3、B时间点增量备份9
4、C时间点累积备份10
5、D时间点增量备份10
6、E时间点增量备份10
6、A表丢失数据恢复11
7、D时间点丢失表空间恢复12
8、全库恢复13
七、Exp/Imp增量备份恢复总结14
一、实现需求
由于一个库在云平台上,虽然做了RMAN备份,但是RMAN备份在云本地磁盘上,同时库备份数据量比较大,无法转移到其他的空间上。
由于该库应用的性质比较特殊,大数据量部分要求保存180天后即可删除,因此除了做RMAN之外,我希望将核心数据做下额外的备份,expdp可以满足,目前是这么做的,但是expdp做不了增量备份。
听说exp/imp有参数能做增量备份,但是又听说exp增量备份的最小单位是表,只要表一条数据发生变化,就会对全表进行备份。
之前没有用过exp增量备份这个功能,于是决定先做下测试,看到底备份恢复效率和真实机制如何。
二、逻辑备份恢复工具exp/imp
1、逻辑备份原理
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。
导出备件是一种逻辑备份,冷备份和热备份是物理备份。
逻辑导出备份:
创建数据库对象的逻辑拷贝并存入一个二进制转储文件。
这种逻辑备份需要在数据库启动的情况下使用,其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。
此备份方式是通过Oracle的实用工具export和import来实施的,export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。
通过此工具可以衍生出多种功能,比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。
重新温习下exp/imp的语法和参数,着重看看增量备份参数相关说明。
2、exp语法和参数
C:
\DocumentsandSettings\A4586>exphelp=y
Export:
Release10.2.0.1.0-Productionon星期三11月713:
41:
282012
Copyright(c)1982,2005,Oracle.Allrightsreserved.
通过输入EXP命令和您的用户名/口令,导出
操作将提示您输入参数:
例如:
EXPSCOTT/TIGER
或者,您也可以通过输入跟有各种参数的EXP命令来控制导出
的运行方式。
要指定参数,您可以使用关键字:
格式:
EXPKEYWORD=value或KEYWORD=(value1,value2,...,valueN)
例如:
EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)
或TABLES=(T1:
P1,T1:
P2),如果T1是分区表
USERID必须是命令行中的第一个参数。
关键字说明(默认值)
-------------------------------------------------------------------
USERID用户名/口令
FULL导出整个文件(N)
BUFFER数据缓冲区大小
OWNER所有者用户名列表
FILE输出文件(EXPDAT.DMP)
TABLES表名列表
COMPRESS导入到一个区(Y)
RECORDLENGTHIO记录的长度
GRANTS导出权限(Y)
INCTYPE增量导出类型
INDEXES导出索引(Y)
RECORD跟踪增量导出(Y)
DIRECT直接路径(N)
TRIGGERS导出触发器(Y)
LOG屏幕输出的日志文件
STATISTICS分析对象(ESTIMATE)
ROWS导出数据行(Y)
PARFILE参数文件名
CONSISTENT交叉表的一致性(N)
CONSTRAINTS导出的约束条件(Y)
OBJECT_CONSISTENT只在对象导出期间设置为只读的事务处理(N)
FEEDBACK每x行显示进度(0)
FILESIZE每个转储文件的最大大小
FLASHBACK_SCN用于将会话快照设置回以前状态的SCN
FLASHBACK_TIME用于获取最接近指定时间的SCN的时间
QUERY用于导出表的子集的select子句
RESUMABLE遇到与空格相关的错误时挂起(N)
RESUMABLE_NAME用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE的等待时间
TTS_FULL_CHECK对TTS执行完整或部分相关性检查
TABLESPACES要导出的表空间列表
TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)
TEMPLATE调用iAS模式导出的模板名
3、imp语法和参数
C:
\DocumentsandSettings\A4586>imphelp=y
Import:
Release10.2.0.1.0-Productionon星期三11月713:
59:
172012
Copyright(c)1982,2005,Oracle.Allrightsreserved.
通过输入IMP命令和您的用户名/口令,导入
操作将提示您输入参数:
例如:
IMPSCOTT/TIGER
或者,可以通过输入IMP命令和各种参数来控制导入
的运行方式。
要指定参数,您可以使用关键字:
格式:
IMPKEYWORD=value或KEYWORD=(value1,value2,...,valueN)
例如:
IMPSCOTT/TIGERIGNORE=YTABLES=(EMP,DEPT)FULL=N
或TABLES=(T1:
P1,T1:
P2),如果T1是分区表
USERID必须是命令行中的第一个参数。
关键字说明(默认值)
--------------------------------------------------------
USERID用户名/口令
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有者用户名列表
FILE输入文件(EXPDAT.DMP)
TOUSER用户名列表
SHOW只列出文件内容(N)
TABLES表名列表
IGNORE忽略创建错误(N)
RECORDLENGTHIO记录的长度
GRANTS导入权限(Y)
INCTYPE增量导入类型
INDEXES导入索引(Y)
COMMIT提交数组插入(N)
ROWS导入数据行(Y)
PARFILE参数文件名
LOG屏幕输出的日志文件
CONSTRAINTS导入限制(Y)
DESTROY覆盖表空间数据文件(N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)
FEEDBACK每x行显示进度(0)
TOID_NOVALIDATE跳过指定类型ID的验证
FILESIZE每个转储文件的最大大小
STATISTICS始终导入预计算的统计信息
RESUMABLE在遇到有关空间的错误时挂起(N)
RESUMABLE_NAME用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE的等待时间
COMPILE编译过程,程序包和函数(Y)
STREAMS_CONFIGURATION导入流的一般元数据(Y)
STREAMS_INSTANTIATION导入流实例化元数据(N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导入可传输的表空间元数据(N)
TABLESPACES将要传输到数据库的表空间
DATAFILES将要传输到数据库的数据文件
TTS_OWNERS拥有可传输表空间集中数据的用户
三、exp逻辑备份
ORACLE数据库的逻辑备份分为三种模式:
表备份、用户备份和完全备份。
(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),将数据库中的所有对象导出
1、exp表模式备份
备份某个用户模式下指定的对象(表)。
业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:
C:
\DocumentsandSettings\A4586>setnls_lang=simplifiedchinese_china.zhs16gbk
C:
\DocumentsandSettings\A4586>expscott/tigerfile=c:
\exp_scott_emp.dmplog=c:
\exp_scott_emplogtables=scott.emp,scott.dept
即将导出指定的表通过常规路径...
..正在导出表EMP导出了14行
..正在导出表DEPT导出了4行
导出成功。
2、exp用户模式备份
备份某个用户模式下的所有对象。
业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:
C:
\DocumentsandSettings\A4586>expscott/tigerfile=c:
\exp_scott.dmplog=c:
\exp_scott.logowner=scott
即将导出指定的用户...
.正在导出pre-schema过程对象和操作
.正在导出用户SCOTT的外部函数库名
.导出PUBLIC类型同义词
.正在导出专用类型同义词
.正在导出用户SCOTT的对象类型定义
即将导出SCOTT的对象...
.正在导出数据库链接
.正在导出序号
.正在导出簇定义
.即将导出SCOTT的表通过常规路径...
..正在导出表BONUS导出了0行
..正在导出表DEPT导出了4行
..正在导出表EMP导出了14行
..正在导出表SALGRADE导出了5行
…….
3、exp全库模式备份
备份完整的数据库。
业务数据库不采用这种备份方式。
注意导出用户权限。
备份命令为:
C:
\DocumentsandSettings\A4586>expsystem/oraclefile=c:
\exp_full.dmplog=c:
\exp_full.logfull=y;
即将导出整个数据库...
.正在导出表空间定义
.正在导出概要文件
.正在导出用户定义
.正在导出角色
.正在导出资源成本
.正在导出回退段定义
.正在导出数据库链接
.正在导出序号
…….
四、imp逻辑恢复
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库。
数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
1、imp表模式恢复
A.恢复表备份数据的全部内容
若从本地文件恢复scott导出的表,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfromuser=scotttouser=scottfile=c:
\exp_scott_emp.dmplog=c:
\imp_scott_emp.log
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
.正在将SCOTT的对象导入到SCOTT
..正在导入表"EMP"导入了14行
..正在导入表"DEPT"导入了4行
即将启用约束条件...
成功终止导入,没有出现警告。
B.恢复备份数据中的指定表
若从本地文件恢复scott备份导出的表,此时必须制定所有表,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfromuser=scotttouser=scottsfile=c:
\exp_scott_emp.dmplog=c:
\imp_scott_emp.logtables=empignore=y;
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
.正在将SCOTT的对象导入到SCOTTS
..正在导入表"EMP"导入了14行
即将启用约束条件...
成功终止导入,没有出现警告。
2、imp用户模式恢复
A.恢复备份数据的全部内容
若从本地文件恢复整个用户的所有表,使用如下命令
C:
\DocumentsandSettings\A4586>impscott/tigerfromuser=scotttouser=scottfile=c:
\exp_scott.dmplog=c:
\imp_scott.log;
.正在将SCOTT的对象导入到SCOTTS
B.恢复备份数据中的指定表
若从本地文件恢复该用户的部分表,注意,这里一定要使用ingore=y,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfromuser=scotttouser=scottsfile=c:
\exp_scott.dmplog=c:
\imp_scott.logtables=empignore=y;
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
..正在导入表"EMP"导入了14行
成功终止导入,没有出现警告。
3、imp全库模式恢复
A.恢复备份数据的全库全部内容
若从全库备份文件恢复全库,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfile=c:
\exp_full.dmplog=c:
\imp_full.logfull=y;
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
.正在将SYSTEM的对象导入到SYSTEM
…….
B.恢复备份数据的特定用户内容
若从全库备份文件恢复特定用户的对象,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfile=c:
\exp_full.dmplog=c:
\imp_full_scott.logfromuser=scotttouser=scottignore=y;
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
.正在将SCOTT的对象导入到SCOTTS
…….
C.恢复备份数据的特定表内容
若从全库备份文件恢复特定表,使用如下命令:
C:
\DocumentsandSettings\A4586>impscott/tigerfile=c:
\exp_full.dmplog=c:
\imp_full.logfromuser=scotttouser=scotttables=empignore=y;
经由常规路径由EXPORT:
V10.02.01创建的导出文件
已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入
导入服务器使用AL32UTF8字符集(可能的字符集转换)
.正在将SCOTT的对象导入到SCOTT
..正在导入表"EMP"导入了14行
即将启用约束条件...
成功终止导入,没有出现警告。
五、exp/imp增量参数INCTYPE
1、exp增量备份条件
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须使用SYSTEM账号来导出。
在进行此种导出时,系统不要求回答任何问题。
导出文件名缺省为export.dmp,如果不希望自己的输出档定名为export.dmp,必须在命令行中指出要用的文件名。
当全库备份比较小时候,采用数据库备份更便于恢复。
执行增量备份必须满足下列条件:
1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。
2.用户必须有EXP_FULL_DATABASE的系统角色。
2、exp增量备份类型
增量导出包括三种类型:
(1)“完全”增量导出(Complete)
备份整个数据库,脚本内容如下:
C:
\DocumentsandSettings\A4586>expsystem/oracleinctype=completefile=c:
\exp_incr_full.dmplog=c:
\exp_incr_full.log
(2)“增量型”增量导出(Incremental)
备份上一次备份后改变的数据,脚本内容如下:
C:
\DocumentsandSettings\A4586>expsystem/oracleinctype=incrementalfile=c:
\exp_incr_incr.dmplog=c:
\exp_incr_incr.log
(3)“累积型”增量导出(Cumulative)
备份自上次“完全”导出之后数据库中变化了的数据。
脚本内容如下:
C:
\DocumentsandSettings\A4586>expsystem/oracleinctype=cumulativefile=c:
\exp_incr_cum.dmplog=c:
\exp_incr_cum.log
六、增量备份恢复实例
1、exp增量备份恢复策略
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。
比如数据库的备分任务可以做如下安排:
星期一:
完全导出(export_A.dmp)
星期二:
增量导出(export_B.dmp)
星期三:
增量导出(export_C.dmp)
星期四:
增量导出(export_D.dmp)
星期五:
累计导出(export_E.dmp)
星期六:
增量导出(export_F.dmp)
星期日:
增量导出(export_G.dmp)
如果在星期日,数据库遭到意外破坏,数据库管理员可按照如下步骤恢复数据库:
第一步:
用命令CREATEDATABASE重新生成数据库结构;
第二步:
创建一个足够大的附加回滚,供imp使用。
第三步:
完全增量导入A:
impsystem/managerinctype=RESTOREFULL=yFILE=A
第四步:
累计增量导入E:
impsystem/managerinctype=RESTOREFULL=YFILE=E
第五步:
最近增量导入F:
impsystem/managerinctype=RESTOREFULL=YFILE=F
2、A时间点全备
C:
\DocumentsandSettings\A4586>sqlplussys/oracleassysdba
SQL*Plus:
Release10.2.0.1.0-Productionon星期三11月717:
03:
412012
Copyright(c)1982,2005,Oracle.Allrightsreserved.
连接到:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OLAPandDataMiningoptions
SQL>grantdbatoscott;
SQL>createtablespacetbs_incrdatafile'D:
\oracle\product\10.2.0\oradata\xmlgis\tbs_incr.dbf'size10Mautoextendonnext10Mmaxsizeunlimited;
SQL>createtablescott.a(statusvarchar(20),weektimevarchar(20))tablespacetbs_incr;
SQL>insertintoscott.avalues('insert','A');
SQL>commit;
C:
\DocumentsandSettings\A4586>expscott/tigerinctype=completefile=c:
\exp_incr_A.dmplog=c:
\exp_incr_A.log;
日志中发现如下:
.即将导出SCOTT的表通过常规路径...
..正在导出表A导出了1行
3、B时间点增量备份
SQL>createtablescott.b(statusvarchar(20),weektimevarchar(20))tablespacetbs_incr;
SQL>insertintoscott.bvalues('insert','b');
SQL>in