linux 修改表空间大小,resize缩小表空间或数据文件大小的问题

SQL> create tablespace data01 datafile '/u01/data01.dbf' size 22m;

SQL> create table a1 tablespace data01 as select * from dba_objects;  (a1表6M)

SQL> create table a2 tablespace data01 as select * from dba_objects;

SQL> create table a3 tablespace data01 as select * from dba_objects;

SQL> drop table a1 purge; 永久删除一个表(回收站也没有)

SQL> alter database datafile '/u01/data01.dbf' resize 16m;

alter database datafile '/u01/data01.dbf' resize 16m

*

ERROR at line 1:

ORA-03297: file contains used data beyond requested RESIZE value

上述报错空间不足?

SQL> select owner,substr(segment_name,1,20),segment_type,max(block_id) from dba_extents where tablespace_name='DATA01' group by owner,substr(segment_name,1,20),segment_type order by max(block_id);

OWNER                          SUBSTR(SEGMENT_NAME,1,20)

------------------------------ ----------------------------------------

SEGMENT_TYPE       MAX(BLOCK_ID)

------------------ -------------

SYS                            A2

TABLE                       1417

SYS                            A3

TABLE                       2185

SQL> select 1417*8192/1024/1024 from dual;

1417*8192/1024/1024

-------------------

11.0703125

SQL> select 2185*8192/1024/1024 from dual;

2185*8192/1024/1024

-------------------

17.0703125

由此可见删除的表位于最低位,最高为还保留着。

SQL> alter table a3 move tablespace users;

SQL> alter database datafile '/u01/data01.dbf' resize 16m;

SQL> alter table a3 move tablespace data01;  逻辑id不变,物理id一定变

SQL> select owner,substr(segment_name,1,20),segment_type,max(block_id) from dba_extents where tablespace_name='DATA01' group by owner,substr(segment_name,1,20),segment_type order by max(block_id);

OWNER                          SUBSTR(SEGMENT_NAME,1,20)

------------------------------ ----------------------------------------

SEGMENT_TYPE       MAX(BLOCK_ID)

------------------ -------------

SYS                            A3

TABLE                        649

SYS                            A2

TABLE                       1417

结论:当对象占用表空间中高位block_id号时,可能导致不能resize缩小表空间或数据文件。

可通过上述方法解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值