网站建设知识
数据文件的后缀名
2025-07-22 09:57  点击:0

今天看到生产系统表空间99了,果断给表空间加数据文件。没问题,果断搞定。

晚上回味的时候,一身冷汗。生产系统RAC,加数据文件是在共享存储。路径加对了,但是数据文件的后缀名加错了!

原来的数据文件名:

+data/datafile/xxxxxx.dat

我加的数据文件:

+data/datafile/xxxxxx.dbf

业务不会就这样跪了吧????

果断做了测试:

创建一个包含.dbf和.dat的表空间,并在该表空间中创建测试表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;create table tab_test (id number,name varchar2(100)) tablespace dxmy;
插入数据:declarebegin  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';OWNER TABLE_NAME NUM_ROWS Size M EMPTY_BLOCKS LAST_ANALYZEDLM TAB_TEST 200000 4.859375 0 2015/12/10 6:29:07
发现已经大于1M了,说明三个数据文件都是在用的。
也就是说,Oracle用数据文件,只要数据文件属于该表空间,就能用,不管后缀名。

PS:如果查表所占空间无数据,执行表分析语句就好。

exec dbms_stats.get_tables_stats(ownname => '',tabname => '');