首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 物理結構與邏輯結構深度解析

     編輯:Oracle 資料庫相關知識

物理結構

必須透過命令查看,切勿假設預設路徑,前任 DBA 可能已調整。

核心物理檔案類型

檔案類型副檔名用途
控制檔.ctl記錄資料庫名、資料檔/日誌檔位置、檢查點、備份資訊等
資料檔.dbf實際儲存使用者資料、系統資料字典等
重做日誌檔.log記錄所有變更,支援崩潰恢復
參數檔.ora啟動參數 (SPFILE/PFILE),非運行時元件,僅用於啟動階段尋找控制檔

常用查詢指令

-- 控制檔
DESC v$controlfile;
SELECT status, name FROM v$controlfile;

-- 資料檔
DESC v$datafile;
SELECT file#, status, name FROM v$datafile;

-- 日誌檔
DESC v$logfile;
SELECT member FROM v$logfile;

預設安裝路徑

/u01/app/oracle/oradata//

物理路徑可任意遷移,支援裸裝置。

兩種重做日誌模式

  • 線上重做日誌:REDO01.LOG ~ REDOn.LOG,循環覆寫,順序寫入。
  • 歸檔日誌:熱備份模式 (ARCHIVELOG) 下產生,不可覆寫,需備份管理。

啟動流程

  1. 啟動 Instance (SGA + 背景程序)
  2. 讀取參數檔定位控制檔
  3. 掛載資料庫:讀取控制檔 → Database Mount
  4. 打開資料庫:開啟資料檔/日誌檔 → Database Open

邏輯結構 (儲存空間層級)

由大到小:

資料庫 → 表空間 → 段 → 區 → 區塊

1. 表空間 - 最大邏輯單位

  • 一資料庫至少一系統表空間 (SYSTEM)。
  • 一表空間對應一或多個資料檔 (物理)。
  • 邏輯上包含一或多個段。
  • 大小 = 所屬資料檔大小總和。

表空間功能

  • 組織段空間、控制空間分配
  • 上線/離線控制資料可用性
  • 跨裝置分佈資料提升效能
  • 指定使用者預設表空間實現配額限制
  • 支援表空間級備份恢復

表空間分類

類別名稱範例用途
系統表空間SYSTEM, SYSAUX資料字典、系統程序單元、SYSAUX 分擔 SYSTEM 負載
使用者資料/索引表空間USERS, 自訂業務資料與索引,建議分多個、分類存放
回滾/UNDO 表空間UNDOTBS1儲存 UNDO 記錄,保障讀取一致性與交易回滾
臨時表空間TEMP排序、雜湊連接等臨時運算空間,關閉後自動清空

常用管理指令

-- 查詢所有表空間
SELECT * FROM dba_tablespaces;

-- 查詢資料檔 (含大小)
SELECT * FROM dba_data_files;
SELECT tablespace_name, SUM(bytes) FROM dba_data_files GROUP BY tablespace_name;

-- 查詢臨時檔
SELECT * FROM dba_temp_files;

-- 查詢剩餘空間
SELECT tablespace_name, SUM(bytes) FROM dba_free_space GROUP BY tablespace_name;

-- 建立表空間
CREATE TABLESPACE test DATAFILE '/u01/a.dat' SIZE 5M;

-- 新增資料檔擴充
ALTER TABLESPACE test ADD DATAFILE '/u01/b.dat' SIZE 6M;

-- 更名
ALTER TABLESPACE test RENAME TO fff;

-- 離線/上線
ALTER TABLESPACE test OFFLINE;
ALTER TABLESPACE test ONLINE;

-- 唯讀/讀寫
ALTER TABLESPACE test READ ONLY;
ALTER TABLESPACE test READ WRITE;

-- 擴充資料檔
ALTER DATABASE DATAFILE '/u01/a.dat' RESIZE 80M;

-- 自動擴充
ALTER DATABASE DATAFILE '/u01/a.dat' AUTOEXTEND ON MAXSIZE 100M;

-- 刪除 (含資料檔)
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

2. 段 - 邏輯物件佔用空間

  • 類型:表段、索引段、回滾段、臨時段、叢集段等。
  • 存在於表空間中,對應具體儲存空間。
  • 一段由一或多個區組成。

3. 區 - 連續空間分配單位

  • 一次性預留的邏輯連續磁碟空間 (預設 8 個區塊 = 64KB)。
  • 不跨資料檔。
  • 一區包含固定數量的區塊。

4. 區塊 - 最小儲存單位

  • 預設 8KB (可 2K/4K/16K/32K)。
  • 所有邏輯結構的基本分配單元。
  • DB_BLOCK_SIZE 參數控制,建庫後不可變更。

關鍵參數查詢

SHOW PARAMETER undo;        -- UNDO 相關
SHOW PARAMETER db_block_size;
SHOW PARAMETER db_files;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved