当前位置:  数据库>oracle

使用append+nologging引起恢复故障实验

    来源: 互联网  发布时间:2017-06-04

    本文导语: Oracle的nologging属性是非常容易被滥用的。在我们之前的文章中,探讨过append+nologging对于Redo Log的影响。从文章的结论看:如果我们使用append配合nologging,的确是可以减少Redo Log的生成的。 但是,这样做真的有好处吗? 希望减少R...

Oracle的nologging属性是非常容易被滥用的。在我们之前的文章中,探讨过append+nologging对于Redo Log的影响。从文章的结论看:如果我们使用append配合nologging,的确是可以减少Redo Log的生成的。
 
但是,这样做真的有好处吗?

希望减少Redo Log生成的思路无非是:Redo Log生成量少了,这样在LGWR写入的量就少了,从而带来的物理IO和日志切换动作就少了。但是,随着带来的问题是:日志少了真的没有问题吗?
 
Oracle Redo Log是数据库的重要对象,原始提出Redo Log的目的在于“日志在先,数据恢复”。从宏观上看,Redo Log是保证数据库事务一致性的手段。但更重要的是,Redo Log是数据库内部一致性、数据库完全恢复和高可用性组件(DG、OGG)的重要技术基础。
 
Redo Log是描述数据块变化的记录信息,其中包括逻辑变化和物理变化。本篇就通过实验来确定Append+Nologging给备份还原带来的问题。

--------------------------------------分割线 --------------------------------------

相关阅读:

关于Redo Log的修改与重建

MySQL 5.6更人性化修改Redo Log事务日志文件大小

ORA-00314,RedoLog 损坏,或丢失处理方法

Oracle数据库级drop RedoLog并不危险

Oracle 联机重做日志文件(online Redo Log file) 详述

--------------------------------------分割线 --------------------------------------

1、环境准备和备份

 

我们选择Oracle 11gR2进行测试。为了保证一致性,我们首先进行一次热备份动作。

 

RMAN> backup database plus archivelog delete all input;

 

Starting backup at 10-DEC-13

current log archived

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=38 device type=DISK

(篇幅原因,有省略……)

 

Starting Control File and SPFILE Autobackup at 10-DEC-13

piece handle=/u01/flash_recovery_area/WILSON/autobackup/2013_12_10/o1_mf_s_833787521_9bdo43ol_.bkp comment=NONE
 
Finished Control File and SPFILE Autobackup at 10-DEC-13

 

此时,配合归档模式,我们是可以实现完全恢复的。

 

RMAN> list backup;

 

List of Backup Sets

===================

 

BS Key  Type LV Size      Device Type Elapsed Time Completion Time

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

130    Full    1.31G      DISK        00:01:55    10-DEC-13     

        BP Key: 130  Status: AVAILABLE  Compressed: NO  Tag: TAG20131210T073642
 
        Piece Name: /u01/flash_recovery_area/WILSON/backupset/2013_12_10/o1_mf_nnndf_TAG20131210T073642_9bdo0djj_.bkp
 
  List of Datafiles in backup set 130

(篇幅原因,有省略……)

  SPFILE Included: Modification time: 10-DEC-13

  SPFILE db_unique_name: WILSON

  Control File Included: Ckp SCN: 5260073      Ckp time: 10-DEC-13

 

 

2、一次append+nologging动作

 

我们创建一张数据表T,将其nologging属性设置为Y。

 

SQL> create table t as select * from dba_objects where 1=0;

Table created

 

SQL> alter table t nologging;

Table altered

 

使用insert append插入数据。

 

SQL> insert /*+append*/ into t select * from dba_objects;

72768 rows inserted

 

SQL> commit;

Commit complete

 

 

3、启动恢复过程

 

如果此时发生系统故障,数据丢失,需要进行数据恢复动作。试图使用RMAN来进行完全恢复。

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area  849530880 bytes

Fixed Size                  1339824 bytes

Variable Size            511708752 bytes

Database Buffers          331350016 bytes

Redo Buffers                5132288 bytes

Database mounted.

 

启用RMAN恢复过程。

 

--Restore过程

RMAN> restore database;

 

Starting restore at 10-DEC-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=18 device type=DISK

 

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00001 to

(篇幅原因,有省略……)

channel ORA_DISK_1: piece handle=/u01/flash_recovery_area/WILSON/backupset/2013_12_10/o1_mf_nnndf_TAG20131210T073642_9bdo0djj_.bkp tag=TAG20131210T073642
 
channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:07:05

Finished restore at 10-DEC-13

 

--Recover应用Redo Log

RMAN> recover database;

 

Starting recover at 10-DEC-13

using channel ORA_DISK_1

 

starting media recovery

media recovery complete, elapsed time: 00:00:12

 

Finished recover at 10-DEC-13

 

RMAN>

 

恢复过程没有明显的错误标志,恢复似乎是成功了。之后打开数据库。

 

RMAN> alter database open;

database opened

更多详情见请继续阅读下一页的精彩内容:


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux中使用信号进行定时编程会不会引起打断不应该被打断的程序造成错误?
  • 在线程里面使用sleep函数是否会引起整个的进程都睡眠
  • 请问RST在什么情况下发送?? 使用TCP socket编程的话是否会引起这种TCP包的发送?
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • linux iis7站长之家
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,