表空间时间点恢复

更新时间:2024-02-03 09:32:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Oracle TSPITR

TSPITR介绍

TSPITR(表空间时间点恢复)用于将一个或多个表空间恢复到过去某个时间点的状态,而其他表空间仍然保持现有状态。

(1) TSPITR(Tablespace Point-In-Time Recovery),只适用于ARCHIVELOG模式。 (2) TSPITR实现方法,建议使用RMAN实现表空间时间点恢复。

(3) DBPITR(Database Point-In-TIme Recovery),数据库时间点恢复;表示将数据库的所有表空间恢复到过去时间颠倒俄状态,只适用于ARCHIVELOG模式。

(4) 主数据库(Primary Database),用于存放应用系统数据的Oracle数据库。当执行TSPITR时,主数据库是指包含有被恢复表空间的数据库。

(5) 恢复集(Recovery Set),是指在主数据库上需要执行TSPITR的表空间集合。注意,当在恢复集的表空间上执行TSPITR时,要求这些表空间必须是自包含的。 (6) 辅助数据库(Auxiliary Database),是主数据库的一个副本数据库。当执行TSPITR时,辅助数据库用于将恢复集表空间恢复到过去时间点。注意,辅助数据库的所有物理文件都是从主数据库备份中取得,并且辅助数据库必须包含SYSTEM表空间、UNDO表空间、恢复集表空间的备份文件。

(7) 辅助集(Auxiliary Set),是指辅助数据库所需要的、除了恢复集表空间文件之外地饿其他文件集合。当执行TSPITR时,辅助数据库除了需要恢复表空间的备份文件之外,还需要备份控制文件、SYSTEM表空间的备份文件、UNDO表空间的备份文件。

注意:恢复集表空间必须为自包含;

违反自包含表空间集合的常见情况如下: 1> 表空间集合包含有SYS方案对象

2> 表空间集合包含了索引所在的表空间,但没有包含索引基表所在的表空间 3> 表空间集合没有包含分区表的所有分区

4> 表空间集合包含了表所在的表空间,但没有包含其LOB列所在的表空间 检查自包含方式:

SQL> connect sys/oracle@demo as sysdba

SQL> execute dbms_tts.transport_set_check('user01',true); SQL> Select * From transport_set_violations; 测试

环境 10.2.0.1 + WinXp

--创建表空间

CREATE TABLESPACE \ LOGGING

DATAFILE 'C:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\DATACNT_TEST.ora' SIZE 50M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

-- create table

create table ttest (i_id integer, c_name varchar2(10)) tablespace datacnt_test; create index itest on ttest(i_id) tablespace DATACNT_TEST;

insert into ttest(i_id,c_name) values (1, '1'); insert into ttest(i_id,c_name) values (2, '2'); insert into ttest(i_id,c_name) values (3, '3'); insert into ttest(i_id,c_name) values (4, '4'); insert into ttest(i_id,c_name) values (5, '5'); insert into ttest(i_id,c_name) values (6, '6'); insert into ttest(i_id,c_name) values (7, '7'); insert into ttest(i_id,c_name) values (8, '8'); insert into ttest(i_id,c_name) values (8, '9'); insert into ttest(i_id,c_name) values (10, '10'); insert into ttest(i_id,c_name) values (11, '11');

select * from ttest;

--check SELECT *

FROM SYS.TS_PITR_CHECK WHERE (

TS1_NAME IN ('DATACNT_TEST')

AND TS2_NAME NOT IN ('DATACNT_TEST') )

OR (

TS1_NAME NOT IN ('DATACNT_TEST') AND TS2_NAME IN ('DATACNT_TEST') );

--记住时间点

select sysdate from dual;

--执行rman备份 run{

allocate channel d1 type disk; backup tag ts_test

format 'C:\\temp\\TS_t%t_s%s.bkp'

tablespace DATACNT_TEST,UNDOTBS1,SYSTEM; backup current controlfile; release channel d1; }

--模拟操作 修改ttest的表

delete from ttest where c_name like '%1%'; commit;

RMAN> run {

2> recover tablespace DATACNT_TEST until time \13:31:48','yyyy-mm-dd hh24:mi:ss')\3> } run {

2> recover tablespace yyp until time \hh24:mi:ss')\(标黄处是表空间的设定目录)

启动 recover 于 18-3月 -10 分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=148 devtype=DISK

RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

表空间列表要求具有 UNDO 段 表空间 SYSTEM 表空间 UNDOTBS1

使用 SID='yaxj' 创建自动实例

供自动实例使用的初始化参数: db_name=ORCL

compatible=10.2.0.1.0 db_block_size=8192 db_files=200

db_unique_name=tspitr_ORCL_yaxj large_pool_size=1M shared_pool_size=110M

#No auxiliary parameter file used db_create_file_dest=C:\\auxiliary

control_files=C:\\auxiliary/cntrl_tspitr_ORCL_yaxj.f

启动自动实例 ORCL

Oracle 实例已启动

系统全局区域总计 201326592 字节

Fixed Size 1248092 字节 Variable Size 146801828 字节 Database Buffers 50331648 字节 Redo Buffers 2945024 字节 自动实例已创建

内存脚本的内容: {

# set the until clause

set until time \# restore the controlfile restore clone controlfile; # mount the controlfile

sql clone 'alter database mount clone database';

# archive current online log for tspitr to a resent until time sql 'alter system archive log current';

# avoid unnecessary autobackups for structural changes during TSPITR sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;'; }

正在执行内存脚本

正在执行命令: SET until clause

启动 restore 于 18-3月 -10 分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在复原控制文件 通道 ORA_AUX_DISK_1: 正在读取备份段

C:\\ORACLE\\PRODUCT\\10.2.0\\FLASH_RECOVERY_AREA

\\ORCL\\AUTOBACKUP\\2010_03_18\\O1_MF_S_713971810_5T3GM4G6_.BKP 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 =

C:\\ORACLE\\PRODUCT\\10.2.0\\FLASH_RECOVERY_AREA\\ORCL\\AUTOBACKUP\\2010_03_18

\\O1_MF_S_713971810_5T3GM4G6_.BKP 标记 = TAG20100318T133010

通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:03

输出文件名=C:\\AUXILIARY\\CNTRL_TSPITR_ORCL_YAXJ.F 完成 restore 于 18-3月 -10

sql 语句: alter database mount clone database

sql 语句: alter system archive log current

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end; 释放的通道: ORA_DISK_1

释放的通道: ORA_AUX_DISK_1

内存脚本的内容: {

# generated tablespace point-in-time recovery script # set the until clause

set until time \plsql <<<-- tspitr_2 declare

sqlstatement varchar2(512); offline_not_needed exception;

pragma exception_init(offline_not_needed, -01539); begin

sqlstatement := 'alter tablespace '|| 'DATACNT_TEST' ||' offline for recover' ;

krmicd.writeMsg(6162, sqlstatement); krmicd.execSql(sqlstatement); exception

when offline_not_needed then null; end; >>>;

# set an omf destination filename for restore set newname for clone datafile 1 to new; # set an omf destination filename for restore set newname for clone datafile 2 to new; # set an omf destination tempfile

set newname for clone tempfile 1 to new; # set a destination filename for restore set newname for datafile 20 to

\# rename all tempfiles switch clone tempfile all;

# restore the tablespaces in the recovery set plus the auxilliary tablespaces restore clone datafile 1, 2, 20;

switch clone datafile all;

#online the datafiles restored or flipped

sql clone \1 online\#online the datafiles restored or flipped

sql clone \2 online\#online the datafiles restored or flipped

sql clone \20 online\

# make the controlfile point at the restored datafiles, then recover them

recover clone database tablespace \delete a rchivelog;

alter clone database open resetlogs;

# PLUG HERE the creation of a temporary tablespace if export fails due to lack # of temporary space.

# For example in Unix these two lines would do that: #sql clone \

# datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K\}

正在执行内存脚本

正在执行命令: SET until clause

sql 语句: alter tablespace DATACNT_TEST offline for recover

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_TEMP_%U_. TMP

启动 restore 于 18-3月 -10 分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001恢复到

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_SYSTEM_%U_.DBF

正将数据文件00002恢复到

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_UNDOTBS1_%U_.DBF 正将数据文件00020恢复到

C:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\DATACNT_TEST.ORA

通道 ORA_AUX_DISK_1: 正在读取备份段 C:\\TEMP\\TS_T713971680_S14.BKP 通道 ORA_AUX_DISK_1: 已恢复备份段 1

段句柄 = C:\\TEMP\\TS_T713971680_S14.BKP 标记 = TS_LEVEL0 通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:02:05 完成 restore 于 18-3月 -10

数据文件 1 已转换成数据文件副本

输入数据文件副本 recid=5 stamp=713972344 文件名=C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O 1_MF_SYSTEM_5T3GZTN2_.DBF 数据文件 2 已转换成数据文件副本

输入数据文件副本 recid=6 stamp=713972344 文件名=C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O 1_MF_UNDOTBS1_5T3GZTSX_.DBF

sql 语句: alter database datafile 1 online

sql 语句: alter database datafile 2 online

sql 语句: alter database datafile 20 online

启动 recover 于 18-3月 -10 使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 51 已作为文件

C:\\ORACLE\\PRODUCT\\10.2.0\\FLASH_RECOVERY_AREA\\O

RCL\\ARCHIVELOG\\2010_03_18\\O1_MF_1_51_5T3GZN5F_.ARC 存在于磁盘上 存档日志文件名

=C:\\ORACLE\\PRODUCT\\10.2.0\\FLASH_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\201 0_03_18\\O1_MF_1_51_5T3GZN5F_.ARC 线程 =1 序列 =51 介质恢复完成, 用时: 00:00:01 完成 recover 于 18-3月 -10

数据库已打开

内存脚本的内容: {

# export the tablespaces in the recovery set

host 'exp userid

=\\\=oracleyaxj)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'

ORACLE_SID=yaxj^'))(CONNECT_DATA=(SID=yaxj))) as sysdba\\\point_in_time_recover= y tablespaces=

DATACNT_TEST file= tspitr_a.dmp';

# shutdown clone before import shutdown clone immediate

# import the tablespaces in the recovery set

host 'imp userid =\\\tspitr_a.dmp';

# online/offline the tablespace imported

sql \DATACNT_TEST online\sql \DATACNT_TEST offline\

# enable autobackups in case user does open resetlogs from RMAN after TSPITR sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;'; }

正在执行内存脚本

Export: Release 10.2.0.1.0 - Production on 星期四 3月 18 13:39:34 2010

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 注: 将不导出表数据 (行)

即将导出表空间时间点恢复对象... 对于表空间 DATACNT_TEST... . 正在导出簇定义 . 正在导出表定义

. . 正在导出表 TTEST . 正在导出引用完整性约束条件 . 正在导出触发器 . 终止时间点恢复

成功终止导出, 没有出现警告。 主机命令完成

数据库已关闭 数据库已卸载

Oracle 实例已关闭

Import: Release 10.2.0.1.0 - Production on 星期四 3月 18 13:39:58 2010

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件 即将导入表空间时间点恢复对象...

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入 . 正在将 SYS 的对象导入到 SYS

. 正在将 CUSTOMER21 的对象导入到 CUSTOMER21 . . 正在导入表 \. 正在将 SYS 的对象导入到 SYS 成功终止导入, 没有出现警告。 主机命令完成

sql 语句: alter tablespace DATACNT_TEST online

sql 语句: alter tablespace DATACNT_TEST offline

sql 语句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;

删除自动实例 自动实例已删除

已删除辅助实例文件 C:\\AUXILIARY\\CNTRL_TSPITR_ORCL_YAXJ.F 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_SYSTEM_5T3GZTN2_.DBF 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_UNDOTBS1_5T3GZTSX_.DBF 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\DATAFILE\\O1_MF_TEMP_5T3H49K4_.TMP 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\ONLINELOG\\O1_MF_1_5T3H3XNK_.LOG 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\ONLINELOG\\O1_MF_2_5T3H3ZYB_.LOG 已删除辅助实例文件

C:\\AUXILIARY\\TSPITR_O\\ONLINELOG\\O1_MF_3_5T3H423H_.LOG

完成 recover 于 18-3月 -10

还原成功;

Oracle 数据库备份与恢复(RMAN介绍五) (2008-09-05 07:57) 分类: Oracle

例:一个比较复杂的复制命令如下:

RMAN> RUN {

allocate auxiliary channel newdb1 device type sbt; duplicate target database to newdb

DB_FILE_NAME_CONVERT=('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')

UNTIL TIME 'SYSDATE-1' # specifies incomplete recovery SKIP TABLESPACE cmwlite, drsys, example # skip desired tablespaces

PFILE = ?/dbs/initNEWDB.ora LOGFILE

GROUP 1 ('?/oradata/newdb/redo01_1.log', '?/oradata/newdb/redo01_2. log') SIZE 200K, GROUP 2 ('?/oradata/newdb/redo02_1. log'', '?/oradata/newdb/redo02_2. log'') SIZE 200K GROUP 3 ('?/oradata/newdb/redo03_1. log'',

'?/oradata/newdb/redo03_2. log'') SIZE 200K REUSE; }

4.7.3 表空间时间点恢复(TSPITR)

用户可能错误的删除了几个表,而且还截断了几个表,如果进行整库恢复可能代价比较

高,这时,我们可以执行表空间时间点恢复(tablespace point-in-time recovery, TSPITR)。

为了掌握如何执行 TSPITR,应该理解下面这些术语:

辅助实例(auxiliary instance): 这是我们创建的临时实例,RMAN 使用这个实例执行

TSPITR。完成 TSPITR 后,这个实例可以删除。

辅助集(auxiliary set): 辅助实例上的文件集。包括控制文件、回滚段或者重做段的表 空间、系统表空间、联机日志文件等,还可以选择辅助实例的临时表空间。

恢复集(recovery set): 要执行 TSPITR 的表空间/数据文件集 目标数据库: 实际执行 TSPITR 的数据库

TSPITR 的本质是,RMAN 将要进行时间点恢复的表空间按照设定的条件恢复到辅助 实例上,然后再从辅助实例将表空间传到目标数据库,从而避免整个数据库的恢复,减少恢复时间,而且这期间其他表空间仍然可用。( 用户管理的备份与恢复也可以使用 TSPITR)

检查TSPITR之后丢失的对象,被丢失对象信息的获取: SQL> Select owner, name

From TS_PITR_OBJECTS_TO_BE_DROPPED

Where tablespace_name = 'USER01' And creation_time >

to_date( '2004-09-27 11:25:21', 'yyyy-mm-dd hh24:mi:ss' ); 进行TSPITR 的基本步骤是(与有些书上的步骤略有不同):

(0) 检查需要恢复的表空间的数据文件备份和控制文件备份是否存在 (1) 验证表空间的可传输性 (2) 准备辅助实例

(3) 执行实际的 TSPITR

(4) 在目标数据库上执行 TSPITR 后的操作。

1.验证表空间的可传输性

RMAN 使用 Oracle 可传送的表空间特性来执行 TSPITR,因此表空间本身必须是可传送

的。许多因素都导致表空间不可传送。 TSPITR 限制

不能还原包含 SYS 用户对象

不能执行 TSPITR 恢复具有复制主表的表空间 不支持使用快照日志的表空间 不能还原含有回滚段的表空间

不能还原含有分区对象(该对象的分区跨越多个表空间)的表空间 表空间中不能含有 VARRAY、嵌套表、外部表对象 TSPITR 不能用于恢复删除的表空间。

可以通过 TS_PITR_CHECK 视图来判断表空间是否可传送。如果表空间不可传送,那么执行 TSPITR 时就会失败。下面是查询 USERS 表空间是否可传送的语句:

SQL> SELECT OBJ1_NAME \Owner\\Name\obj1_type \FROM TS_PITR_CHECK WHERE ts1_name='USERS'; 如果未选定行,说明 USERS 表空间可传输。

2.准备TSPITR 的辅助实例 (AUXILIARY INSTANCE)

启动 TSPITR 之前,需要准备辅助实例。这是一个不需要 RMAN 参与的手工过程。执

行下面的步骤来创建辅助实例: u 创建口令文件

u 创建辅助实例的参数文件: 编辑辅助实例参数文件的一个简单方法是把目标数据库的参数文件改一下即可。如果目标数据库用的是 SPFILE,那么

在 SQLPLUS 中执行 CREATE PFILE FROM SPFILE 就可以生成参数文件。 注意:

control_files 设置为辅助实例上的文件名 db_name = 目标实例

lock_name_space 如果辅助实例与目标数据库同一主机,必须设置 instance_name service_names 取一新名,如 AUX db_file_name_convert 数据文件名的转换 log_file_name_convert 日志文件名的转换 注释掉 log_archive_start 参数 u 如果在 Windows NT 上运行 Oracle,需要使用 oradim 来添加数据库服务

u 启动辅助实例,如有必要,配置 tnsnames.ora,测试是否连通。

3.执行实际的TSPITR 例子: 恢复用户误删除的某个重要的表。将实例 MING 的 USERS 表空间恢复到 SCN

是 3818161 的时候。 启动辅助实例:

C:\\>SET ORACLE_SID=AUX1 C:\\>SQLPLUS /NOLOG

SQL> CONNECT / AS SYSDBA SQL> STARTUP NOMOUNT;

请注意,SET ORACLE_SID=AUX1 很重要,这样就可以不用配置 TNSNAMES.ORA 执行实际的TSPITR 首先要连到目标数据库和辅助实例。可以联到恢复目录,也可以不连到恢复目录: C:\\> SET ORACLE_SID=AUX1

C:\\> RMAN TARGET /@MING CATALOG RMAN/RMAN@RECO AUXILIARY / RMAN> RECOVER TAB LESPACE USERS UNTIL SCN 233646; …

等待完成表空间的恢复。当然也可以用 UNTIL TIME 或者 UNTIL SEQUENCE 子 句,例: RMAN> run {

allocate auxiliary channel c1 device type disk; recover tablespace user02 until logseq 9; }

( 这里有些版本有一个 ORACLE的 BUG,执行到最后可能会报错,需要打补丁 ?? )

可以改变辅助集/恢复集数据文件的位置和名称:

set newname for datafile 5 to 'c:\\demo\%user01.dbf'; configure auxname for datafile 1 to '/backup/xxx.dbf’;

在初始化参数文件中用 DB_FILE_NAME_CONVERT 进行转换

10g 中增加了auxiliary destination ,更方便

RMAN> recover tablespace user01 until logseq 19 auxiliary destination 'd:\\auxiliary';

4.执行TSPITR 后的操作

首先应该重新连接 RMAN与目标数据库,并且备份刚恢复的表空间。完成备份后, 需要将表空间联机(RMAN 在 TSPITR 后使表空间脱机)。最后,我们还要关闭或删除辅 助数据库。

4.7.4 块媒体恢复 Block Media Recovery (BMR)

产生块损坏的原因一般是间断或随机的 I/O 错误或者是内存的块错误。要恢复的坏块信息可以从报警与跟踪文件,表与索引的分析,DBV 工具或第三方媒体管理工具以及具体 的查询语句中获得。

1. DBV 工具 dbv file=EYGLE.DBF blocksize=8192 2. RMAN> backup validatedatafile 4; -- 或者 BACKUP VALIDATE DATABASE 备份的 坏 块 信息 保存 在 V$BACKUP_CORRUPTION 、 V$COPY_CORRUPTION 和

V$DATABASE_BLOCK_CORRUPTION 视图中。

V$BACKUP_CORRUPTION 显示历史讹误的视图 V$DATABASE_BLOCK_CORRUPTION 显示当前数据块讹误的视图。 一旦修正了数据库的块讹误,就需要重新运行 BACKUP VALIDATE DATABASE 命令, 然后确认 V$DATABASE_BLOCK_CORRUPTION 中没有其他讹误。 RMAN 可以备份包含损坏数据块的数据文件,通过设置 set maxcorrupt 可以跳过指定

个数的坏块来避免备份失败。

RMAN> set maxcorrupt for datafile 1 to 0; 在 Oracle9i中可以用 RMAN来执行块级的恢复,而且恢复期间数据文件可以是联机状态。RMAN通过 Block Media Recovery(简称 BMR)来执行块级恢复操作。假设我们在查 询一个 Oracle 表的时候接收到下面的错误: ERROR 位于第 1 行:

ORA-01578: ORACLE 数据块损坏(文件号 5,块号 97) ORA-01110: 数据文件 5: 'E:\\xxxx.dbf'

那么我们就可以在 RMAN中用 BLOCKRECOVER 命令来修复:

RMAN> BLOCKRECOVER DATAFILE 5 BLOCK97; 启动 blockrecover 于 03-9月 -06 正在启动全部恢复目录的 resync 完成全部 resync 使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在从数据文件副本 E:\\xxxx.bak 恢复块

正在开始介质的恢复 完成介质的恢复

完成 blockrecover 于 03-9月 -06

恢复V$DATABASE_BLOCK_CORRUPTION 视图中列出的坏块:

RMAN> blockrecover corruption list [ restore until time 'sysdate - 10' ]; 恢复指定坏块:

RMAN> blockrecover datafile 2 block 12,13 datafile 9 block 19; RMAN> blockrecover tablespace system dba 44404,44405 from tag

\restore until time 'sysdate-2';

4.7.5 使用恢复目录恢复前一个对应物

在不完全恢复完成之后,通常需要使用 resetlogs 选项来打开数据库。resetlogs 表示 一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始。数据库的逻辑生存期 也被称为一个对应物(incarnation)。每次使用 resetlogs 选项来打开数据库后都会创建一个新的数据库对应物。 使用 RMAN可以进行穿越 resetlogs 的恢复,即可以恢复到前一个对应物。10g 版本 增强了这方面的功能。

(1) 使用恢复目录的情况使用恢复目录的情况下,恢复前一个对应物是非常简单的。 首先,用list incarnation;来显示有哪些对应物: RMAN> list incarnation;

数据库 Incarnations 列表

DB 关键字 Inc 关键

字 DB 名 DB ID CUR 重置 SCN 重置时间 1 2 MING 2600315304 NO 1 20-4 月 -06

1 854 MING 2600315304 NO 3407561 19-8 月 -06 1 4368 MING 2600315304 NO 3794049 29-8 月 -06 1 4437 MING 2600315304 NO 3794728 29-8 月 -06 1 4639 MING 2600315304 YES 3794935 29-8 月 -06

待续。。。。。

本文来源:https://www.bwwdw.com/article/ubtw.html

Top