前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次失败的shrink table(表空间收缩)

记一次失败的shrink table(表空间收缩)

作者头像
overme
发布2022-01-17 08:15:55
1.7K0
发布2022-01-17 08:15:55
举报
文章被收录于专栏:数据开发笔记

Oracle

原因

发现有一张表的高水位线(HWM)挺大,想试下shrink table(表空间收缩)

shrink必须开启行迁移功能。alter table TTRD_OTC_INSTRUMENT_EVAL enable row movement;该语句会造成引用表table_name的对象(如存储过程、包、视图等)变为无效。 需要执行utlrp.sql来编译无效的对象。

语法: alter table table_name shrink space [ | compact | cascade] ; alter table table_name shrink space compact ; 收缩表, 相当于把块中数据打结实了, 但会保持high water mark 。 alter table table_name shrink space ; 收缩表, 降低high water mark 。 alter table table_name shrink space cascade ; 收缩表, 降低high water mark, 并把相关索引也要收缩一下。 alter index idx_name shrink space ; 回缩索引。

但是我这边运行报错:ORA-10631 : SHRINK clause should not be specified for this object

原来是表上建有函数索引

Shrink operations can be performed only on segments in locally managed tablespaces with automatic segment space management (ASSM). Within an ASSM tablespace, all segment types are eligible for online segment shrink except these: ■ IOT mapping tables ■ Tables with rowid based materialized views ■ Tables with function-based indexes ■ SECUREFILE LOBs ■ Compressed tables

我这边先删了这两个索引

代码语言:javascript
复制
drop index IDX_OTC_INSTRUMENT_EVAL_DATE;
drop index IDX_TTRD_OTC_INSTRUMENT_EVAL;

然后开始收缩表

代码语言:javascript
复制
ALTER TABLE TTRD_OTC_INSTRUMENT_EVAL SHRINK SPACE CASCADE;
ALTER INDEX PK_TTRD_OTC_INSTRUMENT_EVAL SHRINK SPACE ;

手动收集下统计信息

代码语言:javascript
复制
begin
dbms_stats.gather_table_stats(ownname => 'XIR_TRD',tabname => 'TTRD_OTC_INSTRUMENT_EVAL');
end;

没成功笑死 还多了 下次再研究

本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/05/17 17:10:54

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档