oracle 数据库在线重做日志故障处理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle 数据库在线日志故障处理是DBA的基本操作之一,不但要掌握操作,还要掌握原理。
1 数据库环境
1.1 数据库版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
1.2 日志模式
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     0
Next log sequence to archive   6
Current log sequence           6
1.3 实验用数据
SQL>  select * from test_control;
CURR_TIME
-------------------
2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
2019-08-03 11:52:17
2019-08-03 11:53:05
2019-08-17 16:08:27
2019-08-17 16:08:29
2019-08-17 16:08:29
2019-08-17 16:08:30
2019-08-17 16:53:19
2019-08-17 16:58:00
11 rows selected.
2 当前重做日志组全部成员故障
2.1 查看当前重做日志组及成员
SQL> select group#, status from v$log;
    GROUP# STATUS
---------- ----------------
         1 UNUSED
         2 INACTIVE
         3 CURRENT  /* 当前重做日志组为3号
SQL> l
  1* select  GROUP#, MEMBER from v$logfile order by group#
SQL> /
    GROUP# MEMBER
---------- ----------------------------------------------------------------
         1 /u01/app/oracle/oradata/orcl11g/redo01.log
         2 /u01/app/oracle/oradata/orcl11g/redo02.log
         3 /u01/app/oracle/oradata/orcl11g/redo03.log /*3号组有一个成员*/
2.2 插入一些数据到测试表中
SQL> insert into test_control select sysdate from dual;
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
2.3 删除当前redo日志组成员,模拟当前日志组故障
SQL> !rm  /u01/app/oracle/oradata/orcl11g/redo03.log
SQL> !ls /u01/app/oracle/oradata/orcl11g/redo03.log
ls: cannot access /u01/app/oracle/oradata/orcl11g/redo03.log: No such file or directory
2.4 提交当前事务
SQL> commit;
Commit complete.
2.5 故障处理

切换重做日志组,至删除的当前日志组时,卡住

SQL>  alter system switch logfile;
System altered.
SQL> alter system switch logfile;
^Calter system switch logfile
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation

检查现在日志组状态

SQL> select group#,status from v$log;
    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 CURRENT 
         3 INACTIVE ~~原来的当前日志组已经变为非活跃~~

清除在线重做日志

SQL> alter database clear logfile group 3;/* 提示log 3 需要归档*/
alter database clear logfile group 3
*
ERROR at line 1:
ORA-00350: log 3 of instance orcl11g (thread 1) needs to be archived
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl11g/redo03.log'
SQL> alter database clear unarchived logfile group 3;/*清除非归档重做日志成功*/
Database altered.
2.6 检验数据
SQL> select * from test_control;
CURR_TIME
-------------------
2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
2019-08-03 11:52:17
2019-08-03 11:53:05
2019-08-17 16:08:27
2019-08-17 16:08:29
2019-08-17 16:08:29
2019-08-17 16:08:30
2019-08-17 16:53:19
2019-08-17 16:58:00
CURR_TIME
-------------------
2019-08-18 08:34:45
2019-08-18 08:34:47
2019-08-18 08:34:48
2019-08-18 08:34:49
2019-08-18 08:34:49
2019-08-18 08:34:51
17 rows selected.

没有数据丢失。

2.6 数据库告警日志中的相关内容
Sun Aug 18 08:41:47 2019
Errors in file /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_arc3_2180.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl11g/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Master archival failure: 313
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance orcl11g - Archival Error
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl11g/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_arc3_2180.trc:
Master archival failure: 313
Sun Aug 18 08:47:39 2019
WARNING! CLEARING REDO LOG WHICH HAS NOT BEEN ARCHIVED. BACKUPS TAKEN
    BEFORE 08/18/2019 08:41:47 (CHANGE 1080523) CANNOT BE USED FOR RECOVERY.
Clearing online log 3 of thread 1 sequence number 6
Errors in file /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_ora_2172.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl11g/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_ora_2172.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl11g/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Archived Log entry 38 added for thread 1 sequence 7 ID 0x42f6d474 dest 1:
Archiver process freed from errors. No longer stopped
Completed: alter database clear unarchived logfile group 3
3 非当前重做日志组全部成员丢失
3.1 检查当前测试数据
SQL> select * from test_control;
CURR_TIME
-------------------
2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
2019-08-03 11:52:17
2019-08-03 11:53:05
2019-08-17 16:08:27
2019-08-17 16:08:29
2019-08-17 16:08:29
2019-08-17 16:08:30
2019-08-17 16:53:19
2019-08-17 16:58:00
CURR_TIME
-------------------
2019-08-18 08:34:45
2019-08-18 08:34:47
2019-08-18 08:34:48
2019-08-18 08:34:49
2019-08-18 08:34:49
2019-08-18 08:34:51
17 rows selected.

####### 3.2 向表中插入几行数据

SQL> insert into test_control select sysdate from dual;
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> select * from test_control;
CURR_TIME
-------------------
2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
2019-08-03 11:52:17
2019-08-03 11:53:05
2019-08-17 16:08:27
2019-08-17 16:08:29
2019-08-17 16:08:29
2019-08-17 16:08:30
2019-08-17 16:53:19
2019-08-17 16:58:00
CURR_TIME
-------------------
2019-08-18 08:34:45
2019-08-18 08:34:47
2019-08-18 08:34:48
2019-08-18 08:34:49
2019-08-18 08:34:49
2019-08-18 08:34:51
2019-08-18 09:11:57
2019-08-18 09:11:59
2019-08-18 09:12:00
20 rows selected.
3.3 删除一个非当前日志组所有成员
SQL> select status, group# from v$log;
STATUS               GROUP#
---------------- ----------
INACTIVE                  1
CURRENT                   2
UNUSED                    3
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- ----------------------------------------------------------------
         3 /u01/app/oracle/oradata/orcl11g/redo03.log
         2 /u01/app/oracle/oradata/orcl11g/redo02.log
         1 /u01/app/oracle/oradata/orcl11g/redo01.log
SQL> ! /u01/app/oracle/oradata/orcl11g/redo01.log
/bin/bash: /u01/app/oracle/oradata/orcl11g/redo01.log: Permission denied
SQL> ! rm /u01/app/oracle/oradata/orcl11g/redo01.log
SQL> ! ls /u01/app/oracle/oradata/orcl11g/redo01.log
ls: cannot access /u01/app/oracle/oradata/orcl11g/redo01.log: No such file or directory
3.4 故障处理及检验
SQL> alter database clear logfile group 1;/* 清除故障日志组*/
Database altered.
SQL>  ! ls /u01/app/oracle/oradata/orcl11g/redo01.log
/u01/app/oracle/oradata/orcl11g/redo01.log  /*故障日志组成员已经重建*/


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
20天前
|
监控 Oracle 关系型数据库
Mysql、Oracle审计日志的开启
通过上述步骤,可以在 MySQL 和 Oracle 数据库中启用和配置审计日志。这些日志对于监控数据库操作、提高安全性和满足合规性要求非常重要。确保正确配置审计参数和策略,定期查看和分析审计日志,有助于及时发现并处理潜在的安全问题。
38 11
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
140 11
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
84 5
|
3月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
6月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
477 2
|
7月前
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
129 7
|
存储 SQL 负载均衡
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
2943 1

推荐镜像

更多