1、听说exp/imp有参数能做增量备份,但是又听说exp增量备份的最小单位是表,只要表一条数据发生变化,就会对全表进行备份。之前没有用过exp增量备份这个功能,于是决定先做下测试,看到底备份恢复效率和真实机制如何。二、逻辑备份恢复工具exp/imp1、逻辑备份原理Oracle数据库有三种标准的备份方法,它们分别是导出导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。逻辑导出备份:创建数据库对象的逻辑拷贝并存入一个二进制转储文件。这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将
2、这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。此备份方式是通过Oracle的实用工具export和import来实施的, export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。通过此工具可以衍生出多种功能, 比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。重新温习下exp/imp的语法和参数,着重看看增量备份参数相关说明。2、exp语法和参数C:Documents and SettingsA4586exp help=yExport: Release 10.2.0.1.0 - Production
3、 on 星期三 11月 7 13:41:28 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.通过输入 EXP 命令和您的用户名/口令, 导出操作将提示您输入参数:例如: EXP SCOTT/TIGER或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出的运行方式。要指定参数, 您可以使用关键字:格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,.,valueN) EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=
4、(T1:P1,T1:P2), 如果 T1 是分区表USERID 必须是命令行中的第一个参数。关键字 说明 (默认值) - -USERID 用户名/口令FULL 导出整个文件 (N)BUFFER 数据缓冲区大小OWNER 所有者用户名列表FILE 输出文件 (EXPDAT.DMP) TABLES 表名列表COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度GRANTS 导出权限 (Y) INCTYPE 增量导出类型INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)LOG 屏幕输出的
5、日志文件STATISTICS 分析对象 (ESTIMATE)ROWS 导出数据行 (Y) PARFILE 参数文件名CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理 (N)FEEDBACK 每 x 行显示进度 (0)FILESIZE 每个转储文件的最大大小FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCNFLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间QUERY 用于导出表的子集的 select 子句RESUMABLE 遇到与空格相关的错误时
6、挂起 (N)RESUMABLE_NAME 用于标识可恢复语句的文本字符串RESUMABLE_TIMEOUT RESUMABLE 的等待时间TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查TABLESPACES 要导出的表空间列表TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TEMPLATE 调用iAS模式导出的模板名3、imp语法和参数imp help=yImport:59:17 2012通过输入 IMP 命令和您的用户名/口令, 导入 IMP SCOTT/TIGER或者, 可以通过输入 IMP 命令和各种参数来控制导入 IMP KEYWORD=v
7、alue 或 KEYWORD=(value1,value2,.,valueN) IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N关键字 说明 (默认值) - -USERID 用户名/口令FULL 导入整个文件 (N)BUFFER 数据缓冲区大小FROMUSER 所有者用户名列表FILE 输入文件 (EXPDAT.DMP) TOUSER 用户名列表SHOW 只列出文件内容 (N) TABLES 表名列表IGNORE 忽略创建错误 (N) RECORDLENGTH IO 记录的长度GRANTS 导入权限 (Y) INCTYPE 增量导入类型INDE
8、XES 导入索引 (Y) COMMIT 提交数组插入 (N)ROWS 导入数据行 (Y) PARFILE 参数文件名LOG 屏幕输出的日志文件CONSTRAINTS 导入限制 (Y)DESTROY 覆盖表空间数据文件 (N)INDEXFILE 将表/索引信息写入指定的文件SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)TOID_NOVALIDATE 跳过指定类型 ID 的验证FILESIZE 每个转储文件的最大大小STATISTICS 始终导入预计算的统计信息RESUMABLE 在遇到有关空间的错误时挂起 (N)RESUMABLE_NAME 用来标识可恢复语句的文本字符
9、串COMPILE 编译过程, 程序包和函数 (Y)STREAMS_CONFIGURATION 导入流的一般元数据 (Y)STREAMS_INSTANTIATION 导入流实例化元数据 (N)下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)TABLESPACES 将要传输到数据库的表空间DATAFILES 将要传输到数据库的数据文件TTS_OWNERS 拥有可传输表空间集中数据的用户三、exp逻辑备份ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。()、表方式(T方式),将指定表的数据导出。()、用户方式(U方式),将
10、指定用户的所有对象及数据导出。()、全库方式(Full方式),将数据库中的所有对象导出1、exp表模式备份备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:set nls_lang=simplified chinese_china.zhs16gbkexpscott/tigerfile=c:exp_scott_emp.dmp log=c:exp_scott_emplog tables=scott.emp,scott.dept即将导出指定的表通过常规路径. . 正在导出表 EMP导出了 14 行. . 正在导出表 DEPT导出了 4 行导出成功。2
11、、exp用户模式备份备份某个用户模式下的所有对象。expscott/tiger file=c:exp_scott.dmp log=c:exp_scott.log owner=scott即将导出指定的用户. 正在导出 pre-schema 过程对象和操作. 正在导出用户 SCOTT 的外部函数库名. 导出 PUBLIC 类型同义词. 正在导出专用类型同义词. 正在导出用户 SCOTT 的对象类型定义即将导出 SCOTT 的对象. 正在导出数据库链接. 正在导出序号. 正在导出簇定义. 即将导出 SCOTT 的表通过常规路径. . 正在导出表 BONUS导出了 0 行. . 正在导出表 SALGR
12、ADE导出了 5 行.3、exp全库模式备份备份完整的数据库。业务数据库不采用这种备份方式。注意导出用户权限。备份命令为:exp system/oracle file=c:exp_full.dmp log=c:exp_full.log full=y;即将导出整个数据库. 正在导出表空间定义. 正在导出概要文件. 正在导出用户定义. 正在导出角色. 正在导出资源成本. 正在导出回退段定义四、imp逻辑恢复数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库。数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。1、imp表模式恢复A. 恢复表备份数据的全部
13、内容若从本地文件恢复scott导出的表,使用如下命令:imp scott/tiger fromuser=scotttouser=scott file=c:imp_scott_emp.log经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SCOTT 的对象导入到 SCOTT. . 正在导入表 EMP导入了 14 行DEPT导入了4 行即将启用约束条件.成功终止导入, 没有出现警告。B. 恢复备份数据中的指定表若从本地文件恢复
14、scott备份导出的表,此时必须制定所有表,使用如下命令:imp scott/tiger fromuser=scotttouser=scotts file=c:imp_scott_emp.log tables=empignore=y;. 正在将 SCOTT 的对象导入到 SCOTTS2、imp用户模式恢复A. 恢复备份数据的全部内容若从本地文件恢复整个用户的所有表,使用如下命令 C:imp scott/tiger fromuser=scotttouser=scottfile=c:imp_scott.log;若从本地文件恢复该用户的部分表,注意,这里一定要使用ingore=y,使用如下命令:im
15、p_scott.log tables=empignore=y;EMP 导入了14行3、imp全库模式恢复A. 恢复备份数据的全库全部内容若从全库备份文件恢复全库,使用如下命令:imp scott/tiger file=c:imp_full.log full=y;. 正在将 SYSTEM 的对象导入到 SYSTEMB. 恢复备份数据的特定用户内容若从全库备份文件恢复特定用户的对象,使用如下命令:imp_full_scott.log fromuser=scotttouser=scottignore=y;C. 恢复备份数据的特定表内容若从全库备份文件恢复特定表,使用如下命令:imp_full.log
16、 fromuser=scotttouser=scott tables=emp ignore=y;五、exp/imp增量参数INCTYPE1、exp增量备份条件增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须使用SYSTEM账号来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出档定名为export.dmp,必须在命令行中指出要用的文件名。当全库备份比较小时候,采用数据库备份更便于恢复。执行增量备份必须满足下列条件:1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参
17、数。2. 用户必须有EXP_FULL_DATABASE的系统角色。2、exp增量备份类型增量导出包括三种类型:()“完全”增量导出(Complete)备份整个数据库,脚本内容如下:exp system/oracle inctype=complete file=c:exp_incr_full.dmp log=c:exp_incr_full.log()“增量型”增量导出 (Incremental)备份上一次备份后改变的数据,脚本内容如下:exp system/oracle inctype=incremental file=c:exp_incr_incr.dmp log=c:exp_incr_inc
18、r.log()“累积型”增量导出 (Cumulative) 备份自上次“完全”导出之后数据库中变化了的数据。脚本内容如下:exp system/oracle inctype=cumulative file=c:exp_incr_cum.dmp log=c:exp_incr_cum.log六、增量备份恢复实例1、exp增量备份恢复策略数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。比如数据库的备分任务可以做如下安排:星期一:完全导出(export_A.dmp)星期二:增量导出(export_B.dmp)星期三:增量导出(export_C.dmp)星期四:增量导出(ex
19、port_D.dmp)星期五:累计导出(export_E.dmp)星期六:增量导出(export_F.dmp)星期日:增量导出(export_G.dmp)如果在星期日,数据库遭到意外破坏,数据库管理员可按照如下步骤恢复数据库:第一步:用命令CREATE DATABASE重新生成数据库结构;第二步:创建一个足够大的附加回滚,供imp使用。第三步:完全增量导入A:imp system/manager inctype=RESTORE FULL=y FILE=A第四步:累计增量导入E:imp system/manager inctype=RESTORE FULL=Y FILE=E第五步:最近增量导入F
20、:imp system/manager inctype=RESTORE FULL=Y FILE=F2、A时间点全备sqlplus sys/oracle as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 7 17:03:41 2012连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQLgrant dba to scott;
21、create tablespacetbs_incrdatafile D:oracleproduct10.2.0oradataxmlgistbs_incr.dbf size 10M autoextend on next 10M maxsize unlimited;create table scott.a (status varchar(20),weektimevarchar(20)tablespacetbs_incr;insert into scott.avalues(insert,A);commit;expscott/tiger inctype=complete file=c:exp_incr_A.dmp log=c:exp_incr_A.log;日志中发现如下:. . 正在导出表 A导出了1行3、B时间点增量备份create table scott.b (status varchar(20),weektimevarchar(20) tablespacetbs_incr;insert intoscott.bvalues(bin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1