alter table tablename move [tablespace tablespacename];
delete数据不会回收已经分配出去的block(也就是delete前后你查看user_segments中的信息不会有改动).
但这时你对表执行analyze后查看dba_tables表的话会发现empty_block数目变大或者avg_space数据变小.
如果你希望减少该table占用的实际block数目,
你需要使用move操作将table重建,oracle才会重新分配block,这时table上的索引会失效,需要rebuild.
一,创建测试环境
create table jax_t11
as
select * from dba_objects
where rownum = 10000;
insert into jax_t11
select * from jax_t11;
commit;
create index idx_jax_t11_01 on jax_t11(owner,object_name,created);
begin
dbms_stats.gather_table_stats
( ownname = user, -- 表的拥有者
tabname = upper('jax_t11'), -- 表名称
method_opt = 'for all indexed columns size 1', -- 获得所有索引列的柱状图
cascade = TRUE ); -- 级联获取 indexes的统计信息
end;
where ds.segment_name in ( 'JAX_T11', upper('idx_jax_t11_01'));
表空间占用明细
SELECT table_name,tablespace_name,
num_rows, -- 记录行数
avg_row_len, --平均行长度
blocks,
avg_space,
empty_blocks
from user_tables ut
where ut.table_name = 'JAX_T11'
TABLE_NAME TABLESPACE_NAME NUM_ROWS AVG_ROW_LEN BLOCKS AVG_SPACE EMPTY_BLOCKS
索引空间占用明细
SELECT index_name,table_name,leaf_blocks,distinct_keys,num_rows
from user_indexes ut
where ut.index_name = upper('idx_jax_t11_01')
INDEX_NAME TABLE_NAME LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS
delete from jax_t11
where rowid in (select r1
三,move table rebuild index
alter table jax_t11 move;
alter index idx_jax_t11_01 rebuild;
工具/材料:Management Studio.
①.、临时表
WITH CTE AS (
SELECT T1.Sno,T1.Cno, T.Cname,T.Cpno,T.Ccredit,T.Grade
FROM Course T
INNER JOIN SC T1 ON T.Cno =T1.Cno
) SELECT * FROM
CREATE TABLE AA AS
以上就是土嘎嘎小编为大家整理的如何重组oracle的表相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!