暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle中shrink space命令.pdf
103
13页
7次
2024-04-18
免费下载
Oracle shrink space 命令
首先 oracle shrink 是 10g 之后才引出的,有 shrink table 和 shrink space 两种,这里介绍 shrink space
压缩分两个阶段:
1、数据重组:这个过程是通过一系列的 insert delete 操作,将数据尽量排在列的前面进行重新组合
2、HWM 调整:这个过程是对 HWM 的调整,释放空闲数据库
PS:shrink 之间必须开启行移动功能
alter table table_name enable row movement;
基本语法:
alter table <table_name> shrink space [ <null> | cascade | compact ];
--alter table <table_name> shrink space compact;
只收缩表,这个实际上是只执行了第一个阶段,HWM 保持不变。
--alter table <table_name> shrink space cascade;
收缩表并且相关索引也会被收缩,HWM 会降
--alter table <table_name> shrink space;
收缩表,降低 HWM(High Water Mark)
限制条件:
1、不能对 cluster、clustered table 或者任何有 LONG 列的对象使用这个语句
2、压缩段不支持有函数索引、位图链接索引的
3、这语句不能压缩二级索引表的映射表,即使设置了 CASCADE
4、不能对压缩表使用该语
5、不能压缩 on commit 类型的物化视图的主表,rowid 物化视图必须在压缩操作之后重建
详解:
oracle10g 开始提供 shrink 的命令,要求表空间是自动段空间管理(ASSM),降低 HWM。
segment shrink 分为两个阶段:
1、数据重组(compact):通过一系列 insert、delete 操作,将数据尽量排在段的前面,这个过程中需要在表上加 RX 锁,及只需
移动的行上加锁。由于涉及到 rowid 的改变,需要 enable row movement。同时要 distable 基于 rowid triggers,这个过程
业务影响比较小(--由于采用 compact,只有涉及移动的行才加锁,所以不会锁定整个表,其他的 DML 操作有部分可以进行,进而减
小系统高峰期的性能开销
2、HWM 调整:第二阶段是调整 HWM 位置,释放空闲数据块,此过程需要在表上加 X 锁(独享锁,因此这个表都被锁定,如果系统
处在高峰期的时候,其他在此表的 DML 被挂起,会产生严重阻塞),会造成表上所有 DML 语句阻塞,系统忙时影响较大,
锁的内容参考:http://docs.oracle.com/cd/B19306_01/server.102/b14220/consist.htm
shrink space 语句两个阶段都执行
shrink space compact 语句只执行第一个阶段。
在业务繁忙的时候,可以先执行 shrink space compact 重组数据,然后不满的时候执行 shrink space 降低 HWM 释放
空闲数据块
shrink 必须开启对象的 row movement 功能(shrink index 不需要),alter table table_name enable row mov
ement.但是要注意,该语句会造成引用 table_name 的对象(如存储过程、包、试图等)变为无效,执行完最好由 utlrp.sql 来编
译无效对象
shrink 不会使表的索引失效。但是 move 会,因此,move 后必须重建索引,(alter table table_name move;alter i
ndex index_name rebuild)
语法:
alter table shrink space[|cpmpact|cascade];
alter table shrink space compcat; 把块中的数据堆到一起,但会保持 high water mark
alter table shrink space;收缩表,降低 high water mark
alter table shrink space cascade;收缩表,降 high water mark,并相关索引也要收缩。
alter index indexname shrink space;收缩索引
补充:
--编译无效对象脚本 utlrp.sql
>$ sqlplus /no log
SQL>connect sys/pwd@sid AS sysdba
SQL>@?/rdbms/admin/utlrp.sql
utlrp.sql 脚本可以在数据库运行的状态下执行以编译、数据库中的 invalid 对象.
oracle 建议在对数据库进行迁移、升级、降级后都运行一遍 utlrp.sql 以编译无效对象。
--打完 patch 后重建数据字典视图脚本 catpatch.sql
为了保证系统的的数据词典的完整性和有效性,最好的打 patch 后在 migrate 状态下运行 catpatch.sql
sql> shutdown immediate
sql> startup migrate
sql> @?/rdbms/admin/catpatch.sql
sql> shutdown immediate
sql> startup
为加快速度,可临时调大这2个参数:
show parameter shared_pool_size
show parameter large_pool_size
of 13
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜