首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Oracle 數據文件後綴名 .dat vs .dbf:其實不重要,屬於表空間即可使用

     編輯:MySQL 綜合教學

Oracle 數據文件後綴名 .dat vs .dbf:其實不重要,屬於表空間即可使用

生產環境 RAC 集群,共享存儲上給表空間新增數據文件,路徑對了,但後綴名手誤寫成 .dbf 而非原有 .dat。心驚膽戰之餘做實驗驗證:Oracle 完全不在乎後綴名,只要文件屬於該表空間,就會正常使用。

實驗過程

-- 建表空間,混用 .dat、.xo、.dbf 三種後綴
CREATE TABLESPACE dxmy
  DATAFILE '/u01/app/oracle/oradata/single1/dxmy001.dat' SIZE 2M AUTOEXTEND OFF;
ALTER TABLESPACE dxmy ADD DATAFILE '/u01/app/oracle/oradata/single1/dxmy002.xo' SIZE 2M AUTOEXTEND OFF;
ALTER TABLESPACE dxmy ADD DATAFILE '/u01/app/oracle/oradata/single1/dxmy003.dbf' SIZE 4M AUTOEXTEND OFF;

-- 建測試表並寫入 20 萬行
CREATE TABLE tab_test (id NUMBER, name VARCHAR2(100)) TABLESPACE dxmy;

DECLARE
BEGIN
  FOR i IN 1..100000 LOOP
    INSERT INTO tab_test VALUES (i, i||'dxmy');
  END LOOP;
  COMMIT;
END;
/

-- 查看表佔用空間
SELECT owner, table_name, num_rows,
       blocks*8192/1024/1024 "Size M",
       empty_blocks, last_analyzed
FROM dba_tables WHERE table_name='TAB_TEST';

結果顯示表大小 4.86M,遠超首個 2M 文件,證明三個不同後綴文件均參與了存儲。

結論

  • Oracle 數據文件後綴名 純粹是給人看的約定俗成(.dbf = DataBase File,.dat = Data),內核僅按文件路徑與表空間映射關係讀寫。
  • 生產誤用 .dbf 完全不影響業務,無需恐慌、無需重建。
  • 建議:團隊內部制定命名規範(如 tsname_###.dat)統一風格,但技術上無強制要求。

補充:查詢表空間文件分佈

SELECT tablespace_name, file_name, bytes/1024/1024 "Size MB", autoextensible
FROM dba_data_files
WHERE tablespace_name = 'DXMY';

若 LAST_ANALYZED 為空,執行 EXEC DBMS_STATS.GATHER_TABLE_STATS('OWNER','TAB_TEST'); 刷新統計信息。

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