![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle数据库专栏
文章平均质量分 84
介绍Oracle数据库底层逻辑,分享数据库故障经典案例
数据最前线
18年资深DBA,头部金融运营商行业数据库支持专家
展开
-
06 Oracle数据是怎么存储的
这篇文章介绍了数据在Oracle数据库中是如何组织和存储的,通过位图管理空间,规避了老版本中使用数据字典和自由链表方式引起的递归调用和并发争用问题,大幅提升了数据库的并发处理能力,是Oracle 9i之后推荐的管理方式。原创 2024-08-17 09:59:24 · 928 阅读 · 0 评论 -
05 锁是并发的天敌,为什么少不了它?
这篇文章中给大家介绍了Oracle数据库中几种典型锁的概念及其实现。Oracle中的锁遵循最小粒度的原则,尽量将加锁粒度控制在最小范围,避免影响其他事务的操作。加锁粒度尽可能小;读永远不会阻塞写,写也永远不会阻塞写;锁永远不会主动升级。这些特性现在看来都很普通,市面上主流的关系型数据库基本都支持这些特性。但是倒退20年,这些都是Oracle碾压其他数据库的杀手锏,Oracle之所以能成为数据库领域的No. 1,除了合理的市场策略外,这些精细的设计也是帮助其统治市场非常重要的因素!原创 2024-08-13 10:24:26 · 851 阅读 · 0 评论 -
04 Oracle事务是怎么练成的
事务是数据库管理系统执行过程的一个逻辑单位,由一系列有限的数据库操作序列构成,事务必须满足ACID属性。ACID理论是数据库中最重要的概念之一,分别代表原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生;一致性是指事务将数据库从一个一致的状态转移到另一个一致的状态,这意味着事务执行的结果必须符合所有预定义的规则和约束;原创 2024-08-09 12:04:32 · 863 阅读 · 0 评论 -
03 Oracle是如何保证数据不丢的
本篇文章给大家介绍了Oracle数据一致性的保障体系,在这个体系中,检查点是非常重要的环节,它定期将“脏数据"从内存写出到数据文件。由于数据库是持续运行的,没有绝对的一致性状态,因此检查点队列被设计成一个先进先出的链表,依次从检查点对列写出到数据文件中,完成数据的持久化。对于已经进入检查点队列但没有写出到数据文件的脏块,实例恢复时会通过在线日志前滚将已修改的数据恢复出来应用到数据文件中,从而保证数据的一致性。原创 2024-08-06 22:02:10 · 1008 阅读 · 0 评论 -
02 Oracle日志系统:一条SQL更新语句是如何执行的
在这篇文章中,我们以一条更新SQL的视角,给大家介绍了Oracle数据库是如何处理DML语句的。通过这个过程我们可以看到,所有变更操作都是在内存中完成的,这里的内存操作包括Redo Log Buffer中记录的数据操作日志和Buffer Cache中对数据块的变更。当用户确认提交后,会将Redo Log Buffer记录同步写出到在线重做日志文件,而Buffer Cache中被修改的数据块,则会放入到“脏块”链表,基于一定的机制异步写出到数据文件中。原创 2024-08-02 13:29:08 · 694 阅读 · 0 评论 -
01 Oracle基础架构:一条SQL查询语句是如何执行的
在这篇文章中,给大家介绍了从客户端发送一条SQL到数据库,经历了解析、绑定、执行和提取等几个阶段最终获取到相应的数据。其中,解析阶段因为涉及到执行计划的确定,成本非常高,为了实现一次解析多次执行的目的,Oracle又引入了绑定变量,将执行过程中的变量进行参数化处理,“欺骗”数据库认为都是相同的语句,从而避免了更多的硬解析。但是这种方式是“完美”的吗?又会给数据库的运行带来哪些问题?大家在使用数据库的过程中,又遇到哪些解析的问题?欢迎留言讨论!原创 2024-07-30 10:16:40 · 1016 阅读 · 0 评论 -
彻底搞懂Oracle直方图
Oracle直方图的概念相对复杂,涉及到的知识点比较多,通过一篇文章梳理不同直方图的生成原理和使用场景,帮助大家更好的理解和运用直方图解决实际生产问题。原创 2024-07-28 20:38:06 · 943 阅读 · 0 评论 -
12c sec_case_sensitive_logon 参数过期,密码验证需严格遵循大小写
Oracle 11g 开始,数据库密码默认区分大小写,但是提供了一个参数 – sec_case_sensitive_logon,使得11g的密码验证行为和之前相同(不区分大小写)。 但是在12c中,该参数已经被废弃,也就是说12c强制密码大小写验证。因此在上线前需要仔细检查应用系统密码,避免因为密码大小写问题导致登录失败。在设置 sec_case_sensitive_logon = fals...原创 2018-08-11 22:08:00 · 1650 阅读 · 0 评论 -
Oracle集群新特性竟然导致正常节点被踢出集群
按照正常的逻辑,节点2被踢出集群是预期行为,首先节点2已经出现操作系统夯住的异常,其次对于两个节点的集群,即使两个节点都没有明显的问题,Oracle也会优先保留id更小的那个,因此不论是什么情况节点2都会是被踢出集群的那个。和之前不同的是,这次的决策过程中提到了NodeWeights,系统使用节点2旧的权重进行集群决策,不凑巧的是节点2的权重比节点1的权重要高,因此把正常的节点1踢出了集群。事实上,几乎就在节点1将自己踢出集群之前的几秒钟,节点2的OS已经发生了重启,于是就发生了文前提到的那一幕。原创 2024-07-25 23:36:05 · 247 阅读 · 0 评论 -
再牛的数据库,也抗不住奇葩的SQL
客户的测试环境数据库频繁crash,而且据开发人员反馈是一条insert的SQL语句导致的。说实在话,随着Oracle数据库版本的演进,越来越少遇到宕机的案例,而这次竟然会因为一条insert导致实例崩溃,原创 2024-07-25 22:23:11 · 1028 阅读 · 0 评论