Я пытаюсь удалить фрагмент табличного пространства, чтобы уменьшить его.
Мне нужен запрос 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
.