Oracle, как дефрагментировать табличное пространство - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь удалить фрагмент табличного пространства, чтобы уменьшить его.

Мне нужен запрос 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...