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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86900.shtml
英文地址,請注明出處:http://en.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…