当前位置:  数据库>oracle

Oracle释放高水位线

    来源: 互联网  发布时间:2017-06-23

    本文导语: /*****************************************************************原因:由于原导出数据库没有整理表空间其中主要包括两方面,一是用户产生太多的DELETE,致使表的高位线(HWM)在很高的位置,所以尽管数据量很小,但是占据的表空间很大,...

/*****************************************************************
原因:由于原导出数据库没有整理表空间其中主要包括两方面,一是用户产生太多的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;


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ORACLE 如何查询被锁定表及如何解锁释放session
  • Oracle释放undo表空间
  • 深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法
  • Oracle连接数过多释放机制
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • sqlserver iis7站长之家
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3