使用连续空闲块调整Oracle表空间大小

使用连续空闲块调整Oracle表空间大小,oracle,resize,block,tablespace,shrink,Oracle,Resize,Block,Tablespace,Shrink,我经常在Oracle实例(11g)中减少表空间 使用以下脚本(来自system user),我可以确切地知道choosen表空间(例如MY_表空间)中为每个对象分配的空间: 我尝试了以下奇怪的事情,连续的自由块,我无法调整大小: 这意味着,我们有19095个可用块(约150 Mb),无法调整大小 为了避免完全删除和创建表空间,有人能帮我吗?您是如何尝试“调整”表空间的 看起来您需要做的就是运行Segment Advisor的Tablepsace级别收缩选项,它将为您进行收缩并回收空间 如果您有

我经常在Oracle实例(11g)中减少表空间

使用以下脚本(来自system user),我可以确切地知道choosen表空间(例如MY_表空间)中为每个对象分配的空间:

我尝试了以下奇怪的事情,连续的自由块,我无法调整大小:

这意味着,我们有19095个可用块(约150 Mb),无法调整大小

为了避免完全删除和创建表空间,有人能帮我吗?

您是如何尝试“调整”表空间的

看起来您需要做的就是运行Segment Advisor的Tablepsace级别收缩选项,它将为您进行收缩并回收空间

如果您有OEM,它很容易做到-只需为您的表空间运行SegmentAdvisor

如果需要脚本来执行此操作,请在此处检查DBMS_ADVISOR包的用法:

select
    tablespace_name, file_id, block_id,
    block_id + blocks - 1  end_block, owner,
    segment_name, partition_name, segment_type
from
    dba_extents
where 1=1
and   tablespace_name = 'MY_TABLESPACE'
union all
select
    tablespace_name, file_id, block_id,
    block_id + blocks - 1   end_block,
    'free' owner, 'free' segment_name,
    null partition_name, null segment_type
from
    dba_free_space
where 1=1
and   tablespace_name = 'MY_TABLESPACE'
order by
    file_id desc,
    block_id desc;