WEB开发网
开发学院数据库Oracle RMAN备份恢复之归档日志对BLOCKRECOVER的影响 阅读

RMAN备份恢复之归档日志对BLOCKRECOVER的影响

 2007-06-19 12:33:18 来源:WEB开发网   
核心提示: SQL> SELECT SEQUENCE# FROM V$LOG;SEQUENCE#--328329327首先建立一张测试表,在这个表中,RMAN备份恢复之归档日志对BLOCKRECOVER的影响(3),ID在940和1006之间的记录存储在DATAFILE 5 BLOCK 27中,
SQL> SELECT SEQUENCE# FROM V$LOG;
SEQUENCE#
----------
328
329
327

首先建立一张测试表,在这个表中,ID在940和1006之间的记录存储在DATAFILE 5 BLOCK 27中。在归档322中记录了TEST表的ID等于1000的记录的更新,这个更新发生在DATAFILE 5 BLOCK 27上。随后在归档323中,删除了ID等于1的记录,这条记录与BLOCK 27无关。在归档324中,更新了ID等于10000的记录,这个修改与BLOCK 27也无关。在归档325中,新建TEST2表,并插入数据。归档326就是一个空文件。

因此,除了归档322外,从323到325都与BLOCK 27的修改无关。根据Oracle的文档,这些归档的缺失将不会影响BLOCK 27的恢复。

为了验证文档的说法,下面将归档322到326修改名称,使得Oracle在恢复时无法找到归档日志。

最后执行的几次ALTER SYSTEM SWITCH LOGFILE操作,是确保SEQUENCE为326的联机重做日志已经被重用,避免Oracle利用联机重做日志来代替归档日志。

准备工作完毕,下面开始模拟坏块。仍然是通过UtralEdit对数据文件进行修改,先是定位数据块的偏移地址:

SQL> SHOW PARAMETER BLOCK_SIZE
NAME TYPE VALUE
------------------------------------ ----------- --------------------------
db_block_size integer 8192
SQL> SELECT TO_CHAR(8192 * 27, 'XXXXX') FROM DUAL;
TO_CHA
------
36000

下面对地址36000后面的数据进行修改,并保存。

执行SQL语句,可以看到下面的错误:

SQL> SELECT COUNT(*) FROM TEST;

SELECT COUNT(*) FROM TEST

*

ERROR 位于第 1 行:

上一页  1 2 3 4 5 6  下一页

Tags:RMAN 备份 恢复

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接