丢失重做日志文件
        丢失了重做日志文件组中的某个成员,并且组中至少还有一个成员:
            -不会影响实例的正常操作。
            -预警日志中会收到一条信息,通知您无法找到某个成员
            -可以通过删除丢失的重做日志成员并添加新成员来恢复丢失的日志文件
            -如果包含丢失日志文件的组已归档,您可以清除日志组来重新创建丢失的文件
 
恢复步骤:
       1.确定是否有缺失的日志文件
        2.恢复丢失的文件时,先删除丢失的重做日志成员
            ALTER DATABASE DROP LOGFILE MEMBER '+DATA/orcl/onlinelog/group_1.261.691672257';
        3.然后添加新成员来替代丢失的日志成员
            ALTER DATABASE ADD LOGFILE MEMBER '+DATA' TO GROUP 2;
        4.如果介质故障是由于磁盘或控制器缺失而造成的,需重命名丢失文件。
        5.如果重做日志组已归档,或者处于NOARCHIVELOG模式下,则可选择在清除日志组后重新创建缺失来解决问题,
            ALTER DATABASE CLEAR LOGFILE GROUP n;
        注意:清除未归档的日志组,应立即对整个数据库执行完全备份,否则,在发生其它故障的情况下,会导致数据丢失。
            ALTER DATABASE CLEAR UNARCHIVED  LOGFILE GROUP #;
 
 
 
测试环境中先新增3组,每组2个成员

  1. alter database add logfile group 4 ('/u01/app/oracle/oradata/xiocpt0/p_redo04_01.log','/u01/app/oracle/oradata/xiocpt0/p_redo04_02.log') size 128M;
  2. alter database add logfile group 5 ('/u01/app/oracle/oradata/xiocpt0/p_redo05_01.log','/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log') size 128M;
  3. alter database add logfile group 6 ('/u01/app/oracle/oradata/xiocpt0/p_redo06_01.log','/u01/app/oracle/oradata/xiocpt0/p_redo06_02.log') size 128M;
 
 
 
set pagesize 600
 
select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
 
col member format a50
 
select group#,status,member from v$logfile;
 

  1. SQL> set pagesize 600
  2.  
  3. select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;--查看重做日志成员状态信息
  4.  
  5. col member format a50
  6.  
  7. SQL> SQL>
  8. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  9. ---------- ---------- ----------------- ---------- --- ----------------
  10. 1 4 50 1 YES INACTIVE
  11. 2 5 50 1 NO CURRENT
  12. 3 3 50 1 YES INACTIVE
  13. 4 0 128 2 YES UNUSED
  14. 5 0 128 2 YES UNUSED
  15. 6 0 128 2 YES UNUSED
  16.  
  17. 6 rows selected.
  18.  
  19. SQL> select group#,status,member from v$logfile;--查看重做日志成员,物理路径,这里存储方式为文件系统
  20.  
  21. GROUP# STATUS MEMBER
  22. ---------- ------- --------------------------------------------------
  23. 1 STALE /u01/app/oracle/oradata/xiocpt0/redo01.log
  24. 3 STALE /u01/app/oracle/oradata/xiocpt0/redo03.log
  25. 2 /u01/app/oracle/oradata/xiocpt0/redo02.log
  26. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_01.log
  27. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_02.log
  28. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_01.log
  29. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  30. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_01.log
  31. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_02.log
  32.  
  33. 9 rows selected.
  34.  
  35. 手动删除group 1的物理文件
  36.  
  37. SQL> !rm /u01/app/oracle/oradata/xiocpt0/redo01.log
  38.  
  39. group 1的状态以归档,INACTIVE
  40.  
  41. SQL> select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
  42.  
  43. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  44. ---------- ---------- ----------------- ---------- --- ----------------
  45. 1 4 50 1 YES INACTIVE
  46. 2 5 50 1 NO CURRENT
  47. 3 3 50 1 YES INACTIVE
  48. 4 0 128 2 YES UNUSED
  49. 5 0 128 2 YES UNUSED
  50. 6 0 128 2 YES UNUSED
  51.  
  52. 6 rows selected.
  53.  
  54. 验证物理文件已被删除
  55.  
  56. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo01.log
  57. ls: cannot access /u01/app/oracle/oradata/xiocpt0/redo01.log: No such file or directory
  58.  
  59. 针对已归档的重做日志文件组,可以使用clear命令进行恢复
  60.  
  61. alter database clear logfile group 1;
  62.  
  63. SQL> alter database clear logfile group 1;
  64.  
  65. Database altered.
  66.  
  67. 验证物理文件已恢复完成
  68.  
  69. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo01.log
  70. -rw-r----- 1 oracle dba 52429312 May 22 13:42 /u01/app/oracle/oradata/xiocpt0/redo01.log
 
 
 
 
切换重做日志文件
 
alter system switch logfile;
alter system checkpoint;
 
 
测试删除重做日志文件组中单个成员
 
  1. SQL> select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
  2.  
  3. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  4. ---------- ---------- ----------------- ---------- --- ----------------
  5. 1 6 50 1 YES INACTIVE
  6. 2 5 50 1 YES INACTIVE
  7. 3 3 50 1 YES INACTIVE
  8. 4 7 128 2 YES INACTIVE
  9. 5 8 128 2 YES INACTIVE
  10. 6 9 128 2 NO CURRENT
  11.  
  12. 删除group 5中的 02成员
  13.  
  14. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  15. -rw-r----- 1 oracle dba 134218240 May 22 13:42 /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  16.  
  17. SQL> !rm /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  18.  
  19. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  20. ls: cannot access /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log: No such file or directory
  21.  
  22. SQL> alter system switch logfile;
  23.  
  24. System altered.
  25. SQL> /
  26. SQL> /
  27. SQL> /
  28. SQL> /
  29.  
  30. SQL> alter system checkpoint;
  31.  
  32. System altered.
  33.  
  34. oracle预警日志文件中提示/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log以不存在,因为重做日志group 52个成员,数据依旧正常。
  35.  
  36. Errors in file /u01/app/oracle/diag/rdbms/xiocpt0/xiocpt0/trace/xiocpt0_arc0_1460.trc:
  37. ORA-00313: open failed for members of log group 5 of thread 1
  38. ORA-00312: online log 5 thread 1: '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log'
  39. ORA-27037: unable to obtain file status
  40. Linux-x86_64 Error: 2: No such file or directory
  41. Additional information: 3
  42. Errors in file /u01/app/oracle/diag/rdbms/xiocpt0/xiocpt0/trace/xiocpt0_arc0_1460.trc:
  43. ORA-00313: open failed for members of log group 5 of thread 1
  44. ORA-00312: online log 5 thread 1: '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log'
  45. ORA-27037: unable to obtain file status
  46. Linux-x86_64 Error: 2: No such file or directory
  47.  
  48. group有多个成员的,单成员进行修复
  49.  
  50. alter database drop logfile member '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log';
  51.  
  52. alter database add logfile member '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log' to group 5;
  53.  
  54. 先将丢失的成员从group中进行删除
  55. SQL> alter database drop logfile member '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log';
  56.  
  57. Database altered.
  58.  
  59. SQL> select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
  60.  
  61. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  62. ---------- ---------- ----------------- ---------- --- ----------------
  63. 1 12 50 1 YES INACTIVE
  64. 2 11 50 1 YES INACTIVE
  65. 3 16 50 1 NO CURRENT
  66. 4 13 128 2 YES INACTIVE
  67. 5 14 128 1 YES INACTIVE
  68. 6 15 128 2 YES INACTIVE
  69.  
  70. 6 rows selected.
  71.  
  72. 再新增成员
  73. SQL> alter database add logfile member '/u01/app/oracle/oradata/xiocpt0/p_redo05_02.log' to group 5;
  74.  
  75. Database altered.
  76.  
  77. SQL> select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
  78.  
  79. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  80. ---------- ---------- ----------------- ---------- --- ----------------
  81. 1 12 50 1 YES INACTIVE
  82. 2 11 50 1 YES INACTIVE
  83. 3 16 50 1 NO CURRENT
  84. 4 13 128 2 YES INACTIVE
  85. 5 14 128 2 YES INACTIVE
  86. 6 15 128 2 YES INACTIVE
  87.  
  88. 6 rows selected.
  89.  
  90. 也可以对整个group 进行clear,但需注意此group 必须已归档
  91.  
  92. SQL> !rm /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  93.  
  94. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  95. ls: cannot access /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log: No such file or directory
  96.  
  97. SQL> alter database clear logfile group 5;
  98.  
  99. Database altered.
  100.  
  101. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  102. -rw-r----- 1 oracle dba 134218240 May 22 13:51 /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
 
 
丢失当前重做日志文件
        alter database clear unarchived logfile group  #;
 
  1. SQL> select group#,sequence#,bytes/(1024*1024),members,archived,status from v$log;
  2.  
  3. GROUP# SEQUENCE# BYTES/(1024*1024) MEMBERS ARC STATUS
  4. ---------- ---------- ----------------- ---------- --- ----------------
  5. 1 12 50 1 YES INACTIVE
  6. 2 11 50 1 YES INACTIVE
  7. 3 16 50 1 NO CURRENT
  8. 4 13 128 2 YES INACTIVE
  9. 5 0 128 2 YES UNUSED
  10. 6 15 128 2 YES INACTIVE
  11.  
  12. 6 rows selected.
  13.  
  14. SQL>
  15. SQL> select group#,status,member from v$logfile;
  16.  
  17. GROUP# STATUS MEMBER
  18. ---------- ------- --------------------------------------------------
  19. 1 /u01/app/oracle/oradata/xiocpt0/redo01.log
  20. 3 /u01/app/oracle/oradata/xiocpt0/redo03.log
  21. 2 /u01/app/oracle/oradata/xiocpt0/redo02.log
  22. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_01.log
  23. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_02.log
  24. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_01.log
  25. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  26. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_01.log
  27. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_02.log
  28.  
  29. 9 rows selected.
  30.  
  31. SQL> !rm -rf /u01/app/oracle/oradata/xiocpt0/redo03.log
  32.  
  33. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo03.log
  34. ls: cannot access /u01/app/oracle/oradata/xiocpt0/redo03.log: No such file or directory
  35.  
  36. SQL> alter system switch logfile;
  37.  
  38. System altered.
  39.  
  40. SQL> alter system checkpoint;
  41.  
  42. System altered.
  43.  
  44. SQL> alter database clear unarchived logfile group 3;
  45.  
  46. Database altered.
  47.  
  48. SQL> select group#,status,member from v$logfile;
  49.  
  50. GROUP# STATUS MEMBER
  51. ---------- ------- --------------------------------------------------
  52. 1 /u01/app/oracle/oradata/xiocpt0/redo01.log
  53. 3 /u01/app/oracle/oradata/xiocpt0/redo03.log
  54. 2 /u01/app/oracle/oradata/xiocpt0/redo02.log
  55. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_01.log
  56. 4 /u01/app/oracle/oradata/xiocpt0/p_redo04_02.log
  57. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_01.log
  58. 5 /u01/app/oracle/oradata/xiocpt0/p_redo05_02.log
  59. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_01.log
  60. 6 /u01/app/oracle/oradata/xiocpt0/p_redo06_02.log
  61.  
  62. 9 rows selected.
  63.  
  64. SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo03.log
  65. -rw-r----- 1 oracle dba 52429312 May 22 13:52 /u01/app/oracle/oradata/xiocpt0/redo03.log
 

(Les16 执行数据库恢复)-重做日志文件恢复的更多相关文章

  1. oracle重做日志文件硬盘坏掉解决方法

    rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...

  2. 初识oracle重做日志文件

    转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...

  3. 利用日志文件恢复MYSQL数据库

    利用日志文件恢复MYSQL数据库 650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic ...

  4. RMAN数据库恢复之恢复归档日志文件

    恢复归档日志文件如果只是为了在恢复数据文件之后应用归档文件,那并不需要手动对归档文件进行恢复,RMAN会在RECOVER时自动对适当的归档进行恢复.单独恢复归档文件一般是有特别的需求,如创建了Data ...

  5. Oracle重做日志文件

    一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理  11 ...

  6. Oracle 联机重做日志文件(ONLINE LOG FILE)

    --========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...

  7. Oracle数据库体系结构(6)数据库归档重做日志文件管理

    归档重做日志文件的概念和选择 Oracle数据库能够把已经写满了的重做日志文件保存到一个或多个指定的离线位置,这种保存的文件为归档重做日志文件.通常情况下一个归档重做日志时一个被LGWR写满的重做日志 ...

  8. ORACLE 移动数据文件 控制文件 重做日志文件

    ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

  9. ORACLE - 管理重做日志文件

    ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...

随机推荐

  1. Spring与Web整合

    一 概述 1.整合目的 将所有对象的创建与管理任务交给Spring容器,降低程序的耦合度. 2.整合途径 将Spring容器注入到Web容器中. 3.具体实现 使用ServletContextList ...

  2. css3在页面中插入内容

    A. 使用选择器来插入内容 h2:before{ content:"前缀"; } h2:after{ content:"后缀"; } B. 指定个别的元素不进行 ...

  3. 《Linux命令行与Shell脚本编程大全第2版》读书笔记

    公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...

  4. 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)

    下面的代码我调试了将近一个星期,你能够看出什么地方出了问题吗?线程函数: DWORD WINAPI ThreadProc(    while(!bTerminate)    {        // 从 ...

  5. Phoenix 映射 HBase + Maven

    声明 本文基于 Centos6.x + CDH5.x 什么是Phoenix Phoenix的团队用了一句话概括Phoenix:"We put the SQL back in NoSQL&qu ...

  6. C++11 之for 新解 auto

    C++11 之for 新解 auto  前言    C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是 ...

  7. ArcGIS中的坐标系统定义与投影转换

    坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统的GIS数据是不完善的,因此在ArcGI ...

  8. POP动画[2]

    POP动画[2] 1:定制控制器间的转场动画. 源码有点多-_-!! // // RootViewController.h // Animation // // Copyright (c) 2014年 ...

  9. Vscode rg.exe cpu 占用过高

    文件-> 首选项 -> 设置 -> 搜索search.followSymlinks 或者 修改settings.json 添加 "search.followSymlinks ...

  10. PreApplicationStartMethod特性说明

    PreApplicationStartMethod主要用于为程序集指定一个方法,在程序集加载时进行一些自定义的初始化处理. 使用方式如下所示,首先在程序集中定义一个公共类型和一个公共静态的方法 然后我 ...