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

数据库

共 1099 篇文章

IT 2012-04-22 14:53:50 / 累计浏览 5,532

查看oracle数据库用户下的所有空表

这篇讲的是在Oracle数据库中,如何高效找出某个用户下所有没有存储数据的空表。作者从实际运维需求出发——清理无用对象、优化存储或排查问题时,常常需要快速定位这些“壳”表。文章没有停留在简单的`SELECT`语句上,而是对比了几种实用路径。 核心方案包括直接查询数据字典视图`DBA_TABLES`(或`USER_TABLES`),利用`NUM_ROWS`为0且无统计信息来初步筛选,但也指出了其局限性:`NUM_ROWS`统计信息可能未收集或不准确。更可靠的方法是结合`DBA_SEGMENTS`,检查表是否占用任何数据段,有段分配的才是真正有数据的表。文章还提到了编写一个PL/SQL脚本循环检查,或使用`DBMS_SPACE`包进行精确判断,这些方法虽然稍复杂,但结果最准确。 关键差异在于效率与准确性的权衡:简单视图查询速度快,但可能误判;段检查和脚本虽然耗时,但结果精确。文章最终建议,对于大型数据库,优先使用段级检查;对于快速排查,可辅以视图查询,并定期收集统计信息以保证其有效性。这种从问题场景到多种解法的梳理,对DBA和开发人员日常清理工作很有参考价值。

本机暂存
IT 2012-04-22 14:48:01 / 累计浏览 2,250

执行计划中常见index访问方式

这篇讲的是通过一系列针对单表单索引的测试,系统总结了Oracle数据库中几种常见的Index访问方式。作者从实际的执行计划出发,用不同的hint组合,模拟了Oracle执行计划中几种典型的index访问路径。 测试核心聚焦于Hint对优化器选择索引访问方式的直接影响。文章展示了在相同数据和索引条件下,使用不同hint(如`INDEX`、`INDEX_FFS`等)后,执行计划中的代价、成本以及具体的I/O读取方式会发生怎样的变化。 有趣的是,文章没有去深究为什么每种路径的IO和成本会呈现这样的结果,而是直接给出了不同hint下的统计对比。它更像一份精心准备的“实验报告”,通过具体的执行计划统计,直观展示了hint对优化器选择index访问方式的直接影响。 其价值在于,它把经常让人困惑的`INDEX FULL SCAN`与`INDEX FAST FULL SCAN`等概念,放到了一个可观察、可对比的实验场景里。对于想理清“hint如何改变索引使用方式”这一具体问题的开发者,这份实测数据提供了一个清晰的参考起点。

本机暂存
IT 2012-04-19 23:46:44 / 累计浏览 3,437

开源项目MySQL数据库Syncer简介——异构数据源复制

作者在实际开发中遇到了MySQL数据同步到MongoDB、Redis等异构数据库的需求,发现这类问题在身边不少朋友那里同样存在。于是,他将相关代码整理并规范化,最终形成了一个通用的开源服务——MySQL Syncer。 这篇讲的正是这个项目。它核心解决的是当数据写入MySQL后,如何高效、可靠地复制到不同的数据存储系统(即异构数据源)的问题。文章从作者亲身经历的痛点出发,介绍了将个人解决方案演进为通用工具的过程。对于有类似数据同步需求的开发者来说,这个项目提供了一个直接可用的思路和工具。

本机暂存
IT 2012-04-19 23:42:40 / 累计浏览 19,656

阿里巴巴离职DBA 35岁总结的职业生涯

这篇讲的是一位前阿里巴巴数据库团队成员,在离职时对自己整个技术生涯的回溯与思考。作者的职业起点并不高,从职专毕业却怀揣着“做中国比尔·盖茨”的梦想,经历过早期创业的风光与破灭,也辗转于糕点学徒、帮厨等与技术无关的岗位,但从未停止对数据结构等底层知识的自学。 文章重点刻画了两个关键节点:其一是为了抢占“先机”而投入三年钻研VRML技术,最终证明是押错了宝,这让他深刻领悟到“不要刻意追求快,欲速则不达”;其二是在事业单位沉浮七年后,最终抓住了数据库这一领域,一路成长为阿里的高级DBA。文中将技术人生的选择与十五年前看的《泰坦尼克号》做比喻,探讨了与哪门技术“走到职业生涯的终点”这一命题。 从雨中走出阿里园区的离职时刻回望,文章不仅是一个技术人的励志逆袭故事,更包含了对技术热点判断、职业路径规划以及梦想与现实平衡的诸多坦诚剖析。作者用个人经历验证了,在漫长的技术生涯里,持续学习与找准一个扎实方向,远比投机押注更为可靠。

本机暂存
IT 2012-04-19 23:38:08 / 累计浏览 2,427

ASM HEADER 备份与恢复

这篇文章关注的是ASM(自动存储管理)中一个容易被忽视却可能导致严重故障的环节:ASM HEADER的备份与恢复。作者从实际遇到的几次生产环境故障切入——ASM HEADER损坏导致DATA GROUP无法正常MOUNT,进而使数据库停服,带来了巨大的排查和恢复成本。问题根源往往在于缺乏有效的HEADER备份预案。 文章的核心内容在于提供了两种经过验证的备份与恢复方案。作者通过实验详细演示了如何使用操作系统底层的`dd`工具,以及Oracle专为ASM设计的`kfed`工具,来分别完成ASM HEADER的备份与恢复操作。这两种方法各有特点,`dd`更直接通用,而`kfed`则更为专用和安全。 对于使用ASM作为存储架构的DBA和运维人员来说,这是一次重要的经验提醒。ASM HEADER如同数据分区的“身份证”,其损坏虽然不常见,但一旦发生就是灾难性的。文章敦促读者立即检查自己环境的ASM HEADER是否已妥善备份,避免“事后后悔”。掌握文中介绍的这两项技能,相当于为关键数据库存储增添了一份关键的保险。

本机暂存
IT 2012-04-19 23:35:10 / 累计浏览 1,422

2012年数据库技术大会感悟

这篇讲的是作者参加2012年数据库技术大会后的深度思考。文章没有停留在简单的会议流程回顾,而是敏锐地捕捉到了当时数据库领域正经历的一场深刻变革。 作者指出,那一年的大会现场,关于NoSQL的讨论热度已从“是否要用”转向了“如何用好”,而更具颠覆性的NewSQL理念则崭露头角。文章重点剖析了这两种思潮背后的核心矛盾:前者为了极致的可扩展性和灵活性,往往需要在一致性上做出妥协;后者则试图借助新型分布式架构,在保证ACID事务的前提下重新定义可扩展性。作者通过现场听到的多个互联网公司案例,具体说明了这种技术选型背后的业务场景权衡——哪些业务适合用MongoDB或Cassandra来快速迭代,哪些核心交易系统又必须倚重新一代分布式数据库来保障强一致性。 文章最后的启发在于,技术选型从来不是非此即彼的替代,而是根据业务阶段和数据特性的组合与演进。十年后的今天回看,这种“混合持久化”的架构思想,依然是大多数系统设计的基石。

本机暂存
IT 2012-04-19 23:28:42 / 累计浏览 1,684

利用scn增量备份实现数据库增量恢复

这篇讲的是如何在 Oracle 11g 数据库中,利用基于 SCN 的增量备份策略来实现精准、高效的数据库恢复。 在生产环境中,数据恢复的核心挑战往往在于备份策略的选择。传统的全量恢复虽然可靠,但耗时漫长,可能影响业务连续性。文章针对这一痛点,详细介绍了利用系统变更号 (SCN) 作为精确恢复点的方法。作者从 Oracle 11g 企业版的环境出发,展示了如何使用 RMAN 工具,通过指定特定的 SCN 来执行增量恢复操作。 这种方法的核心在于,它允许管理员将数据库状态精确地恢复到全量备份之后的某个关键时间点,而无需回放全部的归档日志。摘要中体现了文章的具体技术点,比如基于 SCN 的恢复命令和操作逻辑,其巧妙之处在于将恢复粒度从“时间点”细化到了“事务点”,极大地减少了数据丢失窗口,并提升了恢复速度。最终,这种技术方案为需要灵活应对各类数据误操作或逻辑错误的 DBA 提供了一种强有力的保障工具。

本机暂存
IT 2012-04-19 23:25:38 / 累计浏览 2,336

DB2日志参数介绍和修改归档模式

这篇讲的是DB2数据库中日志管理的关键配置细节。作者直接从实际操作的命令输出出发,展示了一系列核心的日志参数,例如控制日志缓冲区大小的LOGBUFSZ、定义主日志文件数量的LOGPRIMARY,以及决定日志文件尺寸的LOGFILSIZ。 文章的重点不仅在于解释这些参数的含义,更在于如何修改它们以启用归档模式。作者通过具体案例,指出需要关注LOGRETAIN和LOGARCHMETH1这两个参数的设置,将它们从默认的OFF状态进行调整。这通常涉及到将日志保留方式改为循环或归档,以及指定日志归档的目标路径。 理解并正确配置这些参数,对于确保数据库的可恢复性和实现日志的备份与归档至关重要。文章为DBA提供了一份清晰的参考清单,说明了从查看当前配置到实施必要更改的完整路径,有助于在生产环境中建立健壮的日志管理策略。

本机暂存
IT 2012-04-12 13:26:09 / 累计浏览 1,437

oracle 9i数据库存在大量ora_j0**进程

这篇讲的是一个Oracle 9i数据库在实际运维中遇到的典型故障。作者发现数据库系统中突然涌现大量名为ora_j0**的后台进程,这些是Oracle作业调度(Job Scheduler)相关的进程。异常的进程数量不仅占用宝贵的系统资源(CPU、内存),更预示着作业调度系统可能陷入了混乱,例如作业未正常退出、调度频率设置错误或依赖的服务中断。 文章深入排查了问题的根因,详细记录了如何通过查询数据字典视图(如DBA_JOBS、DBA_SCHEDULER_JOBS)来定位异常作业,分析其运行状态与错误日志。针对这一问题,作者给出了清晰的解决步骤:包括强制终止僵死进程、修正作业定义、重置调度器状态,并最终通过一系列配置优化来防止问题复发。 对于使用Oracle旧版本进行关键业务支撑的DBA或运维人员来说,这篇文章提供了一个完整的故障诊断与处理案例,其排查思路和具体命令操作具有直接的参考价值。

本机暂存
IT 2012-04-09 13:45:55 / 累计浏览 3,308

防火墙、DCD与TCP Keep alive

这篇讲的是网络连接管理中的一个经典陷阱:为什么长连接会莫名断开?作者从自己早年处理Oracle连接超时的经验切入,指出许多应用在复杂网络环境下频繁掉线,背后往往是防火墙或负载均衡器在静默“清理”空闲TCP连接。 文章核心对比了三种应对机制:一是调整防火墙策略(允许更长的空闲超时),但往往受限于网络安全策略;二是数据库层的DCD(Dead Connection Detection),它依赖数据库自身的探测与超时设置;三是TCP Keep Alive,通过操作系统内核的探活包来维持连接。作者细致分析了它们在检测时机、配置灵活性以及资源消耗上的关键差异。 尤其值得注意的是,文中强调了在实际调优时需要根据业务特性做权衡:对延迟敏感的应用可能需要更短的探测间隔,而高并发场景则需考虑探活带来的额外开销。文章不仅解释了问题根因,也给出了清晰的选型思路,对于运维、DBA和后端开发在设计高可用服务时,提供了非常具体的参考。

本机暂存
IT 2012-04-09 13:44:54 / 累计浏览 3,147

如何在Oracle 10g和11g上收集crs日志

Oracle RAC环境的故障诊断常常令人头疼——CRS日志散落在多个节点、多个目录下,手动收集既繁琐又容易遗漏关键信息。这篇讲的正是如何系统化地解决这个痛点。 文章聚焦Oracle 10g和11g版本,直接切入CRS日志收集的实际操作。作者指出,虽然日志分布复杂,但Oracle官方其实提供了一个简洁高效的脚本,堪称“居家旅行必备”。通过调用这个脚本,管理员可以一次性抓取所有相关日志,避免了逐目录翻找的低效和风险。 文章的核心价值在于将这个实用工具从文档深处提取出来,并明确了其在两个主流版本中的适用性。它没有泛泛而谈理论,而是给出了一条可立即执行的路径,让面对RAC诊断难题的DBA能快速定位问题根源。对于需要维护Oracle集群的工程师来说,这相当于在工具箱里常备了一个顺手的诊断利器。

本机暂存
IT 2012-04-09 13:42:45 / 累计浏览 2,363

DRM引起的问题解决一例

这篇讲的是Oracle RAC环境中一类隐蔽的性能故障。客户系统平时运行平稳,但会周期性地“闹脾气”:前台操作明显变卡,后台监控显示CPU使用率和系统负载突然飙升,几分钟后又自行恢复,像是系统在短暂“发烧”后自动退烧。 问题根源指向了Oracle RAC的分布式资源管理组件(DRM)。当RAC集群进行实例间资源协调时,DRM的相关操作(如数据块主节点的重新映射)在特定条件下会引发额外的、不必要的内部开销,从而导致可感知的性能波动。文章详细记录了从现象观察、日志分析到最终定位DRM为“元凶”的全过程。 作者不仅解释了问题的技术机理,更分享了实际的解决方案——如何通过调整相关参数来规避DRM的激进行为,在保障集群功能的同时,平息这种间歇性的性能起伏。对于管理Oracle RAC、尤其是遭遇类似“阵发性”性能问题的DBA和系统工程师来说,这次故障排查的思路与处置措施,提供了一次很有价值的实战参考。

本机暂存
IT 2012-04-09 13:42:24 / 累计浏览 2,369

Hint的常见错误使用方式

这篇讲的是Oracle数据库中Hint工具的常见错误使用方式。作者从实际运维经验出发,指出许多DBA在追求快速解决问题时,容易陷入过度依赖Hint的陷阱。例如,通过Hint强制指定执行计划可能短期内见效,但当数据分布或索引结构变化后,固定的计划反而会成为性能瓶颈。 文章分析了几个典型场景:比如用/*+ INDEX */ Hint覆盖优化器选择,却忽略了全表扫描可能更高效的时机;或者在Outline中错误绑定Hint,导致后续SQL无法适应硬件升级。作者强调,Hint本是精细调控的工具,滥用会破坏优化器的自主决策能力。 对于如何正确使用,文中建议将Hint作为最后手段,并配合Outline、Profile等工具进行计划管理。最终目的是让DBA理解优化器的工作逻辑,而非用Hint掩盖设计缺陷。

本机暂存
IT 2012-04-09 13:41:54 / 累计浏览 2,437

ASM的优点总结–关于日志文件调整

这篇讲的是ASM(Automatic Storage Management)在数据库日志文件调整中的实用优点。当数据库出现日志切换频繁、事务等待LGWR写入或归档延迟等问题时,调整日志组成为维护性能的关键。作者从这些日常挑战出发,展示了ASM如何通过规范日志成员命名和日志组编号,让管理变得简单直观。 文章结合具体场景,比如通过SQL查询v$logfile和v$log视图来监控日志状态(如出现STALE或CURRENT状态),并演示了使用alter database add logfile命令添加新日志组的操作。这些细节体现了ASM在自动化存储管理中的便利性,使得管理员能快速响应日志问题,避免系统阻塞。 总的来说,ASM不仅简化了日志文件的维护流程,还通过标准化命名和集中管理,提升了数据库的稳定性和可维护性。对于DBA来说,这是一种高效应对存储挑战的方法。

本机暂存
IT 2012-04-09 13:41:11 / 累计浏览 3,361

异构数据库复制解决方案-HVR

这篇文章讲的是一位曾深耕于Oracle Goldengate技术的作者,对另一款异构数据库复制工具HVR的评测与看法。 作者从自身经验出发,先梳理了当前异构复制的常见路径,如基于JDBC的程序同步或利用触发器、Oracle Stream等。随后重点聚焦于市场主流的Oracle Goldengate,肯定了其强大的日志解析与跨平台能力。但文章的核心笔墨,落在了另一款名为HVR的产品上。 作者指出,HVR在原理上与Goldengate类似,同样支持主流数据库的日志挖掘与实时同步。其最大的竞争优势在于:**更低的成本、更直观的操作界面,以及对DDL复制和双向复制提供了更便捷的支持**,无需像Goldengate那样进行复杂的脚本配置。文章也客观提到了HVR在国内案例较少(仅列举了广东公安的案例),可能与其市场布局有关。 最终,作者基于近期的亲自测试,给出了“还是不错的”这一结论,为有异构复制需求,特别是看重易用性和成本的团队,提供了一个值得关注的备选方案参考。

本机暂存
IT 2012-04-09 12:25:19 / 累计浏览 1,555

ORA-1555错误解决一例

这篇文章从一个实际案例出发,探讨了如何解决 Oracle 数据库中经典的 ORA-01555 快照太旧错误。作者首先解释了这一问题的根源:它本质上是一个读一致性问题,通常发生在长查询尝试读取已经被其他事务修改并提交的数据时,而原数据所在的回滚段(undo segment)信息因空间压力或自动管理策略被覆盖。虽然从 Oracle 9i 引入自动 undo 管理后该错误已大幅减少,但在特定场景下仍会重现。文章没有停留在理论分析,而是详细记录了定位问题的排查过程——从分析报错时间点的系统负载、SQL 执行计划,到追溯特定长事务的 undo 生成量,并最终通过调整 undo 保留时间参数与优化特定批量作业的提交频率,给出了一个兼顾系统性能与稳定性的综合解决方案,对 DBA 日常维护具有直接的参考价值。

本机暂存
IT 2012-04-09 12:24:59 / 累计浏览 2,075

ORA-04031案例一则

这篇讲的是一个令DBA头疼的经典错误:ORA-04031。文章从几乎每位专业DBA都可能遭遇的这个现象切入,剖析了当Oracle进程向系统全局区(SGA)申请内存失败时触发该错误的机制,并指出绝大多数情况发生在共享池内存分配环节。 文章并未停留在理论,而是直接展示了一个真实的报错现场,包括精确到字节的申请失败记录、特定的对象与堆信息。这种从具体案例出发的叙事,为理解问题成因提供了清晰的锚点。作者通过这个实例,很可能深入探讨了导致共享池内存不足的常见原因,例如SQL解析负载、未绑定的游标或是池配置不当,并分享了相应的排查思路与优化方案。 对于需要维护Oracle数据库稳定性的读者来说,这篇文章的价值在于它从一个具体的“坑”出发,将抽象的错误代码转化为可观测、可分析的实际问题。

本机暂存
IT 2012-04-09 12:21:21 / 累计浏览 2,619

hint指定index的深入理解

这篇讲的是MySQL优化器在索引选择上的一个关键干预手段:hint指定index。作者没有停留在语法表面,而是从实际查询出发,演示了当优化器基于代价估算模型做出的自动选择并非最优时,如何通过hint“拨乱反正”。 文章深入对比了hint强制索引(FORCE INDEX)与建议索引(USE INDEX)的核心差异。前者是强制覆盖,无视其他更优路径;后者则是推荐,优化器仍可评估并拒绝。作者通过几个典型场景揭示了各自的利弊:在需要绝对保证特定索引被使用的高并发或复杂查询中,FORCE INDEX是利器,但也带来了后续索引维护或数据分布变化后可能失效的风险;而USE INDEX更像一种温和的建议,适用于探索性优化。 更巧妙的是,文章指出了hint的本质是“告诉优化器你所知道的信息”,比如数据倾斜的分布,从而弥补基于统计信息的代价估算可能存在的偏差。最终结论并非一味推崇hint,而是强调理解其适用边界——它是一把精准的手术刀,而非万能的锤子,用对地方才能让查询路径稳定可靠。

本机暂存
IT 2012-04-07 15:04:59 / 累计浏览 2,167

PostgreSQL参数优化对比性能测试

这篇讲的是作者通过实测对比,拆解几个关键PostgreSQL参数对查询性能的实际影响。文章没有停留在理论,而是搭建了测试环境,针对 `shared_buffers`、`work_mem`、`effective_cache_size` 等核心参数,设计了不同的配置组合,并用 `pgbench` 等工具跑出了具体的TPS(每秒事务数)和延迟数据。 作者发现,盲目调大内存参数并不总是带来线性提升。例如,`work_mem` 设置过大会显著增加复杂查询的排序速度,但并发上升后反而可能因内存竞争导致整体吞吐下降。而 `effective_cache_size` 的设置,需要更贴合实际服务器的物理内存与磁盘缓存能力,才能让查询规划器做出更优的索引选择。 这些结论直观地说明了参数调优中“权衡”的重要性。文章提供的对比数据和场景分析,对于正在面对慢查询、或是准备进行数据库初始化的运维和开发人员来说,能直接帮助理解每个参数的实际作用边界,避免陷入“参数越大越好”的误区。

本机暂存
IT 2012-04-07 15:03:17 / 累计浏览 4,180

MHA自动Failover过程解析

当MySQL主库意外宕机,如何在几十秒内自动选出新主库并保障数据零丢失?这正是MHA(Master High Availability)的核心使命。这篇文章从作者的初步学习与模拟测试出发,拆解了MHA这套经典高可用方案的自动Failover内部过程。 作者并未依赖线上实战,而是通过人为模拟节点故障,并紧密分析切换期间产生的各类日志,像侦探一样回溯MHA在幕后执行的每一个关键步骤。文章详细描述了从故障检测、日志差异补偿,到最终选举出新主库的完整链条,揭示了其如何尽可能在自动切换中最大化数据一致性。 虽然作者谦称“没有具体实战经验”,但这种基于日志的逆向解析,恰恰将MHA优雅的切换逻辑清晰地呈现在读者眼前。对于希望理解数据库高可用机制“黑盒”内部运作的工程师而言,这种剖析方式比单纯的操作手册更具启发性。

本机暂存