OceanBase (DBA)一面面经

1. Oracle高可用和ob高可用,和他们的实现方式?

2.ob的三副本了解吗,ob的三副本怎么保障强一致的?

3.三副本能实现强一致吗?

4.了解ob的数据协调协议吗?说说原理

5.聊聊Oracle,讲一些SQL调优的实际案例?

6.刚才聊到了分区表的分区裁剪,假如不调整谓词条件的情况下,有什么方法也能加速SQL?

7.并行了解吗,说一下并行的机制,怎么使用的?

8.为什么生产环境不推荐使用并行?主要对哪些资源有压力

9.redo是用来做什么的?Oracle select会写redo吗?

10.Oracle写入数据,讲一下数据落盘的过程。

11.RAC集群数据落盘的过程。

12.假如两个节点的RAC,比如一节点写了1,二节点会有什么操作?操作的顺序了解吗

13.介绍一下实习经历

14.OB三个节点如果宕机一个影响使用吗?宕机的过程中会有什么样的表现?

15.只有三个机器,一台宕机了,unit能迁移走吗?

16.现在正在往集群里面写入数据,宕机了一台,在业务端看来会有什么样的表现?



答案

1.Oracle高可用和ob高可用,和他们的实现方式?


 

数据库高可用方案实现原理
OracleRAC多节点共享存储,通过Cache Fusion同步内存数据。故障时秒级切换,应用透明。
OceanBase分布式Paxos协议数据分片(Partition)+三副本,基于Paxos协议实现多副本强一致,无共享架构。

2.ob的三副本了解吗,ob的三副本怎么保障强一致的?

每个数据分片(Partition)包含3个副本(Leader/Follower/Follower)。

写入流程:

强一致保证:仅当多数副本(≥2)持久化日志后,才向客户端返回成功。

3.三副本能实现强一致吗?

能,通过Paxos协议约束: 任何写入需多数副本确认(如3副本需≥2个确认)。网络分区时,少数派副本自动拒绝写入,避免脑裂。

4.了解ob的数据协调协议吗?说说原理

Multi-Paxos优化:

  • Leader选举: 通过Paxos协议选举唯一Leader处理写入。

  • 日志复制:Leader生成Redo日志并广播给Followers。

  • Followers持久化日志后返回ACK。

  • 收到多数ACK后,Leader提交并应用日志。

  • 日志回放: 所有副本按相同顺序应用日志,保障状态机一致性。

5.聊聊Oracle,讲一些SQL调优的实际案例?

SELECT * FROM sales WHERE TO_CHAR(sale_date,'YYYY-MM') = '2023-10'; -- 函数导致裁剪失效

优化:

SELECT * FROM sales WHERE sale_date BETWEEN DATE'2023-10-01' AND DATE'2023-10-31'; -- 直接范围查询

6.刚才聊到了分区表的分区裁剪,假如不调整谓词条件的情况下,有什么方法也能优化SQL?

  • 全局索引: 避免分区键限制。

  • 本地索引分区: 每个分区独立索引,加速扫描。

  • 统计信息更新: DBMS_STATS.GATHER_TABLE_STATS确保优化器准确选择分区。

  • SQL Profile: 使用SQL Tuning Advisor固定高效执行计划。

7.并行了解吗,说一下并行的机制,怎么使用的?

启用并行:

ALTER SESSION ENABLE PARALLEL DML;
SELECT /*+ PARALLEL(emp, 4) */ * FROM emp; -- 强制4个并行进程

资源控制:

PARALLEL_DEGREE_POLICY: 控制并行度策略(AUTO/MANUAL)。
PARALLEL_SERVERS_TARGET: 限制并行服务器数。

8.生产环境不推荐并行的原因

  • CPU: 并行进程争抢CPU,导致系统负载飙升。

  • I/O: 大量并行扫描引发存储吞吐瓶颈。

主要原因是CPU和IO,内存方面不是主要原因。

  • 内存: 每个并行进程消耗PGA内存,可能触发ORA-4030。

  • 锁竞争: 并行DML加剧锁冲突(如TX锁)。

9.redo是用来做什么的?Oracle select会写redo吗?

核心功能: 记录所有数据变更(DML/DDL),用于故障恢复。

SELECT语句不会直接生成redo日志,因为它们不修改数据库内容。但在维护读一致性、使用直接路径读取、执行递归SQL以及触发PL/SQL函数或数据库触发器时,可能会间接产生redo日志。

具体原因参考文章: select会写redo吗

10.Oracle写入数据,讲一下数据落盘的过程。

  1. 用户提交DML。

  2. 日志写入Log Buffer。

  3. LGWR将Log Buffer刷新到Redo Log文件(优先保证日志落盘)。

  4. DBWR将脏块从Buffer Cache写入数据文件(异步进行)。

11.RAC集群数据落盘的过程。

阶段关键组件工作流程设计目标设计目标设计目标
1. 数据块传递Cache Fusion1. 节点A修改数据块时,通过私网(Interconnect)将块副本传输给请求节点B2. GCS 跟踪块状态(CR/XD 模式)3. 块在内存间直接传递,避免磁盘 I/O减少共享存储访问提升并发性能
2. Redo 日志落盘ASM 存储1. 每个节点独立写入本地 Redo 日志线程2. 日志写入共享存储(ASM 磁盘组)3. 提交时强制刷盘(Commit = Log Written)确保事务持久性节点故障时恢复
3. 脏块写入DBWR 进程1. GCS 协调脏块刷盘顺序2. 持有最新版本的节点执行写盘3. 写入共享数据文件(ASM)保证数据一致性减少写冲突
4. 全局一致性GCS + GES1. GES 管理全局锁(如 TX 锁)2. GCS 协调块访问权3. 通过块版本号解决冲突跨节点读一致性 写操作串行化

12.假如两个节点的RAC,比如一节点写了1,二节点会有什么操作?操作的顺序了解吗


 

场景:节点1写入数据块A(值为1)

  1. 节点1持有A的Exclusive锁。

  2. 节点2请求修改A:

  3. 通过GCS向节点1请求块副本。

  4. 节点1将A的当前版本+锁信息传递给节点2。

  5. 节点2在本地缓存中修改A,生成Redo日志并落盘。

  6. 节点2通过GCS广播块变更信息。

13.介绍一下实习经历

省略

14.OB三个节点如果宕机一个影响使用吗?宕机的过程中会有什么样的表现?


 

  • 宕机一个节点:

无影响: 剩余2节点满足多数派(2/3),服务正常。

Leader切换: 宕机节点若含Leader副本,5秒内自动选举新Leader。

  • 宕机过程表现:

客户端连接该节点的会话断开(需重试)。 其他节点短暂写入延迟(Paxos重新协商)。

1.如果是三个单zone单observer是一份数据。如果某OBServer挂掉了,且超过 server_permanent_offline_time时间限制会永久下线,需要把这个单zone单observer下掉。重新部署上去。

2.如果是三个单zone多observer,且primary_zone 为 RANDOM 时,ob数据是以分布式存储的(以分区形式来的,按分区的粒度自动均衡到不同的OBServer节点,打散数据)

15.只有三个机器,一台宕机了,unit能迁移走吗?


 

  • 当某个OBServer节点挂掉时:

多副本机制:ob通常会在不同的OBServer上存储数据的多个副本(通常是3个副本)。这意味着即使一个节点失败,其他节点上仍然有数据的副本。

数据同步:在节点恢复后,ob会自动同步该节点上的数据,确保所有节点上的数据副本保持一致。

在官网论坛上找到的,所以结论应该是没有迁移走。。

16.现在正在往集群里面写入数据,宕机了一台,在业务端看来会有什么样的表现?


 

  • 客户端视角:

短时报错(如Connection reset),持续约1-5秒。

自动恢复: OBProxy 自动重试请求到新Leader。

  • 数据一致性:

已提交的数据不丢失(多数副本已持久化)。

未提交的事务自动回滚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch框架详解(1)

目录 代码会放在每条解释的后面 一.概念: 2.张量的概念: 3.张量的创建 4.张量的数据类型及转换 二.tensor和numpy互转 三.张量的运算 四.索引的操作 五.张量形状操作 维度交换: 六.张量拼接操作 代码会放在每条解释的后面 一.概念…

Spring Boot 与 Kafka 的深度集成实践(一)

引言 ** 在当今的软件开发领域,构建高效、可靠的分布式系统是众多开发者追求的目标。Spring Boot 作为 Java 生态系统中极具影响力的框架,极大地简化了企业级应用的开发流程,提升了开发效率和应用的可维护性。它基于 Spring 框架构建&#…

PIN to PIN兼容设计:MT8370与MT8390核心板开发对比与优化建议

X8390 是基于联发科 MT8390 CPU 的一款开发板, MT8390 与 MT8370 是 PIN to PIN 的封装,可以共用一个核心 板。 MT8390 (Genio 700) 是一款高性能的边缘 AI 物联网平台,广泛应用于智能家居、交 互式零售、工业和商业等领域。它采用…

【论文解读】START:自学习的工具使用者模型

1st author: ‪Chengpeng Li‬ - ‪Google 学术搜索‬ paper: [2503.04625] START: Self-taught Reasoner with Tools code: 暂未公布 5. 总结 (结果先行) 大型语言推理模型(Large Reasoning Models, LRMs)在模拟人类复杂推理方面取得了显著进展&…

【GitOps】Kubernetes安装ArgoCD,使用阿里云MSE云原生网关暴露服务

🌟 ArgoCD是什么? ArgoCD是一款开源的持续交付(CD)工具,专门为Kubernetes环境设计。它采用GitOps理念,将Git仓库作为应用部署的唯一真实来源(SSOT),实现了声明式的应用部署和管理。 简单来说,ArgoCD就像是一位不知疲倦的"仓库管理员",时刻盯着你的Git仓库,…

三维重建 —— 1. 摄像机几何

文章目录 1. 针孔相机1.1. 针孔成像1.2. 光圈对成像的影响 2. 透视投影相机2.1. 透镜成像2.2. 失焦2.3. 径向畸变2.4. 透视投影的性质 3. 世界坐标系到像素坐标系的变换4. 其它相机模型4.1. 弱透视投影摄像机4.2. 正交投影摄像机4.3. 各种摄像机模型的应用场合 课程视频链接&am…

Linux基本指令(包含vim,用户,文件等方面)超详细

文章目录 Linux 基本指令前序Vim编辑器分为两种设计理念模式转化指令解释 Normal模式移动光标(motion 核心)常用指令 动作(action)常用指令将动作与移动进行组合 查找(正则表达式)替换(substitude)文本对象…

如何彻底删除Neo4j中的所有数据:完整指南

如何彻底删除Neo4j中的所有数据:完整指南 Neo4j作为领先的图数据库,在某些场景下我们需要完全清空数据库中的所有数据。本文将介绍多种删除Neo4j数据的有效方法,涵盖不同版本和部署方式的操作步骤。 一、Neo4j数据删除的常见需求场景 开发…

Keil无法下载程序到STM32 Error: Flash Download failed - Target DLL has been cancelled

背景 Keil通过st-link v2连接STM32,下载报错 Error: Flash Download failed - Target DLL has been cancelled 我有多台STM32需要下载程序,会出现这个问题 原因 应该是Keil保存了设备的相关信息,当换了设备之后下载就会出错 解决办法 断…

CIM和建筑风貌管控平台

2025年的雄安新区,中央绿谷的碧波倒映着现代建筑群,中国星网总部大厦的曲面幕墙与古风飞檐相映成趣。这座“未来之城”的每一处建筑肌理,都离不开一项关键技术——城市信息模型(CIM)与建筑风貌管控平台的支撑。从雄安到…

REBT 分类任务中,`loss`(损失值)和 `logits`(原始预测分数)是什么

REBT 分类任务中,loss(损失值)和 logits(原始预测分数)是什么 在分类任务中,loss(损失值)和 logits(原始预测分数)的含义及计算逻辑可以通过具体示例清晰解释。以下结合你提供的数值(loss=0.7478,logits=[-0.1955, -0.3021])进行说明 一、logits 的本质:未归一化…

6月13日day52打卡

神经网络调参指南 知识点回顾: 随机种子内参的初始化神经网络调参指南 参数的分类调参的顺序各部分参数的调整心得 作业:对于day41的简单cnn,看看是否可以借助调参指南进一步提高精度。 用“烧水调温”的日常场景来打比方: 每个…

穿越时空的刀剑之旅:走进VR刀剑博物馆​

VR 刀剑博物馆不仅仅是一个展示刀剑的场所,更是文化传承与教育的重要基地,在弘扬刀剑文化、增强民族文化认同感以及开展教育活动等方面发挥着不可替代的重要作用。​ 从文化传承的角度来看,刀剑文化源远流长,它承载着不同国家、不…

基于GA遗传优化的PID控制器最优控制参数整定matlab仿真

PID(比例-积分-微分)控制器是工业控制领域中最常用的控制器之一。通过调节PID控制器的三个参数:比例(Kp)、积分(Ki)和微分(Kd),可以实现系统的稳定控制。然而…

华为OD最新机试真题-上班之路-OD统一考试(B卷)

题目描述 Jungle 生活在美丽的蓝鲸城,大马路都是方方正正,但是每天马路的封闭情况都不一样。地图由以下元素组成: .—空地,可以达到 *—路障,不可达到; S—Jungle的家。 T—公司;

大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点

在数字化向智能化跃迁的时代浪潮中,大模型技术正驱动企业数据分析模式迎来颠覆性变革。传统自助式BI工具主导的数据分析模式,虽在降低分析门槛、提升报表开发效率层面发挥了一定作用,但随着数据应用场景的深化,其指标固化、响应滞…

(Note)基于Pytorch手搓RNN参考

Coding a Recurrent Neural Network (RNN) from scratch using PytorchPyTorch RNN from Scratch - Jake Taelearning pytorch 3: coding an RNN, GRU, LSTM | Kaggle

《网络安全与防护》知识点复习

✅ 一、网络安全基础(CIA / AAA / 安全服务) 概念快速记忆CIA 三元组机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)安全服务(OSI)鉴别…

编译,多面体库

1) barvinok是一个用于计算整数点数的库 在参数和非参数多面体以及投影中 这样的集合。 对于参数多面体,计数由以下任一表示 显式函数或生成函数。 第一种是分段阶跃多项式的形式。 这是Ehrhart拟多项式的推广 以及向量分割函数。 第二个是Ehrhart级数的…

Kotlin基础语法一

语言声明变量与内置数据类型 var:数据可变 val: 数据不可变 内置数据类型 String 字符串 Char 单字符 Boolean true/false Int 整形 Double 小数 List 集合 Set 无重复的元素集合 Map 键值对的集合 Kotlin语言的类型推断 val info : String "Hello KT&quo…