a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有一定的影响。
b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。同触发器方式一样,时间戳方式的性能也比较好,数据抽取相对清楚简单,但对业务系统也有很大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳 *** 作。
c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码。
d.日志对比:通过分析数据库自身的日志来判断变化的数据。
oracle数据库全量和增量导出一样。根据查询相关公开信息显示,数据如果保留多份,就会存在一致性问题,就需要同步,同步分为两大类:全量和增量,全量,这个很好理解。就是每天定时(避开业务高峰期)或者周期性全量把数据从一个地方拷贝到另外一个地方,增量的基础是全量,就是你要使用某种方式先把全量数据拷贝过来,然后再采用增量方式同步更新。Oracle数据库逻辑增量备份之exp/imp一、实现需求
由于一个库在云平台上,虽然做了RMAN备份,但是RMAN备份在云本地磁盘上,同时库备份数据量比较大,无法转移到其他的空间上。由于该库应用的性质比较特殊,大数据量部分要求保存180天后即可删除,因此除了做RMAN之外,我希望将核心数据做下额外的备份,expdp可以满足,目前是这么做的,但是expdp做不了增量备份。听说exp/imp有参数能做增量备份,但是又听说exp增量备份的最小单位是表,只要表一条数据发生变化,就会对全表进行备份。之前没有用过exp增量备份这个功能,于是决定先做下测试,看到底备份恢复效率和真实机制如何。
二、逻辑备份恢复工具exp/imp1、逻辑备份原理Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。
逻辑导出备份:创建数据库对象的逻辑拷贝并存入一个二进制转储文件。这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。此备份方式是通过Oracle的实用工具export和import来实施的, export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。通过此工具可以衍生出多种功能, 比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。
重新温习下exp/imp的语法和参数,着重看看增量备份参数相关说明。
2、exp语法和参数
C:\Documents and Settings\A4586>exp help=yExport: Release 10.2.0.1.0 - Production on 星期三 11月 7 13:41:282012Copyright (c) 1982, 2005, Oracle. All rights reserved.
通过输入 EXP 命令和您的用户名/口令, 导出
*** 作将提示您输入参数:
例如: EXPSCOTT/TIGER
或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出的运行方式。要指定参数, 您可以使用关键字:
格式: EXP KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)例如: EXPSCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或TABLES=(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 屏幕输出的日志文件
STATISTICS分析对象(ESTIMATE)
ROWS 导出数据行(Y)
PARFILE 参数文件名
CONSISTENT交叉表的一致性(N)
CONSTRAINTS 导出的约束条件 (Y)
OBJECT_CONSISTENT只在对象导出期间设置为只读的事务处理(N)FEEDBACK 每 x 行显示进度 (0)
FILESIZE 每个转储文件的最大大小FLASHBACK_SCN用于将会话快照设置回以前状态的 SCNFLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间QUERY用于导出表的子集的 select 子句RESUMABLE遇到与空格相关的错误时挂起 (N)RESUMABLE_NAME 用于标识可恢复语句的文本字符串RESUMABLE_TIMEOUTRESUMABLE 的等待时间TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查TABLESPACES要导出的表空间列表TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TEMPLATE 调用 iAS 模式导出的模板名3、imp语法和参数
C:\Documents and Settings\A4586>imp help=yImport: Release 10.2.0.1.0 - Production on 星期三 11月 7 13:59:172012Copyright (c) 1982, 2005, Oracle. All rights reserved.
通过输入 IMP 命令和您的用户名/口令, 导入
*** 作将提示您输入参数:
例如: IMPSCOTT/TIGER
或者, 可以通过输入 IMP 命令和各种参数来控制导入的运行方式。要指定参数, 您可以使用关键字:
格式: IMP KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)例如: IMPSCOTT/TIGER IGNORE=Y TABLES=(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)RECORDLENGTH IO 记录的长度
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_TIMEOUT RESUMABLE 的等待时间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:\Documents and Settings\A4586>set nls_lang=simplifiedchinese_china.zhs16gbkC:\Documents and Settings\A4586>exp scott/tiger file=c:\exp_scott_emp.dmplog=c:\exp_scott_emplog tables=scott.emp,scott.dept即将导出指定的表通过常规路径...
. . 正在导出表 EMP导出了 14 行. . 正在导出表DEPT导出了 4 行导出成功。
2、exp用户模式备份
备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:
C:\Documentsand Settings\A4586>expscott/tiger file=c:\exp_scott.dmp log=c:\exp_scott.log owner=scott即将导出指定的用户...
. 正在导出 pre-schema 过程对象和 *** 作
. 正在导出用户 SCOTT 的外部函数库名
. 导出 PUBLIC 类型同义词
. 正在导出专用类型同义词
. 正在导出用户 SCOTT 的对象类型定义
即将导出 SCOTT 的对象...
. 正在导出数据库链接
. 正在导出序号
. 正在导出簇定义
. 即将导出 SCOTT 的表通过常规路径...
. . 正在导出表 BONUS导出了 0 行. . 正在导出表DEPT导出了 4 行. . 正在导出表 EMP导出了 14 行. . 正在导出表SALGRADE导出了 5 行…….
3、exp全库模式备份
备份完整的数据库。业务数据库不采用这种备份方式。注意导出用户权限。备份命令为:
C:\Documents and Settings\A4586>exp system/oraclefile=c:\exp_full.dmp log=c:\exp_full.log full=y即将导出整个数据库...
. 正在导出表空间定义
. 正在导出概要文件
. 正在导出用户定义
. 正在导出角色
. 正在导出资源成本
. 正在导出回退段定义
. 正在导出数据库链接
. 正在导出序号
…….
四、imp逻辑恢复
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库。数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
1、imp表模式恢复
A. 恢复表备份数据的全部内容
若从本地文件恢复scott导出的表,使用如下命令:
C:\Documentsand Settings\A4586>impscott/tiger fromuser=scott touser=scott file=c:\exp_scott_emp.dmp log=c:\imp_scott_emp.log经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表 "EMP"导入了 14 行. . 正在导入表 "DEPT"导入了 4 行即将启用约束条件...
成功终止导入, 没有出现警告。
B. 恢复备份数据中的指定表
若从本地文件恢复scott备份导出的表,此时必须制定所有表,使用如下命令:
C:\Documents andSettings\A4586>impscott/tiger fromuser=scott touser=scotts file=c:\exp_scott_emp.dmp log=c:\imp_scott_emp.logtables=emp ignore=y经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SCOTT 的对象导入到 SCOTTS
. . 正在导入表 "EMP"导入了 14 行即将启用约束条件...
成功终止导入, 没有出现警告。
2、imp用户模式恢复
A. 恢复备份数据的全部内容
若从本地文件恢复整个用户的所有表,使用如下命令C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott file=c:\exp_scott.dmp log=c:\imp_scott.log. 正在将 SCOTT 的对象导入到 SCOTTS
B. 恢复备份数据中的指定表
若从本地文件恢复该用户的部分表,注意,这里一定要使用ingore=y,使用如下命令:
C:\Documentsand Settings\A4586>impscott/tiger fromuser=scott touser=scotts file=c:\exp_scott.dmp log=c:\imp_scott.logtables=emp ignore=y经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). . 正在导入表 " EMP "导入了 14 行成功终止导入, 没有出现警告。
3、imp全库模式恢复
A. 恢复备份数据的全库全部内容
若从全库备份文件恢复全库,使用如下命令:
C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full.log full=y经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SYSTEM 的对象导入到 SYSTEM
…….
B. 恢复备份数据的特定用户内容
若从全库备份文件恢复特定用户的对象,使用如下命令:
C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full_scott.log fromuser=scott touser=scott ignore=y经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SCOTT 的对象导入到 SCOTTS
…….
C. 恢复备份数据的特定表内容
若从全库备份文件恢复特定表,使用如下命令:
C:\Documents and Settings\A4586>imp scott/tigerfile=c:\exp_full.dmp log=c:\imp_full.log fromuser=scott touser=scott tables=empignore=y经由常规路径由 EXPORT:V10.02.01 创建的导出文件已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入导入服务器使用 AL32UTF8 字符集 (可能的字符集转换). 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表 "EMP"导入了 14 行即将启用约束条件...
成功终止导入, 没有出现警告。
五、 exp/imp增量参数INCTYPE1、exp增量备份条件增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须使用SYSTEM账号来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出档定名为export.dmp,必须在命令行中指出要用的文件名。当全库备份比较小时候,采用数据库备份更便于恢复。
执行增量备份必须满足下列条件:
1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。
2. 用户必须有EXP_FULL_DATABASE的系统角色。
2、exp增量备份类型
增量导出包括三种类型:
(1)“完全”增量导出(Complete)
备份整个数据库,脚本内容如下:
C:\Documents andSettings\A4586>expsystem/oracle inctype=complete file=c:\exp_incr_full.dmplog=c:\exp_incr_full.log(2)“增量型”增量导出(Incremental)
备份上一次备份后改变的数据,脚本内容如下:
C:\Documents andSettings\A4586>expsystem/oracle inctype=incremental file=c:\exp_incr_incr.dmplog=c:\exp_incr_incr.log(3)“累积型”增量导出(Cumulative)
备份自上次“完全”导出之后数据库中变化了的数据。脚本内容如下:
C:\Documents andSettings\A4586>expsystem/oracle inctype=cumulative file=c:\exp_incr_cum.dmplog=c:\exp_incr_cum.log六、增量备份恢复实例1、exp增量备份恢复策略数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。
比如数据库的备分任务可以做如下安排:
星期一:完全导出(export_A.dmp)
星期二:增量导出(export_B.dmp)
星期三:增量导出(export_C.dmp)
星期四:增量导出(export_D.dmp)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)