暂无图片
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
打赏 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
打赏 0
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
打赏 0
dyf1
答主
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
手机用户5704
2022-12-30
1.新建临时表,truncate原表,插入原表数据 2.move
布衣
暂无图片

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

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

1、ctas重建表。

2、expdp/impdp导入导出。

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

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

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

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

2.move

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

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

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

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

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

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

暂无图片 评论
暂无图片 有用 1
打赏 0
Thomas

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

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle基础信息脚本?
回答 1
已采纳
–获取数据库版本SELECTFROMv$version;–获取实例名SELECTinstancenameFROMv$instance;–获取数据库启动时间SELECTstartuptimeFROMv$
ADG灾备日志应用节点内存泄漏-疑问
回答 2
没有看出内存泄露的迹象,你的判断从何而来?TOP里看到的RSS、SIZ是正常的。
用wifi连接Oracle数据库数据量大一点连接就会被关闭,是为什么?
回答 2
已采纳
查一下监听的sqlnet.ora是不是执行时间太久自动断开了
ORACLE时间同步问题
回答 2
oracle根据自己scn号存数据,如果不从数据库服务器上获取时间,感觉两个节点时间差异不大可以忽略;可以用ntp和chrony做时间服务器,或者用oracle自己的ctss服务,ctss可以参考如下
增量解析oracle redo的工具
回答 4
好的,谢谢请问有免费的吗?
请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?
回答 2
已采纳
以下限制适用于表的在线重新定义:如果要使用主键或伪主键(唯一键或所有组件列都没有空约束的约束)重新定义表,则重新定义后的表必须具有相同的主键或伪主键列。如果要使用rowids重新定义表,则该表不能是索
DBA_DB_LINKS里的host字段
回答 1
已采纳
默认是1521端口的话,可以这么写
生产实际中,oracle ASM中每个盘存储大小多大?
回答 2
已采纳
OCR1g、3g、5g都可以三块盘,normal冗余,我一般选3G每块;DATA磁盘组根据实际的数据量大小划分,我们最佳实践可以每500G一块或者1T一块,11g每块最大2TB,12.2(这里指COM
Oracle如何提高日志的切换频率?
回答 1
已采纳
通过参数archivelagtarget可以控制日志切换的时间间隔,以秒为单位,通过减少时间间隔,可以提高日志的切换频率。例如如下代码:SQL>altersystemsetarchivelagt
Oracle怎么跟sqlserver配置getaway,一直提示tns有问题?
回答 1
getway这个要通过配置ODBCforsqlserver来实现的,配置odbc之后再配置tnsnames文件