/*****************************************************************
原因:由于原导出数据库没有整理表空间其中主要包括两方面,
一是用户产生太多的DELETE,致使表的高位线(HWM)在很高的位置,
所以尽管数据量很小,但是占据的表空间很大,二是索引没有重建,
频繁的删除以及更新使得索引越来越大,REBUILD索引是个很必要的事情
*****************************************************************/

--** 优先处理CUX客制化对象

--Step1
--Tablespace Summary
  SELECT A.TABLESPACE_NAME,
         A.TOTAL M_TOTAL,
         NVL (B.USED, 0) M_USED,
         NVL ( (B.USED / A.TOTAL) * 100, 0) PCT_USED,
         A.FILE_NAME
    FROM (  SELECT TABLESPACE_NAME,
                   SUM (BYTES) / (1024 * 1024) TOTAL,
                   WMSYS.WM_CONCAT (FILE_NAME) FILE_NAME
              FROM SYS.DBA_DATA_FILES
          GROUP BY TABLESPACE_NAME) A,
         (SELECT TABLESPACE_NAME, BYTES / (1024 * 1024) USED
            FROM SYS.SM$TS_USED) B
   WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
   --AND A.TABLESPACE_NAME LIKE 'CUX%'
ORDER BY NVL ( (B.USED / A.TOTAL) * 100, 0) DESC;

--Tablespace Objects Detail
  SELECT A.TABLESPACE_NAME,
         A.TOTAL M_TOTAL,
         NVL (B.USED, 0) M_USED,
         NVL ( (B.USED / A.TOTAL) * 100, 0) PCT_USED,
         A.FILE_NAME,
         C.OJBECT_TYPE,
         C.OJBECT_NAME,
         C.M_OBJ_USED,
         NVL ( (C.M_OBJ_USED / A.TOTAL) * 100, 0) PCT_OBJ_USED
    FROM (  SELECT TABLESPACE_NAME,
                   SUM (BYTES) / (1024 * 1024) TOTAL,
                   WMSYS.WM_CONCAT (FILE_NAME) FILE_NAME
              FROM SYS.DBA_DATA_FILES
          GROUP BY TABLESPACE_NAME) A,
         (SELECT TABLESPACE_NAME, BYTES / (1024 * 1024) USED
            FROM SYS.SM$TS_USED) B,
         (SELECT TABLESPACE_NAME,
                 SEGMENT_NAME OJBECT_NAME,
                 SEGMENT_TYPE OJBECT_TYPE,
                 (BYTES / 1024 / 1024) M_OBJ_USED
            FROM DBA_SEGMENTS
           WHERE SEGMENT_TYPE IN ('TABLE', 'INDEX')) C
   WHERE     A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
         AND A.TABLESPACE_NAME = C.TABLESPACE_NAME(+)
ORDER BY NVL ( (B.USED / A.TOTAL) * 100, 0) DESC;

--Step2
-------------------------------------
--释放高水位线 HWM
--只对有清理过数据的表对象执行(耗时过长)
DECLARE
   L_SQL1        VARCHAR2 (1000);
   L_SQL2        VARCHAR2 (1000);
BEGIN
   FOR R IN (SELECT (OWNER || '.' || SEGMENT_NAME) OBJ
               FROM DBA_SEGMENTS
              WHERE SEGMENT_TYPE = 'TABLE' AND TABLESPACE_NAME LIKE 'CUX%'
              AND SEGMENT_NAME IN('CUX_INV_ISSUE_OA_LOG'))
   LOOP
      L_SQL1 := 'alter table ' || R.OBJ || ' enable row movement';
      L_SQL2 := 'alter table ' || R.OBJ || ' shrink space';
      DBMS_OUTPUT.PUT_LINE (R.OBJ);

EXECUTE IMMEDIATE L_SQL1;
      EXECUTE IMMEDIATE L_SQL2;
   END LOOP;
END;

-------------------------------
/*
--暂不应用
--Rebuild Index
DECLARE
   L_SQL   VARCHAR2 (1000);
BEGIN
   FOR R IN (SELECT (OWNER||'.'||SEGMENT_NAME) OBJ
               FROM DBA_SEGMENTS
              WHERE SEGMENT_TYPE = 'INDEX' AND TABLESPACE_NAME = 'CUX_INDEX')
   LOOP
      L_SQL := 'alter index ' || R.OBJ || ' rebuild online';
      DBMS_OUTPUT.PUT_LINE (L_SQL);

EXECUTE IMMEDIATE L_SQL;
   END LOOP;
END;
*/

--删除表同时删除回收站 Shift+Delete
--DROP TABLE CUX.CUX_INV_ISSUE_OA_LOG_TEST1 PURGE;
--alter database datafile 'filename' resize size;

Oracle释放高水位线的更多相关文章

  1. Oracle的高水位线

    一.什么是水位线 所有的oracle段都会有一个在段内容纳数据的上线,把这个上限成为“high water mark”,这是一个标记,用来说明已经有多少没有使用的数据块分配给这个段,原则上high w ...

  2. Oracle数据库入门——高水位线详解

    一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...

  3. oracle 高水位线详解

    一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...

  4. 一、oracle 高水位线详解

    一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...

  5. [转载]oracle 高水位线详解

    一.oracle 高水位线详解 出处: https://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html 一.什么是水线(High Wa ...

  6. 08 Oracle表碎片查询以及整理(高水位线)

    Oracle表碎片查询以及整理(高水位线) 1.表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎片.删除操作释放的空间不会被插入操作立即重用,甚至永远也不会被重用. 2.怎样确定是否有表碎片 ...

  7. oracle 基础知识(十五)----高水位线

    一,oracle的逻辑存储管理 ORACLE的逻辑存储管理,分4个粒度:表空间,段,区和块. ## 块 粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是 ...

  8. ORACLE 11g 生产中高水位线(HWM)处理

    数据库中表不断的insert,delete,update,导致表和索引出现碎片.这会导致HWM之前有很多的空闲空间,而oracle在做全表扫描的时候会读取HWM一下的所有块,这样会产生更多的IO,影响 ...

  9. oracle 高水位线

    一.oracle 高水位线详解 一.什么是水线(High Water Mark)? 概念: 1.块: 是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是 ...

随机推荐

  1. Ecshop的积分商城-对不起,该商品库存不足,现在不能兑换

    1. 打开Ecshop积分商城文件 "根目录/exchange.php" 发现248行与289行都有库存不足时报错的提示代码: 248行:     /* 查询:检查兑换商品是否有库 ...

  2. 【OS_Linux】Linux下软件的安装与卸载

    1.Linux中软件安装包的分类 1) 一类是可执行的软件包,无需编译直接安装.在Windows中所有的软件包都是这种类型.安装完这个程序后,你就可以使用,但你看不到源程序.而且下载时要注意这个软件是 ...

  3. Centos7下安装iptables防火墙

    说明:centos7默认使用的firewalld防火墙,由于习惯使用iptables做防火墙,所以在安装好centos7系统后,会将默认的firewall关闭,并另安装iptables进行防火墙规则设 ...

  4. 数据结构( Pyhon 语言描述 ) — — 第7章:栈

    栈概览 栈是线性集合,遵从后进先出原则( Last - in first - out , LIFO )原则 栈常用的操作包括压入( push ) 和弹出( pop ) 栈的应用 将中缀表达式转换为后缀 ...

  5. mysql参数讲解

    MySQL配置参数详解: http://blog.csdn.net/wlzx120/article/details/52301383 深入理解mysql参数 http://blog.itpub.net ...

  6. idea xml 一键生成 javabean

    操作步骤 1.复制的xml文件到工程的一个文件下 2.选中文件tools -> XML ACTIONS -> Generate schema from instance Document ...

  7. [LoadRunner]LR性能测试结果样例分析

    R性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源. ...

  8. Codeforces Round #438 by Sberbank and Barcelona Bootcamp (Div. 1 + Div. 2 combine

    最近只想喊666,因为我是真得菜,大晚上到网吧打代码还是很不错的嘛 A. Bark to Unlock time limit per test 2 seconds memory limit per t ...

  9. 【Luogu】P1594护卫队(前缀和+DP)

    TM搞了半天的二维DP方程还是错的. 这是题目链接: 设f[i]表示前i辆车顺利通过的最小时间. 则对于每一个i枚举该组车的起点j,然后从所有的f[j]+Min[j][i]中选一个最小的. Min[j ...

  10. POJ 2155 Matrix【二维线段树】

    题目大意:给你一个全是0的N*N矩阵,每次有两种操作:1将矩阵中一个子矩阵置反,2.查询某个点是0还是1 思路:裸的二维线段树 #include<iostream>#include< ...