ORACLE 清理数据量大的表格

大致处理步骤:
1. 新建一个临时表,将需要保留数据导出到其中;
2. 删除原表;
3. 将临时表重命名成原表。
 
 
实际例子:
通过查询确认ANALYSE_SOURCE_SORTED表记录总数为30713630,需要删除的记录数为29612964.
由于需要删除的记录多,而且非实时更新表,选择如下方法来处理表:
 
1. 以traffic用户连接
conn traffic/traffic
 
2. 重命名之前备份的表名
rename ANALYSE_SOURCE_SORTED_temp to ANALYSE_SOURCE_SORTED_backup;
 
3. 检查备份表数据量
select count(*) from ANALYSE_SOURCE_SORTED_backup; --> 30713630
 
4. 创建temp表,并导入2012年数据
create table ANALYSE_SOURCE_SORTED_temp as select * from ANALYSE_SOURCE_SORTED where to_char(create_time,'yyyy-mm-dd') > '2011-12-31';
 
select count(*) from analyse_source_sorted_temp --> 1100666
 
5. 检查表结构
desc ANALYSE_SOURCE_SORTED_temp;
desc ANALYSE_SOURCE_SORTED;
 
6. 清空ANALYSE_SOURCE_SORTED数据
truncate table ANALYSE_SOURCE_SORTED;
 
7. 删除ANALYSE_SOURCE_SORTED表
drop table ANALYSE_SOURCE_SORTED;
 
8. 将temp重命名
rename ANALYSE_SOURCE_SORTED_temp to ANALYSE_SOURCE_SORTED;
 
9. 创建索引
-- Create/Recreate indexes 
create index TRAFFIC.INDEX_DOMAIN_HASH on TRAFFIC.ANALYSE_SOURCE_SORTED (DOMAIN_HASH)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_MEMBER_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (MEMBER_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_SESSION_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (SESSION_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_SITE_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (SITE_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
 
 
附录:ANALYSE_SOURCE_SORTED表结构:
 
create table TRAFFIC.ANALYSE_SOURCE_SORTED                         
(                                                   
  SOURCE_ID NUMBER not null,                    
  SESSION_ID VARCHAR2(1000),                     
  MEMBER_ID VARCHAR2(1000),                     
  IP VARCHAR2(20),                       
  PAGE_NAME VARCHAR2(100),                      
  PAGE_URL VARCHAR2(2000),                     
  PAGE_TITLE VARCHAR2(2000),                     
  USER_AGENT VARCHAR2(1000),                     
  REFERRER VARCHAR2(2000),                     
  BROWSER VARCHAR2(100),                      
  COLOR_DEPTH VARCHAR2(20),                       
  OPERATING_SYSTEM VARCHAR2(100),                      
  JAVA_ENABLE VARCHAR2(18),                       
  FLASH_VERSION VARCHAR2(18),                       
  BROWSER_LANGUAGE VARCHAR2(20),                       
  CONTENT_CHARSET VARCHAR2(50),                       
  HOST_NAME VARCHAR2(50),                       
  WEBSITE_NAME VARCHAR2(18),                       
  DOMAIN_HASH VARCHAR2(1000),                     
  NEW_MEMBER VARCHAR2(2),                        
  CREATE_TIME TIMESTAMP(6),                       
  CREATE_USER VARCHAR2(100),                      
  SITE_ID VARCHAR2(100),                      
  COOKIES_PARAM VARCHAR2(1000),                     
  REFERRER_DOMAIN VARCHAR2(1000),                     
  SEARCH_KEYWORD VARCHAR2(2000),                     
  TRAFFIC_SOURCE VARCHAR2(10),                       
  ROW_ORDER NUMBER,                             
  TIME_ON_PAGE NUMBER,                             
  SCREEN_RES VARCHAR2(50)                        
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
 
create index TRAFFIC.INDEX_DOMAIN_HASH on TRAFFIC.ANALYSE_SOURCE_SORTED (DOMAIN_HASH)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_MEMBER_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (MEMBER_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_SESSION_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (SESSION_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TRAFFIC.INDEX_SITE_ID on TRAFFIC.ANALYSE_SOURCE_SORTED (SITE_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

Comments

Popular posts from this blog

Nginx Proxy & Load Balance & LNMP

Snort+barnyard2+Snorby CentOS 6.5_64 Installation

ORACLE Error