数据泵增量备份

本帖最后由 java3344520 于 2012-11-8 12:51 编辑

大家看看这个参数inctype你是否使用过?我做了以下测试,欢迎拍砖!

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=y

Export: Release 10.2.0.1.0 - Production on 星期三 11月 7 13:41:282012

Copyright (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        用于将会话快照设置回以前状态的 SCN

FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间

QUERY                用于导出表的子集的 select 子句

RESUMABLE            遇到与空格相关的错误时挂起 (N)

RESUMABLE_NAME      用于标识可恢复语句的文本字符串

RESUMABLE_TIMEOUT    RESUMABLE 的等待时间

TTS_FULL_CHECK                     对 TTS 执行完整或部分相关性检查

TABLESPACES            要导出的表空间列表

TRANSPORT_TABLESPACE  导出可传输的表空间元数据 (N)

TEMPLATE              调用 iAS 模式导出的模板名

3、imp语法和参数

C:\Documents and Settings\A4586>imp help=y

Import: Release 10.2.0.1.0 - Production on 星期三 11月 7 13:59:172012

Copyright (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.zhs16gbk

C:\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)

  星期五:累计导出(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:

  imp system/manager inctype=RESTORE FULL=Y FILE=F

2、A时间点全备

C:\Documents and Settings\A4586>sqlplus sys/oracle assysdba

SQL*Plus: Release 10.2.0.1.0 - Productionon 星期三 11月 7 17:03:41 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Miningoptions

SQL>grant dba to scott;

SQL> create tablespace tbs_incr datafile‘D:\oracle\product\10.2.0\oradata\xmlgis\tbs_incr.dbf‘ size 10M autoextend onnext 10M maxsize unlimited;

SQL> create table scott.a (status varchar(20),weektimevarchar(20)) tablespace tbs_incr;

SQL> insert into scott.a values(‘insert‘,‘A‘);

SQL> commit;

C:\Documents and Settings\A4586>exp scott/tigerinctype=complete file=c:\exp_incr_A.dmp log=c:\exp_incr_A.log;

日志中发现如下:

. 即将导出 SCOTT 的表通过常规路径...

. . 正在导出表                               A导出了           1 行

3、B时间点增量备份

SQL> create table scott.b (status varchar(20),weektimevarchar(20)) tablespace tbs_incr;

SQL> insert into scott.b values(‘insert‘,‘b‘);

SQL> insert into scott.a values(‘insert‘,‘b‘);

SQL> commit;

C:\Documents and Settings\A4586>exp scott/tiger inctype=incrementalfile=c:\exp_incr_B.dmp log=c:\exp_incr_B.log;

日志中发现如下:

. 即将导出 SCOTT 的表通过常规路径...

. . 正在导出表                               A导出了           2 行

. . 正在导出表                               B导出了           1 行

通过以上就说明了exp增量备份的最小执行 单位是表。

4、C时间点累积备份

SQL> create table scott.c (status varchar(20),weektimevarchar(20)) tablespace tbs_incr;

SQL> insert into scott.c values(‘insert‘,‘c‘);

SQL> insert into scott.a values(‘insert‘,‘c‘);

SQL> commit;

C:\Documents and Settings\A4586>exp scott/tiger inctype=cumulativefile=c:\exp_incr_C.dmp log=c:\exp_incr_C.log;

日志中发现如下:

. 即将导出 SCOTT 的表通过常规路径...

. . 正在导出表                               A导出了           3 行

. . 正在导出表                               B导出了           1 行

. . 正在导出表                               C导出了           1 行

注意,这里的B表也被备份了,这是因为这里做的是累积备份,相对于全库备份的增加来进行的,因此B表也是新增的,因此被备份了。增量和累积的差异非常清晰。

5、D时间点增量备份

SQL> create table scott.d (status varchar(20),weektimevarchar(20)) tablespace tbs_incr;

SQL> insert into scott.d values(‘insert‘,‘d‘);

SQL> insert into scott.a values(‘insert‘,‘d‘);

SQL> commit;

C:\Documents and Settings\A4586>exp scott/tiger inctype=incrementalfile=c:\exp_incr_D.dmp log=c:\exp_incr_D.log;

日志中发现如下:

. 即将导出 SCOTT 的表通过常规路径...

. . 正在导出表                               A导出了           4 行

. . 正在导出表                               D导出了           1 行

6、E时间点增量备份

SQL> create table scott.e(status varchar(20),weektimevarchar(20)) tablespace tbs_incr;

SQL> insert into scott.e values(‘insert‘,‘e‘);

SQL> insert into scott.a values(‘insert‘,‘e‘);

SQL> commit;

SQL> col status format a10

SQL> select * from scott.a;

STATUS    WEEKTIME

--------------------------------------------------

insert    b

insert    A

insert    c

insert    d

insert    e

6、A表丢失数据恢复

假设A表数据被误删除后,这个时候想要恢复到A,B,C,D,E某个时间的备份如何操作呢?(变相的需求是当前数据不是我想要的,我想恢复到之前某天的数据,先删除,在恢复!)

由于表是一个单独备份的对象单元,因此恢复的时候只要找到备份文件,就可以恢复到想要恢复的时刻。

举例:恢复表A到C点时间的数据,恢复步骤如下:

SQL> select * from scott.a;

STATUS    WEEKTIME

--------------------------------------------------

insert    b

insert    A

insert    c

insert    d

insert    e

SQL> drop table scott.a;

C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott file=c:\exp_incr_c.dmp log=c:\imp_incr_c.logtables=a ignore=y;

经由常规路径由 EXPORT:V10.02.01 创建的导出文件

已经完成 ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集中的导入

导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)

. 正在将 SCOTT 的对象导入到 SCOTT

. . 正在导入表                             "A"导入了           3 行

成功终止导入, 没有出现警告。

SQL> col status format a10

SQL> select * from scott.a;

STATUS    WEEKTIME

---------- ----------------------------------------

insert    b

insert    A

insert    c

举例:恢复A表到D点时刻数据

SQL> drop table scott.a;

C:\Documents and Settings\A4586>imp scott/tigerfromuser=scott touser=scott fil=c:\exp_incr_d.dmp log=c:\imp_incr_d.logtables=a ignore=y;

经由常规路径由 EXPORT:V10.02.01 创建的导出文件

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入

导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)

. 正在将 SCOTT 的对象导入到 SCOTT

. . 正在导入表                             "A"导入了           4 行

成功终止导入, 没有出现警告。

SQL> col status format a10

SQL> select * from scott.a;

STATUS    WEEKTIME

--------------------------------------------------

insert    b

insert    A

insert    c

insert    d

7、D时间点丢失表空间恢复

假设在D时间点备份之后做了些操作后,表空间的数据文件tbs_del.dbf被误删除了,这个情况下的数据恢复步骤:

1:模拟破坏表空间

删除tbs_incr.dbf数据文件,关闭数据库重新启动后,执行插入报错如下:

SQL> insert intoscott.a values(‘del files‘,‘e‘);

insert into scott.a values(‘del files‘,‘e‘)

*

第 1 行出现错误:

ORA-00376: 此时无法读取文件 7

ORA-01110: 数据文件 7:‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\XMLGIS\TBS_INCR.DBF‘

2:将被损坏的表空间(或涉及到数据文件损坏的表空间)offline:

SQL>connect / as sysdba

SQL> COL SEGMENT_NAME FORMAT A10

SQL> select SEGMENT_NAME,SEGMENT_TYPE from dba_segmentswhere tablespace_name=‘T

BS_INCR‘;

SEGMENT_NA SEGMENT_TYPE

----------------------------------------------

A         TABLE

B         TABLE

C         TABLE

D         TABLE

E         TABLE

SQL>alter tablespace tbs_incr offline immediate;

SQL>drop tablespace tbs_incr including contents;

3:恢复表空间和数据文件

SQL>create tablespace tbs_incr datafile‘D:\oracle\product\10.2.0\oradata\xmlgis\tbs_incr.dbf‘ size 10M autoextend onnext 10M maxsize unlimited;

创建表空间参数,以及数据文件的路径和大小,可以参照以前的设置,创建表空间成功后,一一恢复属于该表空间的各用户对象。

然后根据想要表对应的备份进行恢复即可,步骤同6.

8、全库恢复

进行全库方法,建立好表空间,然后全库导入,这里测试用删除SCOTT用户的表A,来测试全库恢复情况(A+C+D):

恢复全库备份A:

C:\Documents and Settings\A4586>imp scott/tiger  file=c:\exp_incr_a.dmp log=c:\imp_incr_a.loginctype=restore full=y ignore=y;

恢复累积备份C:

C:\Documents and Settings\A4586>imp scott/tiger  file=c:\exp_incr_c.dmp log=c:\imp_incr_c.loginctype=restore full=y ignore=y;

. 正在将 SCOTT 的对象导入到 SCOTT

. . 正在导入表                             "A"导入了           3 行

. . 正在导入表                             "B"导入了           1 行

. . 正在导入表                             "C"导入了           1 行

恢复增量备份D:

C:\Documents and Settings\A4586>imp scott/tiger  file=c:\exp_incr_d.dmp log=c:\imp_incr_d.loginctype=restore full=y ignore=y;

. 正在将 SCOTT 的对象导入到 SCOTT

. . 正在导入表                             "A"导入了           4 行

. . 正在导入表                             "D"导入了           1 行

SQL> col status format a10

SQL> select * from scott.a;

STATUS    WEEKTIME

--------------------------------------------------

insert    b

insert    A

insert    c

insert    d

异常测试:删除A表和B表,直接用C备份进行恢复,看看回复情况如何

SQL> DROP TABLE SCOTT.A;

SQL> DROP TABLE SCOTT.B;

直接恢复累积备份C:

C:\Documents and Settings\A4586>imp scott/tiger  file=c:\exp_incr_c.dmp log=c:\imp_incr_c.loginctype=restore full=y ignore=y;

. 正在将 SCOTT 的对象导入到 SCOTT

. . 正在导入表                             "A"导入了           3 行

. . 正在导入表                             "B"导入了           1 行

. . 正在导入表                             "C"导入了           1 行

SQL> select * from scott.b;

select * from scott.b

*

第 1 行出现错误:

ORA-00942: 表或视图不存在

这个时候发现,B表并未导入,类似RMAN里的不完全恢复。

七、Exp/Imp增量备份恢复总结

Export/Import支持的增量和累计备份实际上是表级的,即上一次备份之后变化的表将全表卸载,而不是变化的记录。因此,在以OLTP应用为主的数据库中,由于保存主要业务数据的表处于频繁的录入和更新之中,增量和累计卸载并不能显著提高备份的效率。

在做整个数据库Import时,缺省状态下以一个Table为一个Transaction,所以如果存在一些表的数据量很大, 建议使用commit=y并且要提供一个较大的buffer值,同时建立一个临时Rollback segment ,它的default storage参数initial 和 next要设置大一些,并要将这个Rollback Segment Online,同时offline 其他小的rollbacksegments。确保一个Table能完整import 。因为在做import时, 数据库将自动创建索引,及完整性约束, 为了加快数据加载的速度及一次成功的概率,可以考虑在export之前首先disable所有的完整性约束, 在import之后在enable所有的完整性约束。而对索引,可以考虑单独export索引。通过使用命令 "imp indexfile=……" 在import数据之后来单独创建索引。

如果希望在export数据库时,直接将产生的dmp文件写到外设上, 你可以使用 "exp file=设备名… Volsize=设备的容量"。

由于export出来的文件可能较大,而某些操作系统(如Linux)对文件大小有限制,如不能大于2G。因此可将dmp文件设置为指定大小的若干文件。如:

exp sys/managerbuffer=4096000 file=(full1.dmp,full2.dmp,full3.dmp,full4.dmp) filesize=2GFull=y inctype=complete log=full.log

原文地址:https://www.cnblogs.com/youngerger/p/8495452.html

时间: 2024-10-10 05:57:32

数据泵增量备份的相关文章

Linux环境下Oracle数据泵(expdp)备份报ORA-39006: internal error

问题描述: Oracle一直用数据泵备份,今天在终端备份时突然报ORA-39006: internal error错误. 数据泵导出日志文件为以下信息: ORA-39097: Data Pump job encountered unexpected error -31644 ORA-39065: unexpected master process exception in FILE ORA-31644: unable to position to block number 2 in dump f

oracle数据泵的备份和恢复

数据泵工具可以从命令好使用程序 expdp 和impdp中调用数据泵技术的特点导入/导出的所有工作都由数据库实例完成可以使用dbms_datapump pl/sql APL建立.检测和调用数据泵任务可以对IMPDP/ECPD导入导出任务进行重新启动,类似于网络下载的断点续传 expd的导出方式数据库方式,整个数据库被导出操作系统文件中用户模式,导出一个或多个用户下的所有数据和元数据表方式,导出的数据包括一组表中的所有数据和元素据表空间方式 导出时提取用于一个表空间的所有对像的数据. grant

oracle数据泵备份(Expdp命令)[转]

Oracle备份方式主要分为数据泵导出备份.热备份与冷备份三种,今天首先来实践一下数据泵备份与还原.数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份.oracle10g开始推出了数据泵(expdp/impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高. 一.知晓expdp命令 ? C:\>expdp -help Export: Release 11.1.0.7.0 - Production on 星期六, 28 9月, 2013 10:21:52 Copy

NFS +inotify+rsync 实现数据的远程挂载与实时增量备份

NFS 网络文件系统 功能: 用户可以像访问自己的本地文件系统一样使用网络中的远端系统上的文件 原理: 用户进程-->RPC服务(portman)-->tcp/ip协议栈-->远端主机RPC服务 后 -->远端NFS服务-->远端主机本地磁盘数据-->NFS服务-->tcp/ip协议栈-->本地数据 优点: 易于实现前段服务器代理分流的时候处理sission以及数据查找时找不到数据等问题,且同时起到了就算任何一个web服务器宕机都不影响数据的访问 缺点: 单

Oracle数据泵原理及应用

Oracle数据库的备份历史 在信息系统中,数据库的备份是必不可少的一个步骤. 在Oracle数据中,数据的备份和还原在10g版本之前,一直使用的是IMPORT/EXPORT 的导入导出方式.最大的缺点就是速度慢.效率低.当这种方式用于企业级的项目中的时候,缺点就暴露出来了. 对于大数据的企业项目,数据的备份和还原因为采用IMPORT/EXPORT的方式而降低效率. 数据泵导入导出与传统导入导出的区别 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的E

mysql实时增量备份 binlog日志备份

启用binlog日志实现对数据的增量备份: 日志存储位置: /var/lib/mysql/ 日志名称:主机名-bin.000001 或mysqld-bin.000001 binlog日志概述:二进制日志,记录所有更改数据的操作:默认超过500M自动生成新的日志: 修改主配置文件启用binlog日志 vim /etc/my.cnf [mysqld] log-bin  (或指定日志名log-bin=x.000001或者指定目录和文件名log-bin=/logdir/X.000001) max-bin

ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法

Oracle使用EXPDP和IMPDP数据泵进行导出导入的方法 使用expdp和impdp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用. 3.imp只适用于exp导出的文件,不适用于expdp导出文件:impdp只适用于expdp导出的文件,而不适用于exp导出文件. 4.对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须

MySQL第五天(增量备份和增量恢复)

day05一.数据备份与恢复-增量备份和增量恢复a.binlog日志介绍(二进制文件):使用Mysql数据库服务日志文件类型的一种.记录除查询之外的sql命令.默认没启用 查询的sql包括:select desc show 不是查询的命令:insert update delete create drop grant revoke b.启用binlog日志如何启用日志默认存放位置/var/lib/mysql日志默认名称主机名-bin.00000151-bin.000001 (大于500M自动生成0

mysql实时增量备份

采用binlog日志的好处 掌控所有更改操作,必要时可用于恢复数据 数据库主从复制的必要条件 [[email protected]~]# vim /etc/my.cnf [mysqld] .. .. log-bin=mysql-bin //启用二进制日志,并指定前缀 .. ..[[email protected] ~]# service mysqld restart 确认binlog日志文件新启用binlog后,每次启动MySQl服务都会新生成一份日志文件: [[email protected]