网站首页 > 文章中心 > 其它

如何重组oracle的表_Oracle如何查看表

作者:小编 更新时间:2023-09-26 10:09:51 浏览量:419人看过

如何对oracle进行 REORG?

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;

在oracle中怎么将两个表合在一起?

工具/材料:Management Studio.

Oracle数据库怎么把两个表合并成为一个新的表?

①.、临时表

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的表相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章