ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 4480|回复: 9

删除USERS 表空间上的临时段后,为何没能回收磁盘空间?

[复制链接]
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
发表于 2017-6-13 15:28 | 显示全部楼层 |阅读模式
centos 6.7  ORACLE 11204

--1  表空间的使用情况
col tablespace_name for a30;
select t.tablespace_name, total, free, round(100*(1-(free/total)),3)||'%' "USED_PERCENT"      
from (select tablespace_name, sum(bytes)/1024/1024 total from dba_data_files group by tablespace_name) t,
     (select tablespace_name, sum(bytes)/1024/1024 free from dba_free_space
  4       group by tablespace_name) f where t.tablespace_name=f.tablespace_name(+) order by round(100*(1-(free/total)),3);

TABLESPACE_NAME                     TOTAL       FREE USED_PERCENT
------------------------------ ---------- ---------- ---------------------------------------------------------------------------------------------------------------------------
PT20170612DY                        40960  40856.375 .253%
USERINDEX                             100         99 1%
UNDOTBS1                            31375      30928 1.425%
SYSTEM                              32720  28959.375 11.493%
USERS                          692275.891   150398.5 78.275%
SYSAUX                               3020    152.625 94.946%

6 rows selected.

Elapsed: 00:00:00.04

--2 SYS 账户占用了200G 的 USERS 表空间
SYS@orcl>select owner, tablespace_name, sum(bytes)/1024/1024 from dba_segments where owner='SYS' group by owner, tablespace_name;

OWNER                                                                                      TABLESPACE_NAME                SUM(BYTES)/1024/1024
------------------------------------------------------------------------------------------ ------------------------------ --------------------
SYS                                                                                        SYSTEM                                    3743.0625
SYS                                                                                        SYSAUX                                     1540.375
SYS                                                                                        UNDOTBS1                                        446
SYS                                                                                        USERS                                    207527.313

Elapsed: 00:00:00.49

--3  找出占有空间的对象,发现是一些未完成的对象,不清楚如何产生,
col segment_type for a30;
col segment_name for a30
SYS@orcl>SYS@orcl>select * from (select segment_name, segment_type, (bytes)/1024/1024 from dba_segments where owner='SYS' and tablespace_name='USERS' order by 3 desc nulls last) where rownum <= 10;

SEGMENT_NAME                   SEGMENT_TYPE                   (BYTES)/1024/1024
------------------------------ ------------------------------ -----------------
15.209850                      TEMPORARY                                  20599
15.213202                      TEMPORARY                             14384.3125
10.901427                      TEMPORARY                               10374.75
14.328467                      TEMPORARY                               7862.875
9.2023515                      TEMPORARY                                7415.75
5.1557315                      TEMPORARY                              7400.3125
14.2327435                     TEMPORARY                                 7223.5
5.1521411                      TEMPORARY                              6812.8125
15.201402                      TEMPORARY                                   5669
15.203434                      TEMPORARY                                   3222

10 rows selected.

Elapsed: 00:00:00.63
SYS@orcl>



--4  使用包来删除这些对象,
SYS@orcl>exec dbms_space_admin.segment_corrupt('USERS', 15, 209850);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.02
SYS@orcl>exec dbms_space_admin.segment_drop_corrupt('USERS', 15, 209850);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.01

-- 此语句没执行成功,
SYS@orcl>exec dbms_space_admin.tablespace_rebuild_bitmaps('USERS');
BEGIN dbms_space_admin.tablespace_rebuild_bitmaps('USERS'); END;

*
ERROR at line 1:
ORA-08103: object no longer exists
ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 120
ORA-06512: at line 1


2017-06-13 15:19:49


--5 可以看到,已经删除了大概180G的对象(200-20)
SYS@orcl>select owner, tablespace_name, sum(bytes)/1024/1024 from dba_segments where owner='SYS' group by owner, tablespace_name;

OWNER                                                                                      TABLESPACE_NAME                SUM(BYTES)/1024/1024
------------------------------------------------------------------------------------------ ------------------------------ --------------------
SYS                                                                                        SYSTEM                                    3743.8125
SYS                                                                                        SYSAUX                                    1540.6875
SYS                                                                                        UNDOTBS1                                        458
SYS                                                                                        USERS                                     19133.375

Elapsed: 00:00:00.68
SYS@orcl>

--6  但 USERS 表空间却依旧没释放(回收)?
col tablespace_name for a30;
select t.tablespace_name, total, free, round(100*(1-(free/total)),3)||'%' "USED_PERCENT"      
from (select tablespace_name, sum(bytes)/1024/1024 total from dba_data_files group by tablespace_name) t,
     (select tablespace_name, sum(bytes)/1024/1024 free from dba_free_space
  4       group by tablespace_name) f where t.tablespace_name=f.tablespace_name(+) order by round(100*(1-(free/total)),3);

TABLESPACE_NAME                     TOTAL       FREE USED_PERCENT
------------------------------ ---------- ---------- ---------------------------------------------------------------------------------------------------------------------------
PT20170612DY                        40960  40856.375 .253%
USERINDEX                             100         99 1%
UNDOTBS1                            31375      30916 1.463%
SYSTEM                              32720  28958.625 11.496%
USERS                          692275.891 150398.438 78.275%
SYSAUX                               3020   152.3125 94.957%

6 rows selected.

论坛徽章:
177
秀才
日期:2016-02-18 09:39:10摩羯座
日期:2016-01-20 16:48:10火眼金睛
日期:2016-01-31 22:00:00巨蟹座
日期:2016-01-30 22:10:33目光如炬
日期:2016-01-03 22:00:00秀才
日期:2015-12-21 09:53:46目光如炬
日期:2015-12-20 22:00:00秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-14 15:02:13秀才
日期:2016-01-21 13:37:04
发表于 2017-6-14 10:16 | 显示全部楼层
这种清理方法可能相关视图没更新?
可否重启库再看看?

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-6-14 10:39 | 显示全部楼层
jieyancai 发表于 2017-6-14 10:16
这种清理方法可能相关视图没更新?
可否重启库再看看?

重启过了,没用,

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-6-14 11:35 | 显示全部楼层
本帖最后由 skyflyg 于 2017-6-14 11:37 编辑

  procedure segment_drop_corrupt(
        tablespace_name         in    varchar2  ,
        header_relative_file    in    positive ,
        header_block            in    positive
                        );
  --
  --  Drops a segment currently marked corrupt (without reclaiming space)
  --  Input arguments:
  --   tablespace_name      - name of tablespace in which segment resides
  --   header_relative_file - relative file number of segment segment header
  --   header_block         - block number of segment segment header


删除表为啥不是 DROP TABLE PURGE, 要通过这个 dbms_space_admin.segment_drop_corrupt 做什么实验吗?

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-6-14 11:45 | 显示全部楼层
哦,是因为这些临时段都没有正式的名字吗,所以常规的DROP用不了?

那个包里还有这个:
procedure drop_empty_segments(
    schema_name           in varchar2 default NULL,
    table_name            in varchar2 default NULL,
    partition_name        in varchar2 default NULL
    );

  --
  --  Description:
  --    Drop segments from empty table(s)/table fragments and dependent
  --    objects.

能用吗?

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-6-14 16:40 | 显示全部楼层
用了这个包,没什么效果,基本没收回空间,
来自安卓客户端来自客户端

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-6-14 16:47 | 显示全部楼层
只回收了1.x g, 此前提到的200g的空间,还是没回收,
164735d9zprgo1bqzfpug1.jpg
来自安卓客户端来自客户端

使用道具 举报

回复
论坛徽章:
0
发表于 2017-6-19 21:55 | 显示全部楼层
参考这个:http://www.dba-oracle.com/t_reclaim_space_temp_segment.htm
Answer:  I would wait for SMON to clean it up when he coalesces the tablespace. The System Monitor background process (SMON) recovers after instance failure and monitors temporary segments and extents.

-->alter tablespace USERS coalesce;

使用道具 举报

回复
论坛徽章:
180
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39马上有车
日期:2014-02-18 16:41:11马上有钱
日期:2014-11-24 15:17:08马上有钱
日期:2014-11-12 09:33:24马上有房
日期:2014-11-07 08:46:05马上有钱
日期:2014-10-27 09:26:57马上有对象
日期:2014-10-28 10:28:08itpub13周年纪念徽章
日期:2014-10-10 10:38:25马上有对象
日期:2015-01-14 17:33:15
发表于 2017-6-19 22:48 | 显示全部楼层
你跟踪一下这行看看
exec dbms_space_admin.tablespace_rebuild_bitmaps('USERS');
必要是解密 dbms_space_admin包看看.

使用道具 举报

回复
论坛徽章:
180
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39马上有车
日期:2014-02-18 16:41:11马上有钱
日期:2014-11-24 15:17:08马上有钱
日期:2014-11-12 09:33:24马上有房
日期:2014-11-07 08:46:05马上有钱
日期:2014-10-27 09:26:57马上有对象
日期:2014-10-28 10:28:08itpub13周年纪念徽章
日期:2014-10-10 10:38:25马上有对象
日期:2015-01-14 17:33:15
发表于 2017-6-19 22:53 | 显示全部楼层
你可以看看链接
http://blog.itpub.net/267265/viewspace-2128290/
也许对你有用.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表