IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

数据库

共 1099 篇文章

IT 2026-07-03 23:10:22 / 累计浏览 79

记录block 0损坏,数据文件大量坏块,使用不当数据库版本恢复等各种操作之后的故障处理

本文详细记录了一次Oracle数据库的故障处理过程,涉及block 0损坏、数据文件大量坏块以及使用不当数据库版本恢复。案例中,通过Oracle自带的dbv工具和obet工具检测坏块,确认三个数据文件的block 0损坏,另一个文件存在近两万坏块。尝试通过RMAN备份恢复损坏数据文件时,发现备份片段也损坏,最终找到一份可用备份替换坏块。修复block 0后,修改数据文件路径以解决ORA-17503错误,使用rename命令重命名文件。打开数据库时遇到版本不匹配问题,通过obet工具修改数据文件头中的版本信息,从11.2.0.4降级到11.2.0.0,并重建控制文件。采用resetlogs方式成功打开数据库,最后通过expdp导出数据完成恢复。整个案例展示了Oracle数据库故障排查和恢复的复杂技巧,包括坏块处理、备份恢复和版本兼容性调整,适合数据库管理员学习实际场景中的解决方案。

本机暂存
IT 2026-07-03 18:40:41 / 累计浏览 107

需要注意:dbv 检测controlfile可能不准

本文基于一个Oracle数据库恢复案例,揭示dbv工具在检测controlfile坏块时存在不准确的可能性。案例中数据库在mount阶段报出ORA-00227错误,明确指示controlfile损坏,但将controlfile从ASM存储拷贝到本地文件系统后,使用dbv工具检测却显示一切正常,未发现任何坏块。作者通过重建controlfile成功打开数据库,间接验证了dbv工具的局限性。文章强调dbv主要针对数据文件的物理和逻辑坏块设计,对controlfile的检测可能存在盲区,建议数据库管理员在处理类似问题时结合alert日志、RMAN等工具进行综合诊断。此外,文章列举了假坏块、ORA-01578、误删数据库恢复等多个相关故障案例作为参考,为Oracle数据库管理员提供了实用的故障排查经验和工具使用注意事项,提醒避免过度依赖单一工具以确保数据安全。

本机暂存
IT 2026-06-28 15:10:23 / 累计浏览 62

达梦数据库redo异常强制拉库

本文通过模拟达梦数据库redo日志丢失的故障,详细演示了强制恢复数据库的完整流程。首先,在数据库中创建测试表并执行大量删除操作后,使用shutdown abort命令强制关闭,随后手动删除redo日志文件以模拟异常。尝试重启时,数据库因redo文件缺失而失败。恢复策略包括:参考原始初始化日志,使用dminit工具重新初始化一个相同配置的新数据库;将新库的redo日志文件拷贝至原库目录;启动时发现db_magic和permanent_magic不匹配错误,于是使用dmmdf工具分别修改SYSTEM.DBF和redo日志文件的魔法值;调整初始化参数PSEG_RECV为0以跳过段恢复,并设置RLOG_CHECK_SPACE为2后成功启动数据库。最后验证数据一致性,确认恢复操作有效。该过程展示了达梦数据库底层恢复机制的关键操作,为数据库管理员提供了处理redo异常的实用指南。

本机暂存
IT 2026-06-27 23:40:55 / 累计浏览 52

dd破坏包含50多个pdb的asm 磁盘组恢复

本文记录了一次Oracle ASM磁盘组因误执行dd命令导致数据损坏的恢复案例。客户误操作破坏了包含50多个可插拔数据库(PDB)的ASM磁盘组的两个磁盘,分别被dd了100MB和10MB。故障导致磁盘组dismount,恢复面临多重挑战:磁盘头信息损坏、文件目录表丢失、别名信息缺失、PDB结构复杂等。恢复过程中,通过分析ASM日志和kfed工具重建磁盘头,利用扫描工具获取文件extent映射表和ACD信息,结合历史控制文件匹配文件与PDB关系,最终成功恢复数据文件并插入新库。案例展示了在复杂Oracle ASM环境下数据恢复的技术细节和策略,强调了元数据修复、碎片重组和PDB映射的关键步骤。

本机暂存
IT 2026-06-22 12:41:00 / 累计浏览 106

使用deepseek进行Oracle恢复,引起重大故障

本文记录了一次Oracle数据库恢复的故障案例。数据库处于open状态,但一个数据文件offline,尝试删除表空间时失败,错误提示文件无法读写。根据经验,初步判断可能是undo表空间文件offline导致,计划通过屏蔽异常回滚段或强制online文件解决。查询异常回滚段未果,进一步核查字典表发现异常:v$tablespace中存在两个undotbs1表空间记录,而ts$和file$信息不匹配,表明字典被篡改。现场确认有技术员根据deepseek AI的建议,直接执行了删除ts$和seg$记录的操作,但未处理file$,导致字典不一致,数据库因检查异常事务而停滞。通过修复字典、清理异常事务,数据库恢复正常,数据成功导出。案例警示,在数据库非常规恢复等高风险操作中,依赖AI建议需谨慎判断,避免不可逆错误,并务必制定回退方案。

本机暂存
IT 2026-06-18 01:10:54 / 累计浏览 206

接手一个只差临门一脚的数据库恢复

本案例记录了Oracle数据库因虚拟机复制引发的恢复故障。在没有停机的情况下复制虚拟机后,数据库启动失败,alert日志显示ORA-00314和ORA-00312错误,指示在线重做日志序列号与预期严重不符,序列号差距较大,可能由数据不一致导致。客户尝试使用隐含参数强制打开数据库,但在open过程中遭遇ORA-01555快照过旧错误,对应bootstrap表访问失败,表明undo段空间不足。多次重启后,进一步出现ORA-600 2662内部错误,提示SCN不一致,客户重建控制文件和强制拉库均无效,陷入错误循环,最终出现ORA-600 4193/4194错误。接手处理时,通过将undo_management参数设置为手动模式,绕过自动undo管理,成功启动数据库实例,随后使用expdp工具导出用户数据,完成恢复。此案例强调了虚拟机操作需在数据库停机状态下进行,以确保数据一致性,同时展示了undo参数调整在故障恢复中的实用价值。文章为故障排查类型,提供了详细的错误日志分析和解决方案步骤。

本机暂存
IT 2026-06-15 02:40:52 / 累计浏览 222

我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险

文章介绍了一个基于AI的StarRocks升级风险扫描工具,解决跨版本升级中不兼容变更难以发现的问题。工具核心设计是源码全量扫描,对比新旧版本代码树,追踪间接调用链和集群特定风险,避免依赖不完整的Release Notes或PR差异。架构分为四阶段:数据收集阶段使用Git命令提取Commit并分类为四级;Commit Diff分析阶段由AI代理并行评估兼容性影响;深度影响分析阶段在源码中grep追踪调用链;报告综合阶段生成结构化风险报告。工具采用11个专项Scanner覆盖配置项、Session Variable、协议、存储格式等维度,并实现集群配置冲突检测,根据用户实际配置文件精确评估风险。设计哲学偏好误报而非漏报,通过多层级扫描确保关键变更不遗漏。工具显著提升升级安全性,但存在Scanner精度有限、运行时行为无法检测等局限性。

本机暂存
IT 2026-06-14 05:11:01 / 累计浏览 103

硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复

本文记录了一次硬件故障后Oracle数据库数据文件大小异常的故障处理案例。硬件恢复后,dbv工具报DBV-00102错误,检查v$datafile_header发现USERS02-USERS05表空间文件头记录大小约8GB,但实际恢复文件仅4GB。初步排查RAID5配置正常,判断为文件系统层面损坏。采用自研OraScan碎片扫描工具从磁盘提取数据块,重建数据文件并通过dbv验证。替换原文件后执行recover database成功,但alter database open时因redo日志序列冲突报错ORA-03113。分析alert日志发现ora-00314错误,显示redo组不一致;鉴于recover已完成,清除异常redo组后数据库正常打开,最终导出数据。此过程突出了Oracle数据文件头检查、碎片扫描技术及redo日志管理在灾难恢复中的关键作用,为硬件故障后数据文件修复提供了实用方案。

本机暂存
IT 2026-06-14 04:40:55 / 累计浏览 77

如何在Hive SQL中构造临时表用于和其它的表做关联?

在Hive SQL处理数据关联时,针对少量uid-email映射数据,构造临时表是高效方案。本文介绍了两种主要方法:stack和union all。stack作为UDTF函数,能整齐生成二维映射,但必须通过lateral view展开以避免直接使用select列表导致的报错;而union all通过多次select拼接,兼容性强且易于手工增删。文章提供了完整代码示例,包括常见错误如stack报错及修正,并展示了如何与其它表进行join操作。此外,扩展讨论了不同规模ID关联的最佳实践:少量ID用IN子句,中等规模用stack或union all临时表,大规模或频繁复用则推荐上传文件或维护维表。这些方法优化了查询可读性和性能,适合数据工程师在临时分析或生产环境中参考。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 89

oracleasm createdisk破坏的acfs文件系统恢复

该案例涉及Oracle 12.2.0.1环境中,因误执行oracleasm createdisk命令导致ASM磁盘头被重置,进而使ASM磁盘组无法挂载,依赖ACFS的MySQL数据库服务中断。恢复过程首先使用kfed工具读取磁盘头信息,发现asmlib标记ORCLDISKDATA3,确认磁盘头破坏但未重建新磁盘组。通过分析alert日志,确认磁盘组配置为AU size 4M,并利用winhex验证了磁盘头备份和AU备份仍完好。直接还原AU备份后,CRS启动失败,进一步分析发现CRS磁盘的分区偏移量错误,源于磁盘分区问题。修复分区表后,重启CRS,所有服务自动恢复,数据零丢失。案例展示了在ASM环境中诊断磁盘头破坏、利用备份恢复以及处理分区错误的完整流程,强调了谨慎操作和备份验证的重要性。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 70

.[xueyuanjie@onionmail.org].AIR勒索加密数据库恢复

文章记录了Oracle数据库遭遇.[xueyuanjie@onionmail.org].AIR勒索加密后的恢复过程。数据库运行在Windows系统上,被加密破坏了前32个数据块,包括文件头和位图信息,但业务数据从block 128开始存储,未受影响。恢复开始时使用obet工具检测坏块,确认损坏范围。接着应用OraFHR工具快速重构文件头,该工具能一键生成恢复脚本。执行SQL命令启动数据库实例、重建控制文件,并通过alter database open resetlogs打开数据库。随后创建新表空间expdptbs,使用expdp导出数据完成恢复。案例展示了在数据未被完全加密的情况下,利用专业工具和标准SQL操作恢复数据库的关键步骤,对类似勒索软件攻击下的应急响应具有重要参考价值。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 70

OraScan(Oracle 碎片扫描工具) 使用说明

OraScan是由惜分飞自主研发的专业Oracle数据库碎片恢复工具,核心功能是扫描磁盘上未被覆盖的Oracle数据块,解决数据文件无法正常恢复的问题。该工具适用于多种紧急场景,包括文件系统损坏无法访问数据文件、误删除数据文件且操作系统工具无法恢复、断电或文件系统故障导致文件大小异常、小文件覆盖大数据文件,以及需要扫描磁盘上所有未被覆盖的数据块。环境适配方面,OraScan提供两个版本:OraScan_Net2.exe适用于.NET Framework 2.0/3.0/3.5,兼容Windows Server 2008及更早系统;OraScan_Net4.exe适用于.NET Framework 4.0及以上,兼容Windows Server 2012及更新系统。支持Oracle 9i及以后所有版本,数据块大小可选4k、8k、16k、32k,需与数据库实际块大小一致。使用流程分为多个步骤:首先选择扫描对象,可以是磁盘设备或镜像文件,注意扫描镜像时不要勾选“设备”选项;然后执行碎片扫描,设置块大小、偏移量等参数,扫描完成后自动生成scandata文件夹和Oracle_Block.map文件;接着加载并解析扫描结果,显示数据文件列表;最后可提取数据文件或碎片,提取前可能需要授权。工具还提供筛选功能,允许用户按文件号和block范围精准查找碎片。注意事项包括确保环境版本匹配、保留扫描生成文件、及时联系技术支持解决授权或操作问题。OraScan作为一款针对性强的恢复工具,在数据库故障恢复中具有实用价值,但使用需遵循步骤以确保恢复成功率。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 84

一次断电引起的Oracle故障恢复-ora-600 2662故障

本文详细记录了一次因断电引发的Oracle数据库故障恢复全过程。数据库在断电后异常,现场恢复未能成功打开库。作者接手后,尝试recover操作报ORA-16433错误,分析alert日志发现此前有强制OPEN RESETLOGS操作,但导致redo日志缺失并触发ORA-600 2662内部错误,该错误与系统变更号(SCN)不一致相关。恢复步骤包括:首先重建控制文件,但再次recover时遇到redo日志损坏(ORA-00353),媒体恢复失败。鉴于正常恢复路径受阻,决定强制打开数据库,并使用Patch_SCN工具调整SCN值至特定数值以解决ORA-600 2662问题。调整后数据库成功打开。随后在数据导出阶段,expdp命令遇到硬件错误,为安全起见切换至只读模式下使用exp工具,最终成功导出所有数据,完成恢复任务。此案例展示了处理断电导致的Oracle复杂故障的关键技术,包括日志分析、控制文件重建、SCN调整和数据导出等步骤。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 70

impdp报ORA-39083 ORA-14102错误处理

在Oracle数据库管理中,使用Data Pump的impdp工具导入数据时,可能遇到ORA-39083和ORA-14102错误。本文以实际案例为例,错误发生在将分区表从Oracle 11.2.0.4导出并导入到11.2.0.1版本时。导入过程中,表创建语句失败,提示“Object type TABLE failed to create”,原因是ORA-14102错误,即指定多个LOGGING或NOLOGGING子句。通过检查导出日志和使用DBMS_METADATA.GET_DDL获取DDL语句,发现源表的分区定义中每个分区都包含了NOLOGGING属性,而目标数据库版本不支持这种语法。具体来说,在11.2.0.1中,表级别和分区级别不能同时指定物理属性如NOLOGGING。为解决此问题,提供了两种方法:一是在导出时使用expdp的version参数指定目标版本为11.2.0.1,以生成兼容的DDL;二是在导入时使用impdp的TRANSFORM参数,设置segment_attributes:n来忽略段属性。文章还提到了其他相关错误和解决方案,如impdp创建索引时的ORA-00942错误和Oracle 12c中Data Pump的增强。此案例突出了数据库版本差异对导入导出操作的影响,并给出了具体的排查和修复步骤,对数据库管理员具有实用参考价值。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 97

Oracle故障第一现场被恢复混乱的数据库恢复

本文记录了Oracle数据库断电后因第三方恢复操作导致现场混乱的实战恢复过程。通过Oracle Database Recovery Check工具初步分析,发现数据库被强制resetlogs,三个数据文件丢失,数据文件头SCN不一致且在非归档模式下。恢复团队使用obet工具的get_dbinfo功能解析磁盘上所有.dbf文件头,识别出文件号重复,结合文件大小和SCN信息判断正确文件,确认两个丢失文件为undotbs1表空间文件,另一个为112k的小文件。文章通过SQL实验验证Oracle数据文件最小为16个block。恢复步骤包括:修改正常文件SCN,重建控制文件(丢弃损坏的undo文件),设置undo为manual管理并屏蔽回滚段,强制打开数据库时遇到ORA-600 2662错误,使用Patch_SCN工具调整SCN后成功打开数据库。最后,新建undo表空间、添加temp文件、删除旧undo对象,并导出数据完成恢复。案例突出了工具辅助、文件头分析和错误处理在复杂数据库恢复中的关键作用。

本机暂存
IT 2026-06-14 04:10:49 / 累计浏览 83

asm dd 10M导致system文件部分坏块修复

本文记录了Oracle数据库ASM磁盘头损坏的修复案例。客户因误用dd命令覆盖磁盘前10M数据,破坏了ASM元数据,导致DATA磁盘组无法挂载并报ORA-15042错误。通过19c版本的备份AU还原,磁盘组成功挂载,但ASM持续报ORA-15196块头校验错误,指示磁盘14存在损坏块。客户尝试添加磁盘触发Rebalance操作,但错误阻止了Rebalance执行,避免了磁盘组卸载。随后启动数据库时,system文件出现多个完全为零的坏块,涉及I_OBJ2索引和DEPENDENCY$表,报ORA-01578错误,导致启动失败。该案例展示了ASM存储故障的连锁反应,从磁盘头损坏到数据库文件损坏,突出了操作谨慎性和备份的重要性,并体现了Oracle 19c在错误处理上的改进。

本机暂存
IT 2026-06-03 09:03:24 / 累计浏览 65

Neko Master: 从 0 到 1K+ Star 的 Vibe Coding 实践

本文以开源自部署网络流量分析面板 Neko Master 为例,深入复盘了一次从零到一的“Vibe Coding”实践。项目始于作者对现有流量监控工具直观性与美观性的不满,旨在为家庭网络环境提供清晰的“流量感知”视角。开发初期,作者借助 Kimi K2.5 模型进行快速原型构建,一小时内便完成了核心功能的 MVP。项目上线后迅速获得社区关注,但也随之面临真实流量带来的严峻挑战。 文章的技术剖析聚焦于从“玩具”走向生产级的关键优化。首要难题是 SQLite 的磁盘 I/O 爆炸,原生每条记录单次写入导致日写入量高达 200GB。解决方案包括引入内存缓冲队列实现批量落盘、先聚合再写入以及写入限流,最终将写入量降至 1.6GB。在架构扩展上,为应对多网关、多 Agent 场景,项目引入了 ClickHouse。通过设计统一的批量写入窗口、按时间分区与常用维度排序、以及建立预聚合层,显著提升了查询的稳定性与响应速度。 作者系统总结了 Kimi、Claude Opus、CodeX 等 AI 工具在项目各阶段(原型搭建、性能调优、架构重构)的角色分工,并强调了通过提供视觉参考图(如 Dribbble 截图)来提升 AI 生成 UI 审美水平的方法。最终得出结论:Vibe Coding 极大地压缩了从 0 到 1 的开发时间,但将产品从 1 推向 100,诸如性能边界把控、架构决策、审美判断和用户需求理解等核心环节,依然依赖于人类工程师的经验与判断。

本机暂存
IT 2026-06-03 09:03:24 / 累计浏览 99

第六章:分区

传统主备复制架构存在扩展性瓶颈、单点故障和数据隔离等问题。为应对这些挑战,系统扩展分为垂直扩展与水平扩展。垂直扩展通过升级单机硬件实现,具有简单、一致性高的优点,但受限于物理上限且存在单点故障。水平扩展则通过增加服务器集群节点来分担负载,具备理论上的无限扩展性、高可用性和弹性伸缩能力,但引入了架构复杂性、数据一致性挑战及网络延迟等新问题。 因此,分布式系统常采用水平扩展中的“分区”策略,即将数据分摊到多个节点上,而非由所有节点存储全量数据。分区通常与复制技术结合,在保障数据分片的同时通过多副本提升容错性。引入分区后,系统需解决数据请求如何路由到正确分区、分区数据再平衡以及全排序操作支持等新挑战。后续内容将进一步探讨具体的分区策略、请求路由机制以及分区热点问题。

本机暂存
IT 2026-06-03 09:03:24 / 累计浏览 68

第七章 事务

本文探讨了分布式系统中复制、分区与事务三种核心技术的区别与协作。复制技术通过数据冗余实现高可用性,分区技术通过水平拆分提升系统可扩展性,二者主要解决数据层面的物理分布问题。然而,仅靠这两者无法保障数据操作在并发、故障场景下的逻辑正确性,这正是事务技术的核心作用。 事务旨在确保一系列操作要么全部成功,要么全部失败,从而维护数据的正确状态。文章通过转账操作、商品超卖及系统崩溃等典型场景,阐明了事务四大特性(ACID)的必要性:原子性保证操作全有或全无;一致性确保数据始终处于合法状态;隔离性防止并发事务相互干扰;持久性则确保已提交的数据在故障后不丢失。 在分布式环境下,由于网络不可靠、节点可能故障,跨多个服务的事务面临更大挑战。事务技术通过封装复杂性,为开发者提供了简洁的编程模型,将业务逻辑与底层的一致性、容错机制解耦,极大地提升了应用的可靠性与开发效率。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 99

如何在本地打包 StarRocks 发行版

本文针对 StarRocks 用户在等待官方版本发布周期时,需要快速应用修复 PR(如物化视图重启导致全量刷新、excluded_refresh_tables 参数跨数据库失效等)的场景,介绍了本地打包发行版的完整流程。核心方法是利用社区提供的统一 Docker 镜像(starrocks/dev-env-ubuntu)简化构建环境,避免复杂的本地环境配置。具体步骤包括:拉取对应版本的 Docker 镜像,克隆 StarRocks 仓库并手动合并修复代码到分支,将宿主机源码目录挂载到容器中运行构建脚本(build.sh)生成前端(FE)和后端(BE)的产物。构建完成后,推荐使用更稳妥的方式替换镜像:以官方 FE 镜像为基础,仅替换新生成的 starrocks-fe.jar 文件来构建修复版本的 Docker 镜像,从而确保运行时的兼容性和最小化镜像修改。整个过程依赖官方文档和 GitHub 资源,适用于需要紧急部署定制修复版本的运维和开发场景。

本机暂存