剖析shrink 操作原理

本文详细探讨了Oracle 10g引入的shrink操作,与move操作对比,指出shrink在不使索引失效的情况下,直接在原有表内部进行操作,避免了额外的空间需求。同时,shrink操作相对较慢,且会产生大量undo和redo操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇介绍了move 的操作,这篇介绍下shrink 操作:

 

在oracle 10g之后,推出了,shrink 操作,使用shrink 操作的时候索引可以不失效,这个对应用系统的影响要小不少。

SQL> create table daodao (id int, name char(2000)) tablespace users;  

Table created.

SQL> insert into daodao select rownum,'ddd' from dba_objects where rownum <=50;

50 rows created.

SQL> commit;

Commit complete.


SQL> show user;
USER is "SYS"
SQL> select header_file,header_block from dba_segments where segment_name ='DAODAO';

HEADER_FILE HEADER_BLOCK
----------- ------------
          4         2387


SQL> set pages 2000;
SQL> select Dbms_Rowid.rowid_block_number(rowid),count(1)  from daodao group by  Dbms_Rowid.rowid_block_number(rowid) ;

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(1)
------------------------------------ ----------
                                2388          3
                                2389          3
                                2398          3
                                2390          3
                                2393          3
                                2395          3
                                2399          3
                                2400          3
                                2404          3
                                2405          3
                                2391          3
                                2397          3
                                2392          3
                                2406          3
                                2407          2
                                2394          3
                          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值