10g的shrink space功能还是不错的!
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> desc t
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A CHAR(1000)
SQL> truncate table t;
表被截断。
SQL> insert into t values('a');
已创建 1 行。
SQL> insert into t values('b');
已创建 1 行。
SQL> insert into t values('c');
已创建 1 行。
SQL> insert into t values('d');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
a AAACnmAAHAAAAAKAAA
b AAACnmAAHAAAAAKAAB
c AAACnmAAHAAAAAKAAC
d AAACnmAAHAAAAALAAA
SQL> delete from t where a in ('a' , 'b');
已删除2行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnmAAHAAAAAKAAC
d AAACnmAAHAAAAALAAA
SQL> alter table t shrink space cascade;
alter table t shrink space cascade
*
第 1 行出现错误:
ORA-10635: Invalid segment or tablespace type
SQL> select tablespace_name , segment_space_management from dba_tablespaces;
TABLESPACE_NAME SEGMEN
------------------------------ ------
SYSTEM MANUAL
UNDOTBS1 MANUAL
SYSAUX AUTO
TEMP MANUAL
USERS AUTO
PERFSTAT AUTO
TEST AUTO
TEST1 MANUAL
已选择8行。
SQL> select table_name , tablespace_name from user_tables where table_name='T';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T TEST1
SQL> alter table t move tablespace users;
表已更改。
SQL>
SQL> alter table t shrink space;
alter table t shrink space
*
第 1 行出现错误:
ORA-10636: ROW MOVEMENT is not enabled
SQL> alter table t enable row movement;
表已更改。
SQL> alter table t shrink space;
表已更改。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnnAAEAAAACEAAA
d AAACnnAAEAAAACEAAB
SQL> insert into t values('e');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnrAAEAAAACEAAA
d AAACnrAAEAAAACEAAB
e AAACnrAAEAAAACHAAA
SQL> insert into t values('f');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnrAAEAAAACEAAA
d AAACnrAAEAAAACEAAB
e AAACnrAAEAAAACHAAA
f AAACnrAAEAAAACHAAB
SQL> insert into t values('g');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnrAAEAAAACEAAA
d AAACnrAAEAAAACEAAB
e AAACnrAAEAAAACHAAA
f AAACnrAAEAAAACHAAB
g AAACnrAAEAAAACHAAC
SQL> insert into t values('h');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select substr(a , 1 , 1) , rowid from t ;
SU ROWID
-- ------------------
c AAACnrAAEAAAACEAAA
d AAACnrAAEAAAACEAAB
e AAACnrAAEAAAACHAAA
f AAACnrAAEAAAACHAAB
g AAACnrAAEAAAACHAAC
h AAACnrAAEAAAACHAAD
已选择6行。
SQL>
......
主要是验证一下hwm之上的空间并不能通过这种方式shrink!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-61707/
,如需转载,请注明出处,否则将追究法律责任。