Oracle——数据库维护导出语句详解

——维护数据库表空间常用语句

SELECT a.tablespace_name, 

a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name; 

它得到的结果是表空间的名称、表空间的大小、已使用大小、可用的大小、已用百分比、可用百分比。
 

 

 

——Oracle Shrink 收缩表
select ' alter table '||table_name||' enable row movement; ' from user_tables
union all
select 'alter table '||table_name||' shrink space cascade; ' from user_tables; 
 

enable row movement——翻译为允许行移动。

行迁移,意思就是,一个现存的行允许改变其

行迁移,意思就是,一个现存的行允许改变其rowid(物理存储地址),通常情况下,数据行在分配了空间之后,行的rowid就固定了,即使以后行长度超出预留的空间,也不会将其移动,在长数据行的情况下,表会产生行链接,对于io来说,行链接是不利的,为了性能,就需要将行调整为在单个物理存储地址下能保存行的所有信息,这需要行迁移。

另外在flashback的时候,由于原始版本的行占据了相应的物理地址,所以,也需要行迁移。
其它的,比如说在收缩段空间的情况下,由于要把所有段数据向段前挤压,大部分行都需要改变其物理地址,也需要行迁移。

 

shrink space cascade

 


——给空表分配空间
Select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created = 'NO'
 UNION ALL
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值