面試 Oracle 開發或 DBA 職位,扎實的理論基礎與實戰經驗是敲門磚。本文整理高頻面試題,按 SQL Tuning、資料庫基本概念、備份恢復、系統管理、綜合開放題 五大類別分類,助你查漏補缺、臨陣磨槍。
一、SQL Tuning 類 —— 核心硬功夫
- 列舉表連接方式(Nested Loop、Hash Join、Sort Merge Join)及適用場景。
- 無第三方工具下,如何查看執行計畫?(
EXPLAIN PLAN、DBMS_XPLAN.DISPLAY、AUTOTRACE、V$SQL_PLAN)。
- CBO 與 RBO 差異?如何啟用/控制 CBO?(統計資訊、
OPTIMIZER_MODE、Hint)。
- 如何定位高消耗 SQL?(
V$SQL、V$SQLAREA、AWR/Statspack 報告、SQL_TRACE + TKPROF)。
- 如何追蹤特定 Session 的 SQL?(
DBMS_MONITOR、DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION、EVENT 10046)。
- SQL 調整最關注什麼?(邏輯讀/一致性獲取、執行計畫存取路徑、索引使用效率)。
- 索引結構(B-Tree、Bitmap)、對 DML 影響、為何提升查詢效能?
- 用索引查詢一定較快嗎?(否:選擇率高、隱式轉換、函數運算導致索引失效、全表掃描更優等)。
- 綁定變數優缺點?(優:共用 Cursor、減少 Hard Parse;缺:窺探導致計畫不穩、直方圖誤判)。
- 如何固定執行計畫?(SQL Profile、SQL Plan Baseline/Stored Outline、Hint、
OPTIMIZER_USE_SQL_PLAN_BASELINES)。
- 8i/9i 排序記憶體與臨時表空間調整差異?(
SORT_AREA_SIZE vs PGA_AGGREGATE_TARGET、WORKAREA_SIZE_POLICY)。
- 分頁查詢:表 T(a,b,c,d) 依 c 排序取 21-30 筆 SQL 寫法(
ROW_NUMBER() OVER 或巢狀 ROWNUM 寫法)。
二、資料庫基本概念類 —— 根基要穩
PCTUSED / PCTFREE 含義與作用(空間管理、行遷移/鏈接控制)。
- Table / Segment / Extent / Block 階層關係。
- Tablespace 與 Datafile 關係(邏輯 vs 物理、一對多)。
- LMT (Locally Managed Tablespace) vs DMT、ASSM 特點(位圖管理、自動段空間、消除自由鏈表競爭)。
- Rollback Segment / Undo 作用(讀一致性、交易回滾、Flashback)。
- Redo Log 作用(崩潰恢復、前滾、Data Guard 同步)。
- SGA 主要組件與功能(Shared Pool、DB Buffer Cache、Redo Log Buffer、Large Pool、Java Pool、Streams Pool)。
- Oracle 背景進程(PMON、SMON、DBWn、LGWR、CKPT、ARCn、RECO、LMS 等)職責。
三、備份恢復類 —— 最後防線
- 備份分類:冷/熱、完整/增量、邏輯/物理、RMAN/用戶管理。
- 歸檔模式含義與啟用條件。
- 表誤
DROP 後,有完整歸檔備份如何恢復?(時間點恢復 PITR、FLASHBACK TABLE ... TO BEFORE DROP、TS PITR、邏輯導入)。
- RMAN 特點(塊級備份、壓縮、加密、腳本化、目錄庫、增量合併)。
- Data Guard / Standby 特點(實體/邏輯/快照、角色切換、保護模式)。
- 50G 庫、日增 5G 歸檔,RTO 較短備份策略?(RMAN 增量累積/差異、影子複製/快照備份、Data Guard 延遲應用、Flashback Database)。
四、系統管理類 —— 實戰經驗值
- 系統效能問題診斷思路(OS 層 → 實例層 → SQL 層 → 應用層,自上而下/自下而上結合)。
- I/O、CPU、效能診斷方法(
iostat/sar/vmstat、AWR/ASH/Statspack、V$SYSTEM_EVENT/V$SESSION_WAIT)。
- Statspack 認知(安裝、快照、報告分析、與 AWR 差異)。
- 大表建索引考量與降低影響(
ONLINE、PARALLEL、NOLOGGING、離線建立再交換、分區索引、維護窗口)。
- RAID 10 vs RAID 5 認知(寫入效能、容錯、成本、重建時間、適用場景)。
五、綜合開放題 —— 展現思維深度
- 最擅長 Oracle 哪塊?為何?
- 喜歡 Oracle 嗎?常逛哪些技術社群?
- 覺得 Oracle 最有趣/最難的部分是?
- 為何選擇 DBA/開發這條路?
備戰建議
背誦題目不如理解原理。建議:
- 每題嘗試用「原理 → 現象 → 工具 → 解決 → 權衡」結構答題。
- 準備 2-3 個實戰案例(如:某 SQL 從 10 秒優化到 0.1 秒、某次故障恢復經歷)。
- 承認不知者說「不確定,但我會從這幾個方向排查...」,誠實勝過硬掰。
祝面試順利,Offer 到手!