老司机翻车,一次失败的Oracle备份恢复,核心应用彻底瘫痪...

news2024/11/16 3:39:27

作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

  • 前言
    • 1.故障现象
    • 2.恢复过程
      • 2.1 重建控制文件
      • 2.2 恢复数据库
      • 2.3 开库
    • 3.反思
    • 4.后期处理
    • 5.总结

前言

最近核心业务使用的一套Oracle数据库故障,由于自己的疏忽,导致恢复失败,彻底瘫痪了,分享经验给大家,引以为鉴

1.故障现象

ORACLE的RAC的2个数据库实例异常停止,查看日志以及试用 dbv 命令发现控制文件坏块,跟用户确认得知怀疑是近期服务器突发掉电导致,让人吐血的是多路复制的2个控制文件同时被破坏

再次用dbv 命令发现控制文件坏块程度及其严重,并且发现此套RAC,没有开归档、也没有做任何备份

2.恢复过程

2.1 重建控制文件

由于该数据库无备份,所以只能手工创建控制文件进行恢复,且数据库只能在 nomount 状态,无法生成控制文件,只能在 asm 里找到相关数据文件以及redo文件,手动生成的控制文件如下

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '+data/rac/redo01.log' SIZE 50M,
GROUP 2 '+data/rac/redo02.log' SIZE 50M,
GROUP 3 '+data/rac/redo03.log' SIZE 50M,
GROUP 4 '+data/rac/redo04.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'+data/rac/system01.dbf',
'+data/rac/undotbs01.dbf',
'+data/rac/sysaux01.dbf',
'+data/rac/undotbs02.dbf',
'+data/rac/users01.dbf'
CHARACTER SET UTF8

2.2 恢复数据库

重建控制文件后,需要进行 recover database
由于数据库无归档,所以无法进行恢复。
使用隐含参数强制拉起数据库:
alter system set “_allow_resetlogs_corruption”=true scope=spfile;

2.3 开库

问题就出现在这一步
ALTER DATABASE OPEN ESETLOGS命令发出后
原始的在线日志被重构,导致数据库内部有不一致情况,这次是彻底的失败了
数据文件头部写的scn全乱了
正确的命令应该是ALTER DATABASE OPEN一致性开库

从恢复的过程alert日志报错也能明显确认到,相当于日志文件,数据文件,控制文件ckpt信息完全不相同了。非归档模式前推找不到基准线,再者恢复之前的在线日志也没有备份,彻底被重构了。

3.反思

经过这一次失败的故障失败,总结如下

1.故障发生后,保护原始环境非常重要,
做任何操作提前做好备份
2.备份恢复的作业流程需要反复确认,
最好有环境测试通过验证再实施
3.核心业务库必须开归档,做RMAN备份,
防止突发故障造成核心文件的损坏

4.后期处理

由于控制文件损坏重建后,没有备份和归档,无法进行恢复操作,导致数据库内部有不一致情况。如果想继续尝试,就只能尝试那种修改底层的非常规手段.

DUL是Data Unloader的缩写,Oracle内部恢复工具,为Oracle公司工程师 Bernard van Duijnen 开发,以标准C写成,在不同平台上会使用不同的binary文件,可以直接从Oracle的数据文件中读取数据,转换为DMP或文本格式输出,在特殊情况下可以用来进行数据恢复。这些特殊情况主要指,数据库没有有效备份、或者系统表空间损坏,或者在非归档模式下的不可逆数据损失等等,一旦普通手段失去作用,DUL就可以作为最后一招来最大限度的挽救用户数据。

5.总结

保护和恢复数据的能力对于确保业务连续性和减少潜在风险至关重要,作为DBA这是必须要精通的一门技术,吃一堑,长一智,此次故障恢复失败案例分享给大家,引以为鉴!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1885074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊测评风控全解析:如何有效避免砍单与封号?

许多朋友都困惑,为什么在测评时频繁遭遇砍单和封号?其实,测评可不是简单地买个IP或几个买家号就能搞定的事。 首先,咱们得审视一下自己的操作环境,是不是真的安全无虞,还是经常莫名其妙就被封了号、砍了单&…

基于java+springboot+vue实现的旅游管理系统(文末源码+Lw)227

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息&a…

三层限流:为高并发系统保驾护航

文章目录 前言第一层限流:Nginx 层面的 IP 限流第二层限流:Gateway 对用户层级的限流第三层限流:微服务限流分布式限流和单机限流的优缺点:1、RateLimiter的使用2、Hystrix的使用3、Redislua脚本4、使用Sentinel 关于为何同时使用…

力扣:LCR 024. 反转链表(Java)

目录 题目描述:示例 1:示例 2:代码实现: 题目描述: 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出&#x…

Python实现接糖果小游戏

介绍: 基于Pygame的糖果从屏幕顶部下落的游戏代码。这个游戏包括了一个可以左右移动的篮子来接住下落的糖果,接住糖果会增加得分。 代码: import pygame import random import os# 初始化pygame和设置屏幕大小 pygame.init() screen_width, screen_height 800, 6…

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2(全开源版)

>>>系统简述: 抖音阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多…

Python基础小知识问答系列-可迭代型变量赋值

1. 问题: 怎样简洁的把列表中的元素赋值给单个变量? 当需要列表中指定几个值时,剩余的变量都收集在一起,该怎么进行变量赋值? 当只需要列表中指定某几个值,其他值都忽略时,该怎么…

拓扑排序[讲课留档]

拓扑排序 拓扑排序要解决的问题是给一个有向无环图的所有节点排序。 即在 A O E AOE AOE网中找关键路径。 前置芝士! 有向图:有向图中的每一个边都是有向边,即其中的每一个元素都是有序二元组。在一条有向边 ( u , v ) (u,v) (u,v)中&…

数字营销执行团队的重要性及如何配置

在当今数字化商业环境中,数字营销执行团队的重要性不言而喻。 其重要性主要体现在以下几点:一是能精准触达目标客户,借助数据分析实现精准营销,提高营销效率和效果。二是紧跟数字技术发展潮流,及时采用新的营销手段和…

基于OpenCV与Keras的停车场车位自动识别系统

本项目旨在利用计算机视觉技术和深度学习算法,实现对停车场车位状态的实时自动识别。通过摄像头监控停车场内部,系统能够高效准确地辨认车位是否被占用,为车主提供实时的空闲车位信息,同时为停车场管理者提供智能化的车位管理工具…

【JVM-04】线上CPU100%

【JVM-04】线上CPU100% 1. 如何排查 1. 如何排查 ⼀般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢?先进服务器,⽤top -c 命令找出当前进程的运⾏列表按⼀下 P 可以按照CPU使⽤率进⾏排序显示Java进程 PID 为 2609 的java进程消耗…

清新简约卡片风格蓝紫渐变色短视频苹果CMS模板

首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板,一套苹果CMSV10主题。 这套主题是简约风格,以纯洁的白色和深邃的紫色为主色调,为您提供了一种清新、时尚的浏览体验。 在这个简洁而美丽的界面中,您可以轻松畅享各种精彩短…

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon?Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件(application.yml)说明: Feign 与 Ribbon 结合使用的应用场景1. 动态服…

Win10系统登录界面两个相同用户名的处理方法

在Windows 10系统中只设置了一个帐户,即本地帐户Administrator,但由于一些应用对帐户的要求,会切换到微软帐户登录,而切换之后,在登录界面就会显示微软帐户的名称,故Windows 10系统在登录界面会显示两个相同…

windows网络进阶之listen参数含义

目录 一、前言 二、listen参数 三、实战案例 1. 使用Sleep函数让线程暂停 2. 案例代码展示 3. 编译生成exe文件 一、前言 一、前言 在Windows网络编程中,在使用TCP时,listen函数它是一个重要的关键的步骤,使得套接字能够接收传…

【C++】使用C++在线程中动态记录数据到外部文件

在现代软件开发中,多线程编程已成为处理并发任务、提高程序性能的重要手段。而在多线程环境下,如何有效地管理和记录数据,尤其是将动态生成的数据安全地写入外部文件,是许多应用程序必须面对的问题。本文将深入探讨如何在C中使用多…

FastApi中的常见请求类型

FastApi中的常见请求类型 后端开发语言中,我钟情于node,高效的异步处理真是让我眼前一亮,同时,简单易懂的语法也让我非常倾心 但是但是,因为考虑要写一个深度学习算法的后端接口,所以不得不选用python作为…

传神论文中心|第15期人工智能领域论文推荐

在人工智能领域的快速发展中,我们不断看到令人振奋的技术进步和创新。近期,开放传神(OpenCSG)社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…

【linux】虚拟机安装 BCLinux-R8-U4-Server-x86_64

目录 一、概述 1.1移动云Linux系统订阅服务 CLS 1.2 大云天元操作系统BC-Linux 二、安装 一、概述 1.1移动云Linux系统订阅服务 CLS 移动云Linux系统订阅服务 CLS (Cloud Linux Service)为使用BC-Linux操作系统的用户提供标准维保服务以及高级技术支…

JVM原理(九):JVM虚拟机工具之可视化故障处理工具

1. JHSDB:基于服务性代理的调试工具 JHSDB是一款基于服务性代理实现的进程外调试工具。 服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的、主要基于Java语言实现的API集合。 2. JConsole:Java监视与管理控制台 JConsole是一款基于JMX的可视化监视、管理工具。…