生產環境 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 文件,證明三個不同後綴文件均參與了存儲。
.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'); 刷新統計信息。