li
  当前位置:主页 > 备份恢复 > 文章内容
li
恢复之不可恢复操作后的恢复(三)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:10  
本文章共2797字,分2页,当前第1页,快速翻页:
 

这篇文章主要探讨不可恢复操作是否对后面的操作有影响。


首先看一下不可恢复的操作后的DML在恢复过程中会怎样:

SQL> SELECT DEFAULT_TABLESPACE FROM USER_USERS;

DEFAULT_TABLESPACE
------------------------------
YANGTK

SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP;

表空间已更改。

SQL> HOST COPY F:ORACLEORADATATESTYANGTK01.DBF F:ORACLEBACKUPTEST20060326

SQL> ALTER TABLESPACE YANGTK END BACKUP;

表空间已更改。

SQL> CREATE TABLE TEST_UNRECOVER NOLOGGING AS SELECT * FROM DBA_TABLES;

表已创建。

SQL> CREATE INDEX IND_TEST_UNRECOVER_OWNER ON TEST_UNRECOVER (OWNER) LOGGING;

索引已创建。

SQL> UPDATE TEST_UNRECOVER SET OWNER = 'YANGTK';

已更新503行。

SQL> COMMIT;

提交完成。

SQL> ALTER TABLESPACE YANGTK OFFLINE IMMEDIATE;

表空间已更改。

SQL> HOST COPY F:ORACLEBACKUPTEST20060326* F:ORACLEORADATATEST

SQL> RECOVER TABLESPACE YANGTK;
完成介质恢复。
SQL> ALTER TABLESPACE YANGTK ONLINE;

表空间已更改。

SQL> SELECT COUNT(*) FROM TEST_UNRECOVER;
SELECT COUNT(*) FROM TEST_UNRECOVER
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号6,块号274)
ORA-01110: 数据文件 6: 'F:ORACLEORADATATESTYANGTK01.DBF'
ORA-26040: 数据块是使用 NOLOGGING 选项加载的


SQL> SELECT COUNT(*) FROM TEST_UNRECOVER WHERE OWNER = 'YANGTK';

COUNT(*)
----------
503

通过测试可以发现,ORACLE并没有简单的在恢复过程中忽略UPDATE操作,通过访问LOGGING的索引就可以发现,但是表上的UPDATE操作应该没有执行,整个表以及被标识为逻辑损坏了。

下面测试一下,执行了不可恢复操作的表在恢复中对其它表的影响:

SQL> DROP TABLE TEST_UNRECOVER;

表已丢弃。

www.ixdba.net


SQL> CREATE TABLE TEST_UNRECOVER NOLOGGING AS SELECT * FROM DBA_TABLES;

表已创建。

SQL> CREATE TABLE TEST_RECOVER1 AS SELECT * FROM TEST_UNRECOVER;

表已创建。

SQL> DELETE TEST_UNRECOVER WHERE ROWNUM < 500;

已删除499行。

SQL> CREATE TABLE TEST_RECOVER2 AS SELECT * FROM TEST_UNRECOVER;

表已创建。

SQL> ALTER TABLESPACE YANGTK OFFLINE IMMEDIATE;

表空间已更改。

SQL> HOST COPY F:ORACLEBACKUPTEST20060326* F:ORACLEORADATATEST

SQL> RECOVER TABLESPACE YANGTK;
完成介质恢复。
SQL> ALTER TABLESPACE YANGTK ONLINE;

表空间已更改。

SQL> SELECT COUNT(*) FROM TEST_UNRECOVER;
SELECT COUNT(*) FROM TEST_UNRECOVER
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号6,块号274)
ORA-01110: 数据文件 6: 'F:ORACLEORADATATESTYANGTK01.DBF'
ORA-26040: 数据块是使用 NOLOGGING 选项加载的


SQL> SELECT COUNT(*) FROM TEST_RECOVER1;

COUNT(*)
----------
503

SQL> SELECT COUNT(*) FROM TEST_RECOVER2;

COUNT(*)
----------
4

虽然TEST_UNRECOVER表被标识成逻辑损坏,且随后的DELETE操作也没有执行。但是由于Oracle记录日志的方式并不依赖于源数据库表,因此,虽然两位的两张表都是从这张表插入数据,但都可以正常的恢复。

最后看一下对完整性约束是否存在影响:

SQL> DROP TABLE TEST_UNRECOVER;

表已丢弃。

SQL> DROP TABLE TEST_RECOVER1;

表已丢弃。

SQL> DROP TABLE TEST_RECOVER2;

表已丢弃。

SQL> CREATE TABLE TEST_UNRECOVER NOLOGGING AS SELECT ROWNUM ID, A.* FROM DBA_TABLES A;

表已创建。

SQL> CREATE INDEX IND_TEST_UNRECOVER_ID ON TEST_UNRECOVER(ID) NOLOGGING;

索引已创建。

SQL> ALTER TABLE TEST_UNRECOVER ADD PRIMARY KEY (ID) USING INDEX IND_TEST_UNRECOVER_ID;

表已更改。

SQL> CREATE TABLE TEST_RECOVER1 (ID NUMBER, FID NUMBER, OWNER VARCHAR2(30),



阅读更多内容1 · 2 · 下一页>>


  上一篇: 恢复之使用非当前控制文件恢复只...   下一篇: 恢复之不可恢复操作后的恢复(一...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·恢复之使用非当前控制文件恢复只...
·恢复过程中的ORA-1113错误
·恢复之使用非当前控制文件恢复只...
·恢复之缺失归档日志文件
·恢复之归档日志文件破损(一)
·恢复过程中的ORA-1113错误(二)
·恢复之归档日志文件破损(二)
·一次意外导致的ORA-600[3004]错误...
·恢复之归档日志文件破损(三)
·RMAN备份过程中调整系统时间的BU...
·恢复之不可恢复操作后的恢复(一...
·恢复之恢复操作的中断
·恢复之使用非当前控制文件恢复只...
·恢复之利用RESETLOGS之前的备份进...
·恢复之利用RESETLOGS之前的备份进...
·恢复之不可恢复操作后的恢复(二...
·恢复之利用RESETLOGS之前的备份进...
·恢复之利用RESETLOGS之前的备份进...
·恢复之数据字典和控制文件不一致...
·恢复之非归档模式恢复到其他位置
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接