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
Post a Comment