ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle新技术/11g » shrink space 的整个过程就是在做delete和insert

标题: [精华] shrink space 的整个过程就是在做delete和insert
  本主题由 warehouse 于 2007-12-18 09:30 加入精华 
在线/呼叫 Arrayyxyup
木易大夫


精华贴数 6
个人空间 974
技术积分 10991 (107)
社区积分 411 (1577)
注册日期 2006-5-21
论坛徽章:37
现任管理团队成员2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:举重   
      

发表于 2007-8-26 22:11 
shrink space 的整个过程就是在做delete和insert

PHP code:


SQL
>  select segment_name,bytes/1024/1024 from dba_segments where segment_name='TEST_SHRINK';    



SEGMENT_NAME         BYTES/1024/1024

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

TEST_SHRINK                  300.375



SQL
delete test_shrink where rownum<100000;



99999 rows deleted.



SQLcommit;



Commit complete.



SQL>  delete test_shrink where rownum<100000;



99999 rows deleted.



SQLcommit;



Commit complete.





SQLselect segment_name,bytes/1024/1024 from dba_segments where segment_name='TEST_SHRINK';    



SEGMENT_NAME         BYTES/1024/1024

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

TEST_SHRINK                  300.375



SQL
select from v$sesstat where sid =(select distinct sid from v$mystat) and statistic#=(select statistic# from v$statname where name='redo size');



       
SID STATISTIC#      VALUE

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

       
136        134  259857896



SQL
alter table test_shrink enable row movement;



Table altered.



SQLalter table test_shrink shrink space;



Table altered.



SQLselect from v$sesstat where sid =(select distinct sid from v$mystat) and statistic#=(select statistic# from v$statname where name='redo size');



       
SID STATISTIC#      VALUE

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

       
136        134  541072808



SQL
select segment_name,bytes/1024/1024 from dba_segments where segment_name='TEST_SHRINK';    



SEGMENT_NAME         BYTES/1024/1024

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

TEST_SHRINK                  175.875







SQL
>select from v$locked_object



    XIDUSN    XIDSLOT     XIDSQN  OBJECT_ID SESSION_ID ORACLE_USERNAME                OS_USER_NAME                   PROCESS

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

LOCKED_MODE

-----------

         
9          4        145      10388        136 YXYUP                          oracle                         11064

          3

          

          

          



logminer日志



QL
select operation,sql_redo from v$logmnr_contents;



OPERATION

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

SQL_REDO

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

DELETE

delete from 
&quot;YXYUP&quot;.&quot;TEST_SHRINK&quotwhere &quot;OWNER&quot; = 'SYS' and &quot;OBJECT_NAME&quot; = 'USE

R_QUEUE_PUBLISHERS' 
and &quot;SUBOBJECT_NAME&quotIS NULL and &quot;OBJECT_ID&quot; = '4623' and &quot;D

ATA_OBJECT_ID
&quotIS NULL and &quot;OBJECT_TYPE&quot; = 'VIEW' and &quot;CREATED&quot; = TO_DATE('20-JA

N-07'
'DD-MON-RR') and &quot;LAST_DDL_TIME&quot; = TO_DATE('20-JAN-07''DD-MON-RR') and

&
quot;TIMESTAMP&quot; = '2007-01-20:04:25:26' and &quot;STATUS&quot; = 'VALID' and &quot;TEMPORARY&quot; = 'N'

 
and &quot;GENERATED&quot; = 'N' and &quot;SECONDARY&quot; = 'N' and ROWID 'AAACiUAAEAAANLOAAq';



INSERT



OPERATION

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

SQL_REDO

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

insert into &quot;YXYUP&quot;.&quot;TEST_SHRINK&quot;(&quot;OWNER&quot;,&quot;OBJECT_NAME&quot;,&quot;SUBOBJECT_NAME&quot;,&quot;OBJECT

_ID
&quot;,&quot;DATA_OBJECT_ID&quot;,&quot;OBJECT_TYPE&quot;,&quot;CREATED&quot;,&quot;LAST_DDL_TIME&quot;,&quot;TIMESTAMP&quot;,&quot;STATU

S
&quot;,&quot;TEMPORARY&quot;,&quot;GENERATED&quot;,&quot;SECONDARY&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" /> values ('SYS','USER_QUEUE_PUBLISHERS',NU

LL
,'4623',NULL,'VIEW',TO_DATE('20-JAN-07''DD-MON-RR'),TO_DATE('20-JAN-07''DD

-MON-RR'
),'2007-01-20:04:25:26','VALID','N','N','N');



DELETE

delete from 
&quot;YXYUP&quot;.&quot;TEST_SHRINK&quotwhere &quot;OWNER&quot; = 'PUBLIC' and &quot;OBJECT_NAME&quot; = '

USER_QUEUE_PUBLISHERS' 
and &quot;SUBOBJECT_NAME&quotIS NULL and &quot;OBJECT_ID&quot; = '4624' and



OPERATION

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

SQL_REDO

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

 &
quot;DATA_OBJECT_ID&quotIS NULL and &quot;OBJECT_TYPE&quot; = 'SYNONYM' and &quot;CREATED&quot; = TO_DATE(

'20-JAN-07''DD-MON-RR') and &quot;LAST_DDL_TIME&quot; = TO_DATE('20-JAN-07''DD-MON-RR'

) and &quot;TIMESTAMP&quot; = '2007-01-20:04:25:26' and &quot;STATUS&quot; = 'VALID' and &quot;TEMPORARY&quot;

 = 
'N' and &quot;GENERATED&quot; = 'N' and &quot;SECONDARY&quot; = 'N' and ROWID 'AAACiUAAEAAANLOA

Ar'
;



INSERT

insert into 
&quot;YXYUP&quot;.&quot;TEST_SHRINK&quot;(&quot;OWNER&quot;,&quot;OBJECT_NAME&quot;,&quot;SUBOBJECT_NAME&quot;,&quot;OBJECT

_ID
&quot;,&quot;DATA_OBJECT_ID&quot;,&quot;OBJECT_TYPE&quot;,&quot;CREATED&quot;,&quot;LAST_DDL_TIME&quot;,&quot;TIMESTAMP&quot;,&quot;STATU



OPERATION

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

SQL_REDO

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

S&quot;,&quot;TEMPORARY&quot;,&quot;GENERATED&quot;,&quot;SECONDARY&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" /> values ('PUBLIC','USER_QUEUE_PUBLISHERS'

,NULL,'4624',NULL,'SYNONYM',TO_DATE('20-JAN-07''DD-MON-RR'),TO_DATE('20-JAN-07

'
'DD-MON-RR'),'2007-01-20:04:25:26','VALID','N','N','N');



......................







可以看出shrink space 的整个过程都是在做delete和insert 操作,

感觉这个操作在生产DB不是逼不得已的时候,还是不用为好.

_____________________________




__________________
克制浮燥,虚心学习!

欢迎访问我的博客:http://123ok.cublog.cn/ ;   http://space.itpub.net/7364032/

投入多少,收获多少;投入多深,领悟多深。
太阳底下没有新鲜事,排列组合就是创新。
每天多做一点点,就是进步的开始。
每天进步一点点,就是成功的开始。
每天创新一点点,就是领先的开始。
只看该作者    顶部
离线 lcmlsj
lost my way ,不知奔向何方!


精华贴数 0
个人空间 0
技术积分 6669 (193)
社区积分 15 (8596)
注册日期 2002-4-9
论坛徽章:16
ITPUB元老会员2007贡献徽章授权会员BLOG每日发帖之星ITPUB新首页上线纪念徽章数据库板块每日发贴之星
数据库板块每日发贴之星     

发表于 2007-8-26 22:20 
我在做删除10000000行后的shrink,已经快三个小时了,还没有结束,真是汗!以前只是在小表上做。日志已经产生1.5g。


__________________
只看该作者    顶部
离线 lcmlsj
lost my way ,不知奔向何方!


精华贴数 0
个人空间 0
技术积分 6669 (193)
社区积分 15 (8596)
注册日期 2002-4-9
论坛徽章:16
ITPUB元老会员2007贡献徽章授权会员BLOG每日发帖之星ITPUB新首页上线纪念徽章数据库板块每日发贴之星
数据库板块每日发贴之星     

发表于 2007-8-26 22:24 
他好像是一行一行的在处理,加的锁是3,行独占。


__________________
只看该作者    顶部
在线/呼叫 yxyup
木易大夫


精华贴数 6
个人空间 974
技术积分 10991 (107)
社区积分 411 (1577)
注册日期 2006-5-21
论坛徽章:37
现任管理团队成员2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:举重   
      

发表于 2007-8-27 09:05 


QUOTE:
最初由 lcmlsj 发布
他好像是一行一行的在处理,加的锁是3,行独占。

row-x(sx)


__________________
克制浮燥,虚心学习!

欢迎访问我的博客:http://123ok.cublog.cn/ ;   http://space.itpub.net/7364032/

投入多少,收获多少;投入多深,领悟多深。
太阳底下没有新鲜事,排列组合就是创新。
每天多做一点点,就是进步的开始。
每天进步一点点,就是成功的开始。
每天创新一点点,就是领先的开始。
只看该作者    顶部
离线 teddyboy
永远的DBA


精华贴数 0
个人空间 0
技术积分 4724 (285)
社区积分 210 (2315)
注册日期 2002-6-13
论坛徽章:6
ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章数据库板块每日发贴之星
      

发表于 2007-8-27 09:07 
这个一直是这样的吧 后面的行往前移 然后降低高水位


__________________
只看该作者    顶部
离线 mustapha
高级会员


来自 没的看了
精华贴数 1
个人空间 0
技术积分 5119 (262)
社区积分 81 (3843)
注册日期 2006-5-18
论坛徽章:13
会员2007贡献徽章授权会员2008北京奥运纪念徽章:沙滩排球生肖徽章2007版:猴生肖徽章2007版:鼠生肖徽章2007版:鸡
ITPUB新首页上线纪念徽章生肖徽章:虎数据库板块每日发贴之星生肖徽章:龙生肖徽章:马生肖徽章:羊

发表于 2007-8-27 09:30 
呵呵,不错的试验,支持


__________________
没事就运动运动~~~~~~~~~~~~~
只看该作者    顶部
在线/呼叫 bluemoon0083
大表哥


精华贴数 2
个人空间 0
技术积分 6830 (186)
社区积分 68 (4181)
注册日期 2005-12-29
论坛徽章:15
会员2007贡献徽章授权会员生肖徽章2007版:狗2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:现代五项生肖徽章2007版:猪
生肖徽章2007版:牛生肖徽章2007版:猴生肖徽章2007版:鸡生肖徽章2007版:鼠ITPUB新首页上线纪念徽章生肖徽章:虎

发表于 2007-8-27 10:43 
alter table test_shrink enable row movement命令本身就是为了做dml来move row啊
跟flashback table有点像,其实就是在做dml操作,即使数据都一样rowid也不一样了
做一下trace应该也可以看出来吧


__________________
偶是新手,正在学习oracle db+apps+linux,如有说错的地方请批评指正!
只看该作者    顶部
离线 dx6340
中级会员


精华贴数 0
个人空间 0
技术积分 776 (2436)
社区积分 122 (3078)
注册日期 2004-2-5
论坛徽章:0
      
      

发表于 2007-8-27 16:32 
对于24小时的系统,Shrink 起来不是会有问题?


只看该作者    顶部
离线 棉花糖ONE


精华贴数 0
个人空间 0
技术积分 15309 (70)
社区积分 1281 (805)
注册日期 2007-2-21
论坛徽章:51
现任管理团队成员数据库板块每日发贴之星生肖徽章2007版:羊生肖徽章2007版:虎  
      

发表于 2007-8-27 17:09 


QUOTE:
最初由 bluemoon0083 发布
alter table test_shrink enable row movement命令本身就是为了做dml来move row啊
跟flashback table有点像,其实就是在做dml操作,即使数据都一样rowid也不一样了
做一下trace应该也可以看出来吧


, 执行flashback table的时候,要求enable row movement也想到这个


__________________
换一种思路来思考问题

qq群:47823366
只看该作者    顶部
在线/呼叫 ZALBB
正在看龙蛇演义


精华贴数 8
个人空间 0
技术积分 29229 (29)
社区积分 14379 (101)
注册日期 2001-10-15
论坛徽章:54
      
      

发表于 2007-8-28 08:59 
这样看来,若表上有索引,那更麻烦!


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问