暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
oracle优化资料.doc
22
13页
1次
2025-01-02
免费下载
1.
表空间(或者临时表空间过大)
--
系统表空间 浪费资源怎么处理?
1.alter table 表名 shrink space;--表空间回收
此语句是删除某个表大量后用来回收该表空间--oracle 1
0g
上才支持的
2.alter tablespace TABLESPACENAME coalesce
此语句是整合表空间的碎片增加表空间的连续性,但是他不会收缩一个文件的
大小的。
3.
回收某个表使用空间的步骤:
1
)、选择某个表空间中超过
N
blocks
segments
,通过此语句可以看出那个表占用的
空间大。
select segment_name,segment_type,blocks from dba_segments
where tablespace_name='TABLESPACENAME'
and blocks > N
order by blocks;
2
)、分析表,得知表的一些信息
analyze table TABLENAME estimate statistics;
执行完后再执行
select initial_extent,next_extent,min_extents,blocks,empty_blocks from dba_tables
where table_name='HISHOLDSINFO' and owner='hs_his';
3
)、使用
alter table ... deallocate unused
命令回收表的空间
例如:
alter table hs_his.HISHOLDSINFO' deallocate unused keep 1k;
4.
compress=Y
exp
truncate
imp
5.
使
alter tablespace name coalesce;
6.
pctincreace
0,
1
alter tablespace name storage (pctincrease 1);
7. oracle
大表删除数据后,回收空间的问题。
oracle 中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对
大表数据进行清理。
一般有一下几种方法:
1. 删除大部分数据,留下小部分数据。我们可以把需要保留的数据转移到别
的表,然后再把大表 drop 掉,然后改名就行了;
a) create table tablename_min as select * from tablename_max a where 需要
保留的数据.
b) drop table tablename_max ;
c) rename tablename_min as tablename_max ;
这样就能清除这个大表的 hwm,而且释放掉其他空间。
2.当删除的数据只是一小部分数据的话,第一种方法就不适用了。比如 3 亿
条数据,你删除一亿条数据的话,用 1 就不合适。
这时我们就应该考虑使用 shrink table 的方式。
a) 我们可以先用 delete from tablename_max;
b) 由于我们进行了数据的 delete 所以造成了 tablename_max 这张表的数据
稀疏,数据块并没有减少,hwm 也没有减少,这样就会影响全表扫描需要访问更
多的数据块。这时我们可以通过 shrink 来重组数据使数据分布更紧密,同时降
HWM 释放空闲数据块。
c)由于需要移动行数据,数据的 rowid 会发生变化,所以需要设置表的
row movement 属性:
alter table tablename_max enable row movement; --开启行迁移功能。
alter table tablename_max shrink space compact;--(可以在压缩期间进行
DML 操作和查询) ,收缩表,不会降低 hwm
alter table tablename_max shrink space; --( 调整 HWM 时将阻塞 DML 操作),
收缩表,并且降低 hwm
alter table tablename_max shrink space cascade;--收缩表并降低 hwm,并
且回收相应的索引。
由于我们删除了大量的数据 ,相应的索引也进行了删除,这时需要对
索引进行收缩。
alter index idxname shrink space;
注意:shrink table 只会针对 assm(自动段空间管理)的表有用,否则会报:
ORA-10635: Invalid segment or tablespace type.
alter table tablename_max enable row movement
tablename_max 对象(如存储过程、包、视图)为无效。执行完成后,
utlrp.sql
于是 DML 会产redo archivelog
大小问题;同时 undo 表空间也会暴增。
2.
创建数据库,大表数据如果删除效率高?
of 13
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜