当前位置: 首页 > 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;但不…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...