oracle 分区表数据清除后_所占表空间会释放吗?,oracle truncate表空间释放问题的解决办法...

1.删除表中所有的行,释放数据所占用的自由空间;

同时删除索引数据,释放该表上的index所占用的自由空间。TRUNCATE TABLE employees_demo;

但是,但是,truncate不会释放由 MINEXTENTS storage parameter指定的存储参数。例如下表,即便没有任何记录,也会占用3G空间,索引占用1.7G空间:

-- Create table

create table SYS_SCT_USERLOG

(

id          NUMBER not null,

splog2      VARCHAR2(200)

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 3072M

minextents 1

maxextents unlimited

);

-- Create/Recreate primary, unique and foreign key constraints

alter table SYS_SCT_USERLOG

add constraint PK_SYS_SCT_USERLOG primary key (ID)

using index

tablespace USERS

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 1092M

minextents 1

maxextents unlimited

);

2.删除表中所有的行,保留表所占用的空间,留待该表下次使用。

TRUNCATE CLUSTER personnel REUSE STORAGE;

3.删除表中所有的行,不删除物理视图中数据。

TRUNCATE TABLE sales_demo PRESERVE MATERIALIZED VIEW LOG;

二、解决办法

1.执行以下语句

alter TABLE SYS_SCT_USERLOG deallocate unused keep 1k ;

alter index PK_SYS_SCT_USERLOG deallocate unused keep 1k ;

2.如果大批量truncate表,如何解决?

Select owner, decode(partition_name,

null,

segment_name,

segment_name || ':' || partition_name) objectname ,

'alter ' || segment_type || ' ' ||

decode(partition_name,

null,

segment_name,

segment_name || ':' || partition_name) ||

' deallocate unused keep 1k  ' scripts,

segment_type objecttype,

nvl(bytes, 0) "SIZE",

nvl(initial_extent, 0) INITIALEXT,

nvl(next_extent, 0) NEXTEXT,

nvl(extents, 0) NUMEXTENTS,

nvl(max_extents, 0) "MAXEXTENTS"

from dba_segments

where tablespace_name =  'USERS'

and owner = 'SINOSYNEW'

and objecttype in ('TABLE','INDEX')

order by  nvl(bytes, 0) desc  ;

拷贝执行结果中第三列数据得到批量语句如下;

alter TABLE FIN_AR_REMAIN_BILL deallocate unused keep 1k ;

alter TABLE FIN_WARE_LIST deallocate unused keep 1k ;

alter INDEX PK_WMS_INOUT_LOT_HISTORY deallocate unused keep 1k ;

……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值