探索ORACLE之RMAN_07 重做日志redu文件丢失恢复

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 探索ORACLE之RMAN_07 重做日志redu文件丢失恢复 作者:吴伟龙Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com                   重做日志文件记录了数据库的变更数据。

探索ORACLERMAN_07 重做日志redu文件丢失恢复

作者:吴伟龙NameProdence Woo

QQ286507175  msn:hapy-wuweilong@hotmail.com       

 

 

       重做日志文件记录了数据库的变更数据。一般重做日志文件的失败不会使数据库数据丢失,但是会影响数据库的恢复。重做日志分为两种状态当前联机重做日志和非当前的联机重做日志

4.1 非当前redo(联机重做日志)文件丢失恢复

 

数据库运行的时候,日志中报如下错误:

ORA-00313: openfailed for members of log group 1 of thread 1

ORA-00312: onlinelog 1 thread 1: '/DBData/WWL/redo01.log'

 

查看日志组,判断损坏的日志组是否为当前日志组

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         32  31457280          1 YES INACTIVE               1063037 04-JUL-12

         3          1         34  31457280          1 NO  CURRENT                1118555 05-JUL-12

         2          1        33   31457280          1 YES INACTIVE               1086278 05-JUL-12

 

     我们可以看到损坏的那组日志不是当前的日志,这个时候我么可以通过使用clear命令来重建该日志文件组。

 

通过重建来恢复非当前日志组,实现数据库的打开。

SQL> startup

ORACLE instancestarted.

 

Total SystemGlobal Area  100663296 bytes

Fixed Size                  1217884 bytes

Variable Size              88083108 bytes

DatabaseBuffers            8388608 bytes

Redo Buffers                2973696 bytes

Database mounted.

ORA-00313: openfailed for members of log group 1 of thread 1

ORA-00312: onlinelog 1 thread 1: '/DBData/WWL/redo01.log'

 

SQL>alter database clear logfile group 1;

Databasealtered.

 

重建完之后数据库可以打开了,至此恢复完成

SQL> alter database open;

Database altered.

 

 

4.2当前redo(联机重做日志)文件丢失恢复

数据库启动的时候报如下错误

SQL> startup

ORACLE instance started.

 

Total System Global Area 100663296 bytes

Fixed Size                  1217884 bytes

Variable Size             88083108 bytes

Database Buffers            8388608 bytes

Redo Buffers                2973696 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 ofthread 1

ORA-00312: online log 1 thread 1:'/DBData/WWL/redo01.log'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

查看日志组,判断损坏的日志组是否为当前日志组

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         35  31457280          1 NO  CURRENT                1139915 05-JUL-12

         3          1         34  31457280          1 YES INACTIVE               1118555 05-JUL-12

         2          1         33  31457280          1 YES INACTIVE               1086278 05-JUL-12

    在这里可以看到损坏的为当前日志组,那么意味着会有在线数据丢失,因为重做日志里面当前状态里面存放的是是没有归档及写入到数据文件的活动数据,那么这种恢复必然是会导致数据的不同步,从而使数据丢失。

 

我们可以首先尝试清空日志组信息并重建的方式来进行恢复:

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 instanceWWL (thread 1)

ORA-00312: online log 1 thread 1:'/DBData/WWL/redo01.log'

 

如上方法不行,可以采取基于SCN,取消的方法来恢复数据库。

 

使用基于控制文件的redo恢复:

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;

ORA-00279: change 1139916 generated at 07/05/201221:49:48 needed for thread 1

ORA-00289: suggestion :/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf

ORA-00280: change 1139916 for thread 1 is in sequence #35

 

Specify log: {<RET>=suggested | filename | AUTO |CANCEL}

auto

ORA-00308: cannot open archived log '/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

 

ORA-00308: cannot open archived log'/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

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 100663296 bytes

Fixed Size                  1217884 bytes

Variable Size             88083108 bytes

Database Buffers            8388608 bytes

Redo Buffers                2973696 bytes

Database mounted.

 

SQL> alter system reset"_allow_resetlogs_corruption" scope = spfile sid = '*';

System altered.

 

SQL> alter database open resetlogs;

Database altered.

 

SQL> select instance_name,status from v$instance;

 

INSTANCE_NAME   STATUS

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

WWL             OPEN

 

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1          1  31457280          1 NO  CURRENT                1200799 06-JUL-12

         2          1          0  31457280          1 YES UNUSED                       0

         3          1          0  31457280          1 YES UNUSED                       0

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#     BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         17  31457280          1 YES INACTIVE               1241271 06-JUL-12

         2          1         18  31457280          1 YES INACTIVE               1241273 06-JUL-12

         3          1         19  31457280          1 NO  CURRENT                1241275 06-JUL-

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
150 28
|
2月前
|
监控 Oracle 关系型数据库
Mysql、Oracle审计日志的开启
通过上述步骤,可以在 MySQL 和 Oracle 数据库中启用和配置审计日志。这些日志对于监控数据库操作、提高安全性和满足合规性要求非常重要。确保正确配置审计参数和策略,定期查看和分析审计日志,有助于及时发现并处理潜在的安全问题。
97 11
|
4月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
233 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
126 3
|
4月前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
255 7
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
4月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
101 4
|
4月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
124 1
|
SQL Oracle 关系型数据库
Oracle自动恢复设置
一、背景说明:一个朋友需要定期把正式库的备份还原到一个测试系统中,便于系统进行测试;从需求上来讲这个需求是比较奇怪的,但是作为技术人员还是得进行配合完成相应的需求。
710 0
|
5月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
389 64

推荐镜像

更多