我正在尝试对表空间进行碎片整理以缩小它。
我需要SQL查询才能找到表空间中的最后一个元素。
我正在使用以下查询,但不确定是否正确:
select * from (
select * from dba_extents where tablespace_name = 'TS_DATA' order by BLOCK_ID desc)
where rownum<22;
然后我想用alter index XXX_PK rebuild;
和alter table XXX move;
之类的命令对其进行碎片整理
我的问题是:我是否必须按BLOCK_ID或EXTENT_ID或同时按两者或其他进行排序?
我想我一定做错了,因为收缩命令不起作用:ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TS_DATA.DBF' RESIZE 8777M;
。由于ORA-03297: file contains used data beyond requested RESIZE value
,它无法工作。