iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle redo文件损坏怎么恢复
  • 908
分享到

Oracle redo文件损坏怎么恢复

2024-04-02 19:04:59 908人浏览 薄情痞子
摘要

这篇“oracle redo文件损坏怎么恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“

这篇“oracle redo文件损坏怎么恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Oracle redo文件损坏怎么恢复”文章吧。

redo文件损坏涉及到多种多样场景,具体场景可以分四大部分:
1、按照redo的状态可以分为current、active和inactive;
2、按照数据库归档模式可以分为归档和非归档;
3、按照脏块有没写入数据文件可以分为有和无;
4、按照损坏时数据库的状态可以分为在线和关闭;

现在主要通过两部分来介绍redo文件恢复相关的内容:
1、按照redo状态维度来介绍各种场景的恢复方法;
2、模拟几种恢复方法的操作;

一、按照redo状态维度来介绍各种场景的恢复方法。
1.1、current redo文件恢复介绍:
Oracle redo文件损坏怎么恢复

1.2、active redo文件恢复介绍:
Oracle redo文件损坏怎么恢复

1.3、inactive redo文件恢复介绍:
Oracle redo文件损坏怎么恢复


二、模拟几种恢复方法的操作;
下面主要选取 “current的redo文件在归档模式下采用不正常关闭数据库时还有脏块没有写入数据文件时的损坏” 和 “current的redo文件在非归档模式下数据库在线时还有脏块没有写入数据文件时的损坏” 这两个场景来模拟和恢复,其他场景的恢复请参考上面的恢复操作。

2.1、current的redo文件在归档模式下采用不正常关闭数据库时还有脏块没有写入数据文件时的损坏模拟恢复:

1、数据库基本信息和redo情况
sql> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      leonliao
SQL> arcHive log list 
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/oradata/leonliao/arch
Oldest online log sequence     7
Next log sequence to archive   9
Current log sequence           9
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          9   52428800        512          1 NO  CURRENT                1250771 07-MAR-16   2.8147E+14
         2          1          8   52428800        512          1 YES INACTIVE               1250768 07-MAR-16      1250771 07-MAR-16
         3          1          7   52428800        512          1 YES INACTIVE               1250765 07-MAR-16      1250768 07-MAR-16


SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                                        IS_
---------- ------- ------- --------------------------------------------- ---
         3         ONLINE  /home/oracle/oradata/leonliao/redo03.log      NO
         2         ONLINE  /home/oracle/oradata/leonliao/redo02.log      NO
         1         ONLINE  /home/oracle/oradata/leonliao/redo01.log      NO
 
2、在t_redo表插入一条记录2,并shutdown abort关闭数据库
SQL> select * from t_redo;
        ID
----------
         1


SQL> insert into t_redo values(2);
1 row created.


SQL> commit;
Commit complete.


SQL> shutdown abort
ORACLE instance shut down.


3、删掉current 的redo文件
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
[oracle@leon1 leonliao]$ rm -rf redo01.log 


4、启动数据库到mount状态并尝试打开数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area  626327552 bytes
Fixed Size                  2230952 bytes
Variable Size             184550744 bytes
Database Buffers          432013312 bytes
Redo Buffers                7532544 bytes
Database mounted.


SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/home/oracle/oradata/leonliao/redo01.log'
ORA-27037: unable to obtain file status
linux-x86_64 Error: 2: No such file or directory
Additional infORMation: 3


SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance leonliao (thread 1)
ORA-00312: online log 1 thread 1: '/home/oracle/oradata/leonliao/redo01.log'


SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance leonliao (thread 1)
ORA-00312: online log 1 thread 1: '/home/oracle/oradata/leonliao/redo01.log'


SQL> recover database until cancel;
ORA-00279: change 1250771 generated at 03/07/2016 07:35:44 needed for thread 1
ORA-00289: suggestion : /home/oracle/oradata/leonliao/arch/1_9_905840705.dbf
ORA-00280: change 1250771 for thread 1 is in sequence #9


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/home/oracle/oradata/leonliao/arch/1_9_905840705.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3


ORA-00308: cannot open archived log '/home/oracle/oradata/leonliao/arch/1_9_905840705.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3


ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oradata/leonliao/system01.dbf'


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/oradata/leonliao/system01.dbf'



5、设置隐含参数_allow_resetlogs_corruption为true
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
System altered.


SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.


SQL> startup mount
ORACLE instance started.
Total System Global Area  626327552 bytes
Fixed Size                  2230952 bytes
Variable Size             184550744 bytes
Database Buffers          432013312 bytes
Redo Buffers                7532544 bytes
Database mounted.


SQL> alter database open resetlogs;
Database altered.


6、验证数据是否丢失,数据为2的记录已经丢失
SQL> select * from t_redo;
        ID
----------
         1




2.2、current的redo文件在非归档模式下数据库在线时还有脏块没有写入数据文件时的损坏模拟恢复:

1、数据库基本信息和redo情况
SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      leonliao


SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /home/oracle/oradata/leonliao/arch
Oldest online log sequence     2
Current log sequence           4


SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          4   52428800        512          1 NO  CURRENT                1250086 07-MAR-16   2.8147E+14
         2          1          2   52428800        512          1 NO  INACTIVE               1250080 07-MAR-16      1250083 07-MAR-16
         3          1          3   52428800        512          1 NO  INACTIVE               1250083 07-MAR-16      1250086 07-MAR-16
  
SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                                        IS_
---------- ------- ------- --------------------------------------------- ---
         3         ONLINE  /home/oracle/oradata/leonliao/redo03.log      NO
         2         ONLINE  /home/oracle/oradata/leonliao/redo02.log      NO
         1         ONLINE  /home/oracle/oradata/leonliao/redo01.log      NO
         
2、创建t_redo表并插入一条数据
SQL> create table t_redo (id number);
Table created.         


SQL> insert into t_redo values(1);
1 row created.


SQL> commit;
Commit complete.


SQL>  select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          4   52428800        512          1 NO  CURRENT                1250086 07-MAR-16   2.8147E+14
         2          1          2   52428800        512          1 NO  INACTIVE               1250080 07-MAR-16      1250083 07-MAR-16
         3          1          3   52428800        512          1 NO  INACTIVE               1250083 07-MAR-16      1250086 07-MAR-16
         
3、删除current的redo01.log文件         
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
[oracle@leon1 leonliao]$ rm -rf redo01.log          


4、尝试直接通过不归档等方式初始化redo01.log文件,无法初始化current的redo文件
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance leonliao (thread 1)
ORA-00312: online log 1 thread 1: '/home/oracle/oradata/leonliao/redo01.log'


SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance leonliao (thread 1)
ORA-00312: online log 1 thread 1: '/home/oracle/oradata/leonliao/redo01.log'


5、通过将current状态切换到active状态,并初始化redo01.log文件
SQL> alter system switch logfile;
System altered.


SQL>  alter database clear logfile group 1;
Database altered.


SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          0   52428800        512          1 NO  UNUSED                 1250086 07-MAR-16      1250147 07-MAR-16
         2          1          5   52428800        512          1 NO  CURRENT                1250147 07-MAR-16   2.8147E+14
         3          1          3   52428800        512          1 NO  INACTIVE               1250083 07-MAR-16      1250086 07-MAR-16


6、验证数据是否丢失,数据没有丢失
SQL> select * from t_redo;
        ID
----------
         1

以上就是关于“Oracle redo文件损坏怎么恢复”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle redo文件损坏怎么恢复

本文链接: https://www.lsjlt.com/news/71811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle redo文件损坏怎么恢复
    这篇“Oracle redo文件损坏怎么恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • 又一次REDO损坏恢复
    现象描述上午:9:52在切换归档时掉电:   Thread 1 advanced to log sequence 14574 (LGWR switch)  Current log# 3 seq#   145...
    99+
    2024-04-02
  • 怎么恢复PostgreSQL数据文件损坏
    本篇内容介绍了“怎么恢复PostgreSQL数据文件损坏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在数...
    99+
    2024-04-02
  • 怎么恢复xp系统损坏的文件
    这篇文章主要讲解了“怎么恢复xp系统损坏的文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复xp系统损坏的文件”吧!具体方法: 在Windows XP的安装盘中搜索被破坏的文件,需要...
    99+
    2023-06-14
  • redo文件损坏的示例分析
    这篇文章将为大家详细讲解有关redo文件损坏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一种情况:    asm存储方式,在数据库ope...
    99+
    2024-04-02
  • 怎么恢复SQL Server 2000损坏的数据库文件
    这篇文章主要讲解了“怎么恢复SQL Server 2000损坏的数据库文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复SQL Server 200...
    99+
    2024-04-02
  • win7文件损坏怎么修复
    这篇文章主要介绍“win7文件损坏怎么修复”,在日常操作中,相信很多人在win7文件损坏怎么修复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7文件损坏怎么修复”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-28
  • oracle控制文件损坏如何修复
    如果 Oracle 控制文件损坏,可以尝试以下方法修复: 使用备份控制文件:如果有最近的备份控制文件,可以将备份控制文件恢复到原...
    99+
    2024-04-20
    oracle
  • xp系统文件损坏快速恢复小技巧
    具体方法: 在Windows XP的安装盘中搜索被破坏的文件,需要注意的是,文件名的最后一个字符用底线“_”代替,例如:如果要搜索“Notepad.exe”则需要用&ldq...
    99+
    2023-06-02
    xp系统 修复损坏文件 技巧 系统文件 xp
  • mysql中ibd文件损坏怎么修复
    在MySQL中,当ibd文件损坏时,你可以尝试以下方法来修复它: 通过使用MySQL自带的工具检查和修复表:可以使用MySQL自带...
    99+
    2024-03-14
    mysql
  • tenslx.dll文件损坏怎么办
    要解决tenslx.dll文件损坏的问题,可以尝试以下几种方法:1. 重新启动电脑:有时候,重新启动电脑可以解决一些临时的系统故障,...
    99+
    2023-09-05
    损坏
  • win10中怎么修复系统损坏文件
    小编给大家分享一下win10中怎么修复系统损坏文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体步骤:首先,在搜索框中输入CMD,右键选择命令提示符。选择以管...
    99+
    2023-06-27
  • oracle数据库损坏的恢复过程是什么
    这篇文章主要介绍“oracle数据库损坏的恢复过程是什么”,在日常操作中,相信很多人在oracle数据库损坏的恢复过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”or...
    99+
    2024-04-02
  • 怎么恢复Oracle RAC for aix存储双控锁盘导致ASM控制文件损坏
    这篇文章主要介绍“怎么恢复Oracle RAC for aix存储双控锁盘导致ASM控制文件损坏”,在日常操作中,相信很多人在怎么恢复Oracle RAC for aix存储双控锁盘导致ASM控制文件损坏问...
    99+
    2024-04-02
  • excel文件损坏如何修复
    若Excel文件损坏,可以尝试以下几种方法修复:1. 使用Excel自带的修复功能:打开Excel软件,点击“文件”选项卡,在下拉菜...
    99+
    2023-09-15
    excel
  • Word文件损坏如何修复
    要修复损坏的Word文件,可以尝试以下几种方法: 使用Microsoft Office内置的修复工具: 打开Word程序,点击...
    99+
    2023-10-21
    Word
  • Oracle数据库UNDO损坏后的恢复是怎样的
    这期内容当中小编将会给大家带来有关Oracle数据库UNDO损坏后的恢复是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    UND...
    99+
    2024-04-02
  • Oracle数据块损坏之10231内部事件不完全恢复
    什么是块损坏: 所谓损坏的数据块,是指块没有采用可识别的 Oracle 格式,或者其内容在内部不一致。通常情况下,损坏是由硬件故障或操作系统问题引起的。Oracle 数据库将损坏的块标识为“逻辑损坏”或“介...
    99+
    2024-04-02
  • Linux系统下grub.cfg文件损坏怎么修复
    本篇内容介绍了“Linux系统下grub.cfg文件损坏怎么修复”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、grub.cfg文件介绍1...
    99+
    2023-06-21
  • bin文件损坏windows如何修复
    本文小编为大家详细介绍“bin文件损坏windows如何修复”,内容详细,步骤清晰,细节处理妥当,希望这篇“bin文件损坏windows如何修复”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。bin文件损坏修复方法...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作