zoukankan      html  css  js  c++  java
  • 回收带Lob字段表占用的空间

    SQL> select object_name from user_objects;
    
    no rows selected
    
    SQL> select segment_name from user_segments;
    
    no rows selected
    
    SQL> create table test1 as select * from ecds.MSG_MESSAGELOG;
    
    Table created.
    
    SQL> select segment_name,segment_type from user_segments;
    
    SEGMENT_NAME									  SEGMENT_TYPE
    --------------------------------------------------------------------------------- ------------------
    TEST1										  TABLE
    SYS_IL0000324358C00006$$							  LOBINDEX
    SYS_LOB0000324358C00006$$							  LOBSEGMENT
    
    SQL> desc test1
     Name														   Null?    Type
     ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
     ID														   NOT NULL VARCHAR2(50)
     M_MESGTYPE														    VARCHAR2(20)
     M_MESGSTATE														    VARCHAR2(100)
     M_OPERATEDATE														    TIMESTAMP(6)
     M_SUCCESSFULDATE													    TIMESTAMP(6)
     M_MESGCONTENT														    CLOB
     M_SENDORRECEIVE													    VARCHAR2(100)
     M_REPEATTIMES														    NUMBER(38)
     M_WORKDATE														    DATE
     M_ORIGSENDER														    VARCHAR2(100)
     M_ORIGSENDDATE 													    DATE
     M_MESGID														    VARCHAR2(100)
     M_FK_MESSAGESAVETIMEID 												    VARCHAR2(100)
     M_MSGTABLEID														    VARCHAR2(100)
     M_CREDTTM														    TIMESTAMP(6)
     M_ACCTSVCR														    VARCHAR2(100)
     M_MSGID4SUM														    VARCHAR2(100)
     M_ACCPTRSVCR														    VARCHAR2(100)
    
    SQL> select min(m_origsenddate),max(m_origsenddate) from test1;
    
    MIN(M_ORIGSE MAX(M_ORIGSE
    ------------ ------------
    25-JUN-10    20-OCT-13
    
    SQL> select count(*) from test1 a 
      2  where a.m_origsenddate >= date'2011-12-31';
    
      COUNT(*)
    ----------
        679430
    
    SQL> select count(*) from test1 a;
    
      COUNT(*)
    ----------
       1004647
    SQL> select segment_name,bytes/1024/1024 from user_segments;
    
    SEGMENT_NAME									  BYTES/1024/1024
    --------------------------------------------------------------------------------- ---------------
    TEST1											     1088
    SYS_IL0000324358C00006$$								    .1875
    SYS_LOB0000324358C00006$$								     4464
    
    
    SQL> delete from test1 a where a.m_origsenddate >= date'2011-12-31';
    
    679430 rows deleted.
    
    SQL> commit;
    
    Commit complete.
    
    ----------------------------------------------------------------------------------------------------
    SQL> select segment_name,bytes/1024/1024 from user_segments;
    
    SEGMENT_NAME									  BYTES/1024/1024
    --------------------------------------------------------------------------------- ---------------
    TEST1											     1088
    SYS_IL0000324358C00006$$								       29
    SYS_LOB0000324358C00006$$								     4464
    
    SQL> alter table test1 move;
    
    Table altered.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select segment_name,bytes/1024/1024 from user_segments;
    
    SEGMENT_NAME									  BYTES/1024/1024
    --------------------------------------------------------------------------------- ---------------
    TEST1											      360
    SYS_IL0000324358C00006$$								       29
    SYS_LOB0000324358C00006$$								     4464
    
    
    SQL> select segment_name,bytes/1024/1024,segment_type from user_segments;
    
    SEGMENT_NAME									  BYTES/1024/1024 SEGMENT_TYPE
    --------------------------------------------------------------------------------- --------------- ------------------
    TEST1											      360 TABLE
    SYS_IL0000324358C00006$$								       29 LOBINDEX
    SYS_LOB0000324358C00006$$								     4464 LOBSEGMENT
    
    一个Lob字段会自动创建索引
    
    SQL>  alter table test1 modify lob(M_MESGCONTENT) (shrink space);
    
    Table altered.
    
    SQL> select segment_name,bytes/1024/1024,segment_type from user_segments;
    
    SEGMENT_NAME									  BYTES/1024/1024 SEGMENT_TYPE
    --------------------------------------------------------------------------------- --------------- ------------------
    TEST1											      360 TABLE
    SYS_IL0000324358C00006$$								       29 LOBINDEX
    SYS_LOB0000324358C00006$$								1348.6875 LOBSEGMENT
    
    此时空间回收

  • 相关阅读:
    2020.10.6 提高组模拟
    GMOJ 6815. 【2020.10.06提高组模拟】树的重心
    Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) D. Isolation
    Forethought Future Cup
    Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round) D. Diana and Liana
    2020.10.07提高组模拟
    2020.10.05提高组模拟
    9.29 联赛组作业
    JZOJ 3978. 寝室管理
    Centos7下安装netstat的方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352274.html
Copyright © 2011-2022 走看看