暂无图片
Oracle 用 delete from table where xxx=xxx 删除大量记录后 表空间使用率未降低。是否只能使用 alter table xxx shrink space 来释放空间?
我来答
分享
暂无图片 匿名用户
Oracle 用 delete from table where xxx=xxx 删除大量记录后 表空间使用率未降低。是否只能使用 alter table xxx shrink space 来释放空间?

Oracle 用 delete from table where xxx=xxx 删除大量记录后 表空间使用率未降低。是否只能使用 alter table xxx shrink space 来释放空间?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
刘贵宾

Delete操作并不会释放占用的空间,释放空间说白了就是降低高水位线,delete 删除时有高水位线的问题,需要降低高水位线。

而释放表的高水位通常有如下几种办法:

(1)对表进行MOVE操作:ALTER TABLE TABLE_NAME MOVE;。若表上存在索引,则记得重建索引。

(2)对表进行SHRINK SPACE操作:ALTER TABLE TABLE_NAME SHRINK SPACE;,注意,在执行该指令之前必须开启行移动:ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT;。该方法的优点是:在碎片整理结束后,表上相关的索引仍然有效,缺点是会产生大量的UNDO和REDO。

(3)create table xxx as select * from xxx 重建表,复制要保留的数据到临时表T,DROP原表,然后RENAME临时表T为原表。

(4)exp/imp或expdp/impdp重构表。

(5)若表中没有数据则直接使用TRUNCATE来释放高水位。

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

如果没有停机窗口,或者停机窗口比较短,可以使用在线重定义。

暂无图片 评论
暂无图片 有用 0
打赏 0
布衣
暂无图片

我们这边一般操作是在线重定义,然后索引rebuid online 来释放空间

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

感觉这和当初设计有关,比如一个大表,频繁访问更新的,却和静态的LOOKUP表放在一个TBS下。如果现在发现问题了,还是想法子把不同特点的表分别存到不同表空间上,后续再处理就方便很多。

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


请输入正文
提交
相关推荐
数据库升级问题求大神解答
回答 1
EBS数据库升级本质上没有区别。只不过针对EBS可能有一些特殊的小补丁需要应用,建议到MOS找到指引。看你的小版本升级,这个通常没有问题。11.2.0.2和11.2.0.4没有特别大的功能性差异。以下
Oracle11g 把SYSTEM 下的用户表导出用什么方法?
回答 3
三点疑问:如果这些表建在system表空间下,那他用的什么用户呢?难道不是业务用户吗?如果是业务用户那么为何还要换到其他schema下?如果要换schema,那么就是前面老兄说的导出你这些业务表,要停
Oracle数据库中的受欢迎和不受欢迎值各是什么?
回答 2
已采纳
直方图中某个值的受欢迎程度会影响基数估值算法,具体如下:  受欢迎值:受欢迎值出现在多个桶的端点值,优化器通过检查某个值是否是桶的端点值来确定该值是否受欢迎,如果是,那么对于频率直
小白求解|为什么我在mysqlworkbench创建新的连接里一开始就是只读状态? 导入了数据,怎么把只读状态改成读写状态啊?
回答 1
可以编辑的。只要你有主键就行。
DATAGUARD 主备库切换时,涉及到IP地址和实例名改变,应用端改连接字符串的时间长,步骤复杂,如何解决这个问题使应用改的地方最简单快速?
回答 5
试试TAF配置https://www.modb.pro/doc/22861
如何在数据库中设置 undo retention 参数?
回答 3
使用SHOWPARAMETERundoretention命令可以查看当前数据库中undoretention参数的设置。例如:SQL>SHOWPARAMETERundoretention;这将显示
请问,impdp导入数据 因为错误而终止,alert也没有提示报错, impdp 的日志也没有错误号,就这一句,看不出来有什么错误 ,这个怎么看?
回答 1
上面不是说你的序列已经存在了吗?
Oracle 的存储过程是像函数那样会执行后会长时间留在数据库中吗?
回答 2
已采纳
会的,存储过程和表,索引,视图,函数等一样,也属于数据库对象的一种,可以在DBAPROCEDURES中查到
1. 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?
回答 7
已采纳
触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。
oracle重建监听后不能动态注册
回答 1
已采纳
好像是Oracle实例动态注册动作是在1521端口的监听程序上进行的,其他端口不会自动进行动态注册,需要通过修改LOCALLISTENER参数来实现非默认端口的动态注册。LOCALLISTENER默认