当前位置: 首页 > news >正文

Oracle数据库坏块类故障

正常的数据块有其特有的固定格式,如果某数据块内部出现了混乱而导致Oracle无法读取,则可称其为坏块。数据库坏块的影响范围可大可小,严重时会导致数据库无法打开。当数据库出现坏块时,一般出现ORA-01578错误、ORA-10632错误或者ORA-00600错误。数据库产生坏块的原因主要有以下几种:
硬件问题。如内存混乱,CPU计算错误会导致内存中的数据块内容混乱,进而导致保存到磁盘后数据块损坏。
操作系统BUG。Oracle的I/O写最终会由操作系统内核调用(system call)完成,当内核调用出现问题时,就可能产生坏块。
非Oracle进程异常修改Oracle SGA内存区域。如调用Linux或者Unix操作系统的函数shmat 非法attach到SGA中。
主机或者存储异常掉电。当掉电后存储的CACHE机制无法发挥正常作用时,极容易产生坏块。
Oracle BUG。某些版本下的Oracle BUG可能也会导致坏块产生,如Bug 4493447。
1.6.1 数据库对象坏块的处理思路
业务对象上的坏块通常不会导致数据库宕机。假设数据库没有备份,数据库对象坏块的处理思路如下:
(1)使用dbv、RMAN、EXP/EXPDP或者VALIDATE命令校验数据库的坏块数量。建议使用dbv校验,因为RMAN、EXP/EXPDP或者VALIDATE校验坏块过程中可能会使数据库实例宕掉。此外EXP/EXPDP校验坏块时不会校验索引的坏块。
(2)如果索引出现坏块,则考虑删除并重建索引。索引有坏块时,一般不建议使用rebuild选项建索引。
(3)如果表出现坏块,则设置10231事件或者使用dbms_repair包使得会话在全表扫描时可以跳过坏块,也可以使用ROWID RANGE SCAN跳过坏块的数据。其使用方法可以参考MOS文章422547.1。
(4)使用bbed工具尝试修复坏块。需要注意的是,使用bbed修复坏块过程较为复杂且风险较大。
1.6.2 SYSTEM/UNDO表空间损坏的处理思路
SYSTEM/UNDO表空间损坏是比较棘手的故障,通常会导致数据库异常宕机进而无法打开数据库。数据库的打开故障处理起来相对比较麻烦,读者可以参考本书第5章进一步了解该类故障的处理过程。如果数据库没有备份,通常需要设置官方不推荐的隐含参数或者使用bbed工具修复损坏的数据块来强制打开数据库,所以此类故障处理起来存在着风险性和不可预知性。当碰到此类故障时,笔者的处理思路如下(假设数据库没有备份):
(1)检查数据库的警告日志,初步确定数据库打不开的原因。如果是RAC,则检查所有节点的警告日志。
(2)物理备份整个数据库。如果备份到本地,其备份速度最终取决于数据库大小和存储I/O能力。如果通过网络备份到异地,则还取决于网络带宽。
(3)用dbv工具校验SYSTEM/UNDO表空间,确定数据块的损坏范围和严重程度。
(4)关闭监听。其目的是数据库成功打开之后,外部应用不会立刻连接至数据库。
(5)进行故障处理。具体的处理思路请参考第5章。
(6)如果是UNDO表空间有坏块,可以设置隐含参数_offline_rollback_segments屏蔽坏块所在的回滚段来打开数据库。如果熟悉数据块格式,则可以用bbed工具修复损坏的数据块。
提示 如果空间不够或者备份时间过长,则备份SYSTEM、UNDO和SYSAUX表空间下的数据文件、控制文件、所有在线日志文件。非常规手段修复数据库所带来的副作用很难被DBA全部预见到,为防止事态进一步恶化,所以在问题处理之前必须全部备份上述文件。对于不可逆转的修复,DBA一定要小心,备份为上!
1.6.3 数据库在线日志文件损坏的处理思路
由于在线日志的写操作非常频繁,所以主机或者存储异常宕机之后,在线日志往往会损坏。在线日志损坏也就意味着丢失数据,数据库就无法正常打开,所以需要引起读者足够的重视,千万不要在数据库运行时,关闭主机或者存储。当碰到此类故障时,笔者的处理思路如下:
(1)如果损坏的是INACTIVE状态的在线日志,则启动数据库至MOUNT状态,然后使用CLEAR LOGFILE命令重新生成该日志文件,这样就可以正常打开数据库。在CLEAR LOGFILE过程中,服务器进程会根据记录在控制文件的日志文件大小重新格式化日志块,所以刚生成的日志文件块除了块头信息,没有其他任何内容。
(2)如果损坏的是ACTIVE或者CURRENT状态的在线日志,则设置隐含参数_allow_resetlogs_corruption为TRUE,然后进行不完全恢复,使用RESETLOGS模式强制打开数据库。
(3)强制打开数据库过程中,可能会出现ORA-00600 [2662]错误,则使用10015事件或者隐含参数_minimum_giga_scn递增全库SCN。
1.6.4 控制文件损坏的处理思路
虽然控制文件很重要,但它损坏了至少不会丢失数据,而且控制文件损坏的处理流程也相对比较简单。当碰到控制文件损坏,且没有备份时,笔者的处理思路如下:
(1)数据库打开过程中,观察数据库是否能到MOUNT阶段。如果能,则将控制文件备份到跟踪文件中,然后使用NORESETLOGS选项重建控制文件。
(2)如果不能MOUNT数据库,则使用操作系统命令strings命令提取控制文件的数据文件,在线日志文件位置和路径,然后按照重建控制文件的格式以NORESETLOGS选项重建控制文件。
(3)如果操作系统命令strings命令无法读取控制文件,那么只能到文件系统中寻找当前数据库的数据文件和在线日志文件,然后按照重建控制文件的格式以NORESETLOGS选项重建控制文件。

相关文章:

Oracle数据库坏块类故障

正常的数据块有其特有的固定格式,如果某数据块内部出现了混乱而导致Oracle无法读取,则可称其为坏块。数据库坏块的影响范围可大可小,严重时会导致数据库无法打开。当数据库出现坏块时,一般出现ORA-01578错误、ORA-10632错误或者OR…...

andorid之摄像头驱动流程--MTK平台

camera成像原理: 景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过DSP加工出来,然后在通过IO接口传输到CPU处理。 由于摄像头满足总线、驱动、设备模型,…...

Android9.0 iptables用INetd实现屏蔽ip黑名单的实现

1.前言 在9.0的系统rom定制化开发中,在system中netd网络这块的产品需要中,会要求设置屏蔽ip地址之内的功能,liunx中iptables命令也是比较重要的,接下来就来在INetd这块实现屏蔽ip黑名单的的相关功能,就是在app中只能屏蔽某个网址,就是除了这个网址,其他的都能上网,最后…...

介绍一下json

目录 介绍一下json Elasticsearch7.6学习指南 介绍一下json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示结构化数据。JSON最初是由Douglas Crockford在2001年提出的,它在we…...

DI依赖注入环境

1.构造器注入 上一章节已经说过了&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…...

《程序员面试金典(第6版)》面试题 16.18. 模式匹配(暴力破解 + 剪枝)

题目描述 你有两个字符串&#xff0c;即pattern和value。 pattern字符串由字母"a"和"b"组成&#xff0c;用于描述字符串中的模式。 例如&#xff0c;字符串"catcatgocatgo"匹配模式"aabab"&#xff08;其中"cat"是"a&q…...

一天吃透SpringCloud面试八股文

1、什么是Spring Cloud &#xff1f; Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序&#xff0c;提供与外部系统的集成。Spring cloud Task&#xff0c;一个生命周期短暂的微服务框架&#xff0c;用于快速构建执行有限数据处理的应用程序。 Sprin…...

java生成图片缩略图

目录 前言一、使用Base64编码方式1、基本方法2、压缩本地图片保存到本地3、压缩网络图片到图片服务器 二、使用thumbnailator工具方式1、导入依赖2、压缩本地图片保存到本地 前言 下面介绍了两种获取图片缩略图的方式&#xff0c;全都不是一次性压缩&#xff0c;如果没有达到设…...

《统计学习方法》——隐马尔可夫模型(下)

学习算法 HMM的学习&#xff0c;在有观测序列的情况下&#xff0c;根据训练数据是否包含状态序列&#xff0c;可以分别由监督学习算法和无监督学习算法实现。 监督学习算法 监督学习算法就比较简单&#xff0c;基于已有的数据利用极大似然估计法来估计隐马尔可夫模型的参数。…...

Liunx top 命令详解

文章目录 top补充说明语法选项top交互命令实例 top 显示或管理执行中的程序 补充说明 top命令 可以实时动态地查看系统的整体运行情况&#xff0c;是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面&#xff0c;用热键可以管理。 语法…...

基于 SpringBoot 的医院固定资产系统

本文将介绍基于 SpringBoot 技术的医院固定资产系统的设计和实现。医院固定资产管理是医疗机构管理工作的重要组成部分&#xff0c;它对医院的正常运营和管理具有重要的意义。本系统的设计和实现将有助于医疗机构更好地管理和维护其固定资产。 1. 系统需求分析 医院固定资产管…...

【企业信息化】第2集 免费开源ERP: Odoo 16 销售管理系统

文章目录 前言一、概览二、使用功能1.通过清晰报价提高销售效率2.创建专业报价单3.管理订单及合同4.简化沟通5.维护产品&价格6.直观的报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 销售管理系统。通过Odoo Sign应用程序和在线支付&#xff0c;发送报价。…...

浅谈数据治理

大家好 &#xff0c;近年来&#xff0c;数据治理成为挖掘数据价值的重要手段和工具。随着大数据平台和工业互联网兴起&#xff0c;数据治理平台主要采用数据中台技术和微服务架构初步替代传统架构&#xff0c;面向大数据架构下&#xff0c;为数据资源中心与外部数据系统提供数据…...

Matlab入门教程003|MATLAB变量|MATLAB命令

MATLAB变量 每个MATLAB变量可以是数组或者矩阵。 用一个简单的方法指定变量。例如&#xff1a; x 3 % defining x and initializing it with a value MATLAB执行上述语句&#xff0c;并返回以下结果&#xff1a; x 3 上述的例子创建了一个1-1的矩阵名为x和的值存储…...

【啃书C++Primer5】-编写一个简单C++程序

每个C程序都包含一个或多个函数(function)&#xff0c;其中一个必须命名为main。操作系统通过调用main来运行C程序。下面是一个非常简单的main函数&#xff0c;它什么也不干&#xff0c;只是返回给操作系统一个值: int main() {return 0; }一个函数的定义包含四部分:返回类型(r…...

GoView 是一个Vue3搭建的低代码数据可视化开发平台

一、总览 开源、精美、便捷的「数据可视化」低代码开发平台 二、整体介绍 框架&#xff1a;基于 Vue3 框架编写&#xff0c;使用 hooks 写法抽离部分逻辑&#xff0c;使代码结构更加清晰&#xff1b; 类型&#xff1a;使用 TypeScript 进行类型约束&#xff0c;减少未知错误…...

【面试篇】Redis持久化面试题

文章目录 Redis持久化&#x1f64e;‍♂️面试官&#xff1a;什么是Redis持久化&#xff1f; AOF日志AOF日志原理&#x1f64e;‍♂️面试官&#xff1a;AOF日志是怎么工作的/AOF写入磁盘的流程&#xff1f;&#x1f64e;‍♂️面试官&#xff1a; 刚刚说到了Redis先执行写入的…...

哈工大软件过程与工具作业2

云原生技术云原生技术 哈尔滨工业大学 计算机科学与技术学院/国家示范性软件学院 2022年秋季学期 《软件过程与工具》课程 作业报告 作业 2&#xff1a;需求分析UML建模 姓名 学号 联系方式 石卓凡 120L021011 944613709qq.com/18974330318 目 录 1 需求概述...........…...

SDN控制器三平面(软件定义网络、OOB)

目录 又名 三个独立的平面或层 SDN数据流 控制流量的带外(OOB) 优势 技术...

嘉兴桐乡会计考证实操-考初级会计真的有用吗?

一边说着&#xff1a;考初级会计门槛太低了&#xff0c;谁都能考&#xff1b;一边又争先恐后的去报考&#xff0c;考初级会计真的是有用的吗&#xff1f;为什么这么多人一边说考了没用却一直在努力备考呢&#xff1f; 关于这类的话题&#xff0c;其实一直都存在&#xff0c;但不…...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具&#xff0c;支持将多个Markdown文件一键转换为Word文档。完全免费&#xff0c;无需安装&#xff0c;解压即用&#xff01; 官方网站 访问官方展示页面了解更多信息&#xff1a;http://mutou888.com/pro…...

Gitlab + Jenkins 实现 CICD

CICD 是持续集成&#xff08;Continuous Integration, CI&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment, CD&#xff09;的缩写&#xff0c;是现代软件开发中的一种自动化流程实践。下面介绍 Web 项目如何在代码提交到 Gitlab 后&#xff0c;自动发布…...

开源 vGPU 方案:HAMi,实现细粒度 GPU 切分

本文主要分享一个开源的 GPU 虚拟化方案&#xff1a;HAMi&#xff0c;包括如何安装、配置以及使用。 相比于上一篇分享的 TimeSlicing 方案&#xff0c;HAMi 除了 GPU 共享之外还可以实现 GPU core、memory 得限制&#xff0c;保证共享同一 GPU 的各个 Pod 都能拿到足够的资源。…...

NLP常用工具包

✨做一次按NLP项目常见工具的使用拆解 1. tokenizer from torchtext.data.utils import get_tokenizertokenizer get_tokenizer(basic_english) text_sample "Were going on an adventure! The weather is really nice today." tokens tokenizer(text_sample) p…...

HarmonyOS Next 弹窗系列教程(3)

HarmonyOS Next 弹窗系列教程&#xff08;3&#xff09; 选择器弹窗 (PickerDialog) 介绍 选择器弹窗通常用于在用户进行某些操作&#xff08;如点击按钮&#xff09;时显示特定的信息或选项。让用户可以进行选择提供的固定的内容。 以下内容都属于选择器弹窗&#xff1a; …...

Kotlin REPL初探

文章目录 1. Kotlin REPL 简介2. 在命令行中玩Kotlin REPL2.1 下载Kotlin编译器压缩包2.2 安装配置Kotlin编译器2.3 启动Kotlin交互式环境2.4 在命令行玩Kotlin REPL 3. 在IDEA里玩Kotlin REPL3.1 打开Kotlin REPL窗口3.2 在Kotlin REPL窗口玩代码 4. Kotlin REPL 的优势 1. Ko…...

易语言是什么?易语言能做什么?

易语言&#xff08;EPL&#xff09;是什么&#xff1f;​​ ​​易语言​​&#xff08;Easy Programming Language&#xff0c;简称EPL&#xff09;是一款​​面向中文用户的编程语言​​&#xff0c;由中国人吴涛于2000年开发&#xff0c;专为降低编程门槛设计。其核心特点是…...

多线程语音识别工具

软件介绍 本文介绍一款支持大厂接口的语音转文字工具&#xff0c;具备免配置、免费使用的特点。 软件特性 该工具是一款完全免费的桌面端应用程序&#xff0c;部署于开源社区平台&#xff0c;其核心优势在于整合了多家技术供应商的接口资源。 操作方式 用户只需将音频…...

Vue-github 用户搜索案例

一、前言 在 Vue 开发中&#xff0c;与后端或第三方 API 接口进行交互是非常常见的需求。GitHub 提供了开放的 RESTful API&#xff0c;非常适合用来练习 Vue 的异步请求和数据绑定功能。 本文将带你一步步实现一个完整的 GitHub 用户搜索系统&#xff0c;包括&#xff1a; …...

leetcode sql50题

在中文站没找到对应的集合&#xff0c;想来自己动手拷贝过来&#xff0c;方便大家面试复习用&#xff0c;对应英文站点&#xff1a; https://leetcode.com/studyplan/top-sql-50/ Select #1757. 可回收且低脂的产品 链接: https://leetcode.cn/problems/recyclable-and-low-fa…...