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

Oracle 資料檔案相關核心視圖:DBA_DATA_FILES、V$DATAFILE、DBA_FREE_SPACE、V$FILESTAT

     編輯:MySQL 資料庫相關知識

核心視圖速查表

1. DBA_DATA_FILES - 靜態結構資訊

欄位說明
FILE_NAME資料檔完整路徑
FILE_ID檔案識別碼
TABLESPACE_NAME所屬表空間
BYTES / BLOCKS目前大小 (位元組/區塊)
AUTOEXTENSIBLEYES/NO 是否自動擴展
MAXBYTES / MAXBLOCKS最大擴展上限
USER_BYTES / USER_BLOCKS可用空間 (扣除 LMT/DMT 元資料)

2. V$DATAFILE - 動態同步資訊

  • 記憶體中即時狀態:STATUS (ONLINE/OFFLINE/SYSTEM)、ENABLED、CHECKPOINT_CHANGE#、CREATION_TIME。
  • 適合監控檔案上線/離線、檢查點進度。

3. DBA_FREE_SPACE - 表空間剩餘空間

欄位說明
TABLESPACE_NAME表空間名稱
FILE_ID資料檔 ID
BYTES / BLOCKS連續自由區塊大小

單一檔案可能有多列(碎片),合計即為總剩餘空間。

4. V$FILESTAT - I/O 統計

欄位說明
PHYRDS / PHYWRTS物理讀/寫次數
PHYBLKRD / PHYBLKWRT物理讀/寫區塊數
READTIM / WRITETIM累積讀/寫時間 (百毫秒)
AVGIOTIM平均 I/O 延遲

配合 FILE# 關聯 DBA_DATA_FILES 定位熱點檔案。

實戰查詢範例

表空間使用率儀表板

SELECT
    ddf.TABLESPACE_NAME,
    ROUND(SUM(ddf.BYTES)/1024/1024, 2) AS total_mb,
    ROUND(SUM(dfs.BYTES)/1024/1024, 2) AS free_mb,
    ROUND(100 * SUM(dfs.BYTES) / SUM(ddf.BYTES), 2) AS pct_free
FROM DBA_DATA_FILES ddf
LEFT JOIN DBA_FREE_SPACE dfs ON ddf.FILE_ID = dfs.FILE_ID
GROUP BY ddf.TABLESPACE_NAME
ORDER BY pct_free;

熱點資料檔 (Top 10 讀寫)

SELECT
    ddf.FILE_NAME,
    vfs.PHYRDS, vfs.PHYWRTS,
    vfs.READTIM, vfs.WRITETIM,
    ROUND((vfs.READTIM+vfs.WRITETIM)/NULLIF(vfs.PHYRDS+vfs.PHYWRTS,0), 2) AS avg_ms
FROM V$FILESTAT vfs
JOIN DBA_DATA_FILES ddf ON vfs.FILE# = ddf.FILE_ID
ORDER BY (vfs.PHYRDS+vfs.PHYWRTS) DESC
FETCH FIRST 10 ROWS ONLY;

自動擴展建立語法備忘

-- LMT (Local Managed Tablespace) 建議
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/app_data01.dbf' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

掌握四大視圖,即可掌控儲存層面的容量規劃、效能調校與故障預警。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved