数据库版本: 10.2.1

--找到数据文件对应的文件号

SQL>select file#,name from v$datafile where name like '%BASEINFO.dbf';
5                  /data/eucpdb/eucpdb/BASEINFO.dbf

找到文件中最大的块号

SQL>select max(block_id) from dba_extents where file_id=5 ;

1213833

--查看数据库块大小

SQL>show parameter db_block_size

db_block_size integer 8192

计算一下文件中最大使用块占用的位置

SQL>select 1213833*8/1024 from dual;

9483.0703125 M

--为了验证上面做法的准确性,下面做一个试验                      

--调整前数据文件大小为10000M

--现在调整数据库文件为9500M
SQL>ALTER DATABASE DATAFILE '/data/eucpdb/eucpdb/BASEINFO.dbf' RESIZE 9500M
  2  /

数据库已更改

--调整文件为 9400m

SQL>ALTER DATABASE DATAFILE '/data/eucpdb/eucpdb/BASEINFO.dbf' RESIZE 9400M

  2  /

SQL> ALTER DATABASE DATAFILE '/data/eucpdb/eucpdb/BASEINFO.dbf' RESIZE 9400M;
ALTER DATABASE DATAFILE '/data/eucpdb/eucpdb/BASEINFO.dbf' RESIZE 9400M
*
第 1 行出现错误:
ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据

--看来了上面的计算是准确的