暂无图片
Oracle数据库中,降低表的高水平位方法主要有哪些?操作时应该注意什么?
我来答
分享
超越无限D
2022-12-30
Oracle数据库中,降低表的高水平位方法主要有哪些?操作时应该注意什么?

Oracle数据库中,降低表的高水平位方法主要有哪些?操作时应该注意什么?

我来答
添加附件
收藏
分享
问题补充
10条回答
默认
最新
shunwahⓂ️

降低表的高水位,oracle提供了几种常见的方法:
1.对表进行MOVE,做完MOVE后需要对表的所有过引进行重建(注意MOVE时需要双倍的表空间)。
参考脚本:

alter table table_name move tablespace tbs_name;   
select 'alter index '||index_name||' rebuild;' sql_text   
from user_index ui   
where ui.table_name='&tab_name';  

2.以ctas创建备份表,将源表truncate,然后回写:

create table bak_table_name as select * from table_name;   
truncate table table_name;   
insert into table_name select * from bak_table_name;   
commit; 

3.方法1、2对于小表比较适合,如果对上G的表进行操作,可能就比较麻烦了。建议进行exp/imp操作。
4.对于Oracle 10g可以采用alter table shrink space;

alter table table_name enable row movement;   
alter table table_name shring space; 

https://blog.csdn.net/wlp_name/article/details/6987705

暂无图片 评论
暂无图片 有用 0
暂无图片
zwx
2022-12-30
https://blog.csdn.net/wlp_name/article/details/6987705
duke
2022-12-30
数据泵也是一种很好的方法,但表太大的话,就在线重定义比较合适
szrsu
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
L
lelepapa

1.新建临时表,truncate原表,插入原表数据

2.move


暂无图片 评论
暂无图片 有用 3
lelepapa
答主
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
zhangyfr
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
yBmZlQzJ
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
展开全部评论(1条)
D
dyf1

1.新建临时表,truncate原表,插入原表数据 2.move

暂无图片 评论
暂无图片 有用 1
dyf1
答主
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
手机用户5704
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
布衣
暂无图片

1、在线重定义(生产环境上操作)
2、move

暂无图片 评论
暂无图片 有用 0
张sir

1、ctas重建表。

2、expdp/impdp导入导出。

3、shrink:注意有的表可能不好使。

4、move:注意需要重建索引。

暂无图片 评论
暂无图片 有用 1
ora_221
2022-12-30
学习了~。。。。。。。。。。。。。。
手机用户5704

1.新建临时表,truncate原表,插入原表数据

2.move

暂无图片 评论
暂无图片 有用 1
zwx
2022-12-30
1、在线重定义(生产环境上操作) 2、move
Z
zwx

1、在线重定义(生产环境上操作)
2、move

暂无图片 评论
暂无图片 有用 1
hgb524
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
H
hgb524

1.新建临时表,truncate原表,插入原表数据 2.move

暂无图片 评论
暂无图片 有用 0
zhangyfr

1.新建临时表,truncate原表,插入原表数据 2.move

暂无图片 评论
暂无图片 有用 1
Thomas

既然是降低高水位,言下之意就是处理后表还在原来表空间。再考虑是生产系统吧,不允许停机。所以EXPDP/IMPDP和CTAS就免了吧,因为这两者都可能造成某时间点原表无法访问。SHRINK不好使,也去掉。如果是MOVE,那么比如A表在T表空间,那么需要新建S表空间,将T表空间上所有表都MOVE到S表空间上。然后再移回T表空间。如果在线重定义,同理也要创建S表空间,先把表重定义到S上,再定义回T.

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏