--调用 oracle 提供的 utlchn1.sql 脚本创建一张名为 chained_rows 的表来存放输出。
SQL> @?/rdbms/admin/utlchn1.sql
Table created.
--将行迁移和行链接的数据行填充到 chained_rows 表中。
SQL> analyze table rowtest list chained rows;
Table analyzed.
--查看 chained_rows 表中一共有多少行,也就是发生行迁移和行链接的行数。
SQL> select count(*) from chained_rows where table_name='ROWTEST';
COUNT(*)
----------
7184
--查询表 rowtest 真正使用的数据块
SQL> select distinct count(distinct substr(rowid,1,15)) num from rowtest;
--查询表 rowtest 高水位线下所有的块数和高水位线上的空块数(blocks 是在高水位线下表中块的数目,
empty_blocks 是高水位线上未使用的块的数目(也就是从来没有使用过的块)。
SQL> select blocks,empty_blocks from user_tables where table_name='ROWTEST';
select num_rows,blocks,empty_blocks,chain_cnt,round(chain_cnt/num_rows*100,2)
"chain_pct(%)",pct_free from user_tables where table_name='ROWTEST';
alter table <table_name> enable row movement;
alter table <table_name> shrink space;
alter table <table_name> shrink space cascade;
评论