千家信息网

Oracle 手工清理临时段

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,今天开发说一个测试库里的表空间满了需要清理,连上测试库一看,确实已经使用99.98%了。TABLESPACE_NAME SIZE_G FREE_G
千家信息网最后更新 2025年02月01日Oracle 手工清理临时段

今天开发说一个测试库里的表空间满了需要清理,连上测试库一看,确实已经使用99.98%了。

TABLESPACE_NAME                SIZE_G          FREE_G          USED_PCT------------------------------ --------------- --------------- ----------E2TEST                               96.00            0.02    99.98%

通过与开发沟通确定了删除策略,先删除了一些历史表但是清理效果不大,直接通过DBA_SEGMENTS视图查看ESOP2TEST表空间中bytes最大的表为E_CONT,占了28G。打算清理直接这张表。

OWNER                          SEGMENT_NAME       SUM(BYTES)/1024/1024------------------------------ ------------------ --------------------E2TEST                         E_CONT                  28983.3125

开发要求保留最近一个月的数据,所以打算建一张临时表把最近一个月的数据导进去,删除原表,再把临时表重命名为原表。过程其实很简单,步骤也不复杂,但是在做完全部步骤后发现表空间使用率依然很高,清理没有效果。

TABLESPACE_NAME                SIZE_G          FREE_G          USED_PCT------------------------------ --------------- --------------- ----------E2TEST                               96.00            0.89    99.07%

再次查看通过DBA_SEGMENTS查看空间占用情况。

SQL> select * from (select owner,segment_name,sum(bytes)/1024/1024 from dba_segments where tablespace_name='E2TEST' group by owner,segment_name order by 3 desc ) where rownum < 50;      OWNER                          SEGMENT_NAME                   SUM(BYTES)/1024/1024------------------------------ ------------------------------ --------------------E2TEST                      20.962                                        28981

segment_name居然变为了数字。。。

查看这个段的类型为TEMPORARY

SQL> select * from (select owner,segment_name,segment_type,sum(bytes)/1024/1024 from dba_segments where tablespace_name='E2TEST' group by owner,segment_name,segment_type order by 4 desc ) where rownum < 50;OWNER                          SEGMENT_NAME                   SEGMENT_TYPE       SUM(BYTES)/1024/1024------------------------------ ------------------------------ ------------------ --------------------E2TEST                      20.962                         TEMPORARY                         28981

在网上查资料,先看到惜分飞的一篇blog,介绍type为TEMPORARY,name为file#.block#对象重现和清理

http://www.xifenfei.com/2015/12/type%E4%B8%BAtemporaryname%E4%B8%BAfile-block%E5%AF%B9%E8%B1%A1%E9%87%8D%E7%8E%B0%E5%92%8C%E6%B8%85%E7%90%86.html

跟他里边描述的不太一样,按他写的方法无法进行清理。

继续查发现一篇文章介绍的情况跟我的比较相似,http://blog.chinaunix.net/uid-22948773-id-3758510.html

重启数据库或用下面的方法清理:

alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1';

level - tablespace number+1. If the value is 2147483647 then
temp segments in ALL tablespaces are dropped, otherwise, only
segments in a tablespace whose number is equal to the LEVEL
specification are dropped.

1、查询所在表空间的编号

SQL> select ts# from v$tablespace where name='E2TEST';       TS#----------         5

2、使用上述方法清理

SQL> alter session set events 'immediate trace name DROP_SEGMENTS level 6';Session altered.

3、再次查看最大的TEMPORY段已经没有了,表空间也彻底被释放了

SQL> select * from (select owner,segment_name,segment_type,sum(bytes)/1024/1024 from dba_segments where tablespace_name='E2TEST' group by owner,segment_name,segment_type order by 4 desc ) where rownum < 50;OWNER                          SEGMENT_NAME                                                                      SEGMENT_TYPE       SUM(BYTES)/1024/1024------------------------------ --------------------------------------------------------------------------------- ------------------ --------------------E2TEST                      T_CONT                                                                            TABLE                             12332E2TEST                      SYS_LOB0000017851C00008$$                                                         LOBSEGMENT                         9834E2TEST                      ERMSGLOG                                                                          TABLE                              5974TABLESPACE_NAME                SIZE_G          FREE_G          USED_PCT------------------------------ --------------- --------------- ----------E2TEST                               96.00           31.68    67.00%



空间 数据 方法 开发 最大 再次 情况 效果 步骤 测试 复杂 相似 不大 使用率 历史 对象 所在 数字 数据库 是在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云计算和网络技术哪个好 广场舞网络安全不烦恼 成都思远网络技术有限公司简介 皇冠互联网科技有限公司 网络安全人人有责视频 洪泽软件开发 陕西网络安全主题是什么 车用软件开发管理 企业服务器构建什么意思 服务器启动一直显示dhcp 数据库如何存储当前时间 远程服务器怎么登录 数据通信与网络技术专业 授权为了实现数据库的 互联网科技包装股份有限公司官网 郑州网络安全it培训人才缺口大 数据库账户余额数值型 浙江九妖网络技术有限公司 进口单串口服务器价格 初三生网络安全黑板报图片 网络技术专业词语 两台服务器数据拷贝最快的方式 虚拟机显示数据库异常 计算机网络安全科技馆附近 数据库统计出现次数最多的算法 如何更改数据库表的内容 电脑当网络安全大臣 今日头条 互联网科技观点 数据库中表与表的关系 服务器输入密码多久可以修改
0