什么是离线表分区?
1、就是在关闭正在运行的应用下操作表的分区,如果不关闭应用请情况下,此时做表分区操作,当用户在应用上进行了一个添加的操作时,那么此时的数据不会插入到数据库中。造成数据的不一致性。所以使用在线表分区的方式可以实现。
-- 第一步、创建临时表分区与原表的字段一致 (EPS_ENTITY_TEMP)
-- 创建表分区,以站点id为分区
create table easysite8.EPS_ENTITY_TEMP
(
ID VARCHAR2(36) not null,
ARTICLE_KEY VARCHAR2(36),
PAGE_ID VARCHAR2(36),
SITE_ID VARCHAR2(36),
REF_ID VARCHAR2(36),
COPY_ID VARCHAR2(36),
WORKFLOW_STATE VARCHAR2(100),
ARTICLE_STATE VARCHAR2(100),
REFEREBCE_TYPE VARCHAR2(20),
COPY_TYPE VARCHAR2(20),
STATIC_DATE VARCHAR2(36),
LIMIT_TIME VARCHAR2(20),
TOP_ORDER NUMBER(9) default 10000,
ARTICLE_ORDER NUMBER(11),
ARTICLE_ORDER_BASE NUMBER(11),
TO_TOP VARCHAR2(10),
PASS_STATE VARCHAR2(10),
ARTICLE_VERSION NUMBER(5),
TITLE VARCHAR2(4000),
SHORT_TITLE VARCHAR2(4000),
SUB_TITLE VARCHAR2(4000),
TITLE_COLOR VARCHAR2(1000),
INFOSUMMARY VARCHAR2(4000),
AUTHOR VARCHAR2(256),
SOURCE_ID VARCHAR2(1000),
EDITOR_ID VARCHAR2(256),
EDITOR_NAME VARCHAR2(256),
CREATE_DATE VARCHAR2(20),
EXPIRED_DATE VARCHAR2(20),
RELEASE_DATE VARCHAR2(20),
END_EDIT_DATE VARCHAR2(20),
SHOW_DATE VARCHAR2(20),
END_EID VARCHAR2(256),
END_ENAME VARCHAR2(256),
SORTID VARCHAR2(20),
ISPAGE CHAR,
TITLE_IMAGE_URL VARCHAR2(4000),
TITLE_ATTACHMENT_URL VARCHAR2(4000),
KEYWORDS VARCHAR2(4000),
ENTITY_TYPE VARCHAR2(20),
ENTITY_ATTACHMENT_ID VARCHAR2(36),
ENTITY_URL VARCHAR2(4000),
ENTITY_TAG VARCHAR2(4000),
ARTICLE_ZHUTI VARCHAR2(256),
ARTICLE_TICAI VARCHAR2(256),
BUSINESS_PK VARCHAR2(4000),
MENBER_ID VARCHAR2(50),
DEPT_INDEX VARCHAR2(1000),
DEPT_NAME VARCHAR2(1000),
LINK_INFO VARCHAR2(1000),
A_VIEW_TEMPLATE_ID VARCHAR2(200),
A_DETAIL_INFO_PAGE VARCHAR2(200),
WORD_COUNT NUMBER(9),
EDIT_TIMESTAMP VARCHAR2(100),
APPROVE_DEPT VARCHAR2(100),
APPROVE_USERNAME VARCHAR2(100),
IS_COMMENT NUMBER,
EXT_STR1 VARCHAR2(4000),
EXT_STR2 VARCHAR2(4000),
EXT_STR3 VARCHAR2(4000),
EXT_STR4 VARCHAR2(4000),
EXT_STR5 VARCHAR2(4000),
EXT_STR6 VARCHAR2(4000),
EXT_STR7 VARCHAR2(4000),
EXT_STR8 VARCHAR2(4000),
EXT_STR9 VARCHAR2(4000),
EXT_STR10 VARCHAR2(4000),
EXT_STR11 VARCHAR2(4000),
EXT_STR12 VARCHAR2(4000),
EXT_STR13 VARCHAR2(4000),
EXT_STR14 VARCHAR2(4000),
EXT_STR15 VARCHAR2(4000),
EXT_STR16 VARCHAR2(4000),
EXT_STR17 VARCHAR2(4000),
EXT_STR18 VARCHAR2(4000),
EXT_STR19 VARCHAR2(4000),
EXT_STR20 VARCHAR2(4000),
EXT_STR21 VARCHAR2(4000),
EXT_STR22 VARCHAR2(4000),
EXT_STR23 VARCHAR2(4000),
EXT_STR24 VARCHAR2(4000),
EXT_STR25 VARCHAR2(4000),
EXT_STR26 VARCHAR2(4000),
EXT_STR27 VARCHAR2(4000),
EXT_STR28 VARCHAR2(4000),
EXT_STR29 VARCHAR2(4000),
EXT_STR30 VARCHAR2(4000),
EXT_STR31 VARCHAR2(4000),
EXT_STR32 VARCHAR2(4000),
EXT_STR33 VARCHAR2(4000),
EXT_STR34 VARCHAR2(4000),
EXT_STR35 VARCHAR2(4000),
EXT_STR36 VARCHAR2(4000),
EXT_STR37 VARCHAR2(4000),
EXT_STR38 VARCHAR2(4000),
EXT_STR39 VARCHAR2(4000),
EXT_STR40 VARCHAR2(4000),
EXT_INT_A NUMBER(9),
EXT_INT_B NUMBER(9),
EXT_INT_C NUMBER(9),
EXT_FLOAT_A FLOAT,
EXT_FLOAT_B FLOAT,
EXT_FLOAT_C FLOAT,
SUBISSUED_STATE VARCHAR2(100),
COPY_PAGE_ID VARCHAR2(36),
REF_PAGE_ID VARCHAR2(36),
STATIC_URL VARCHAR2(200),
STATIC_ID VARCHAR2(36),
OPEN_VIEW_PERMISSION VARCHAR2(1) default 0,
OPEN_DEFINE_HTML NUMBER default 0,
HTML_PATH VARCHAR2(200)
)
partition by list(site_id)(
partition P_ENTITY_SITE_ID1 values ('d485cc115f9b40548805cbf9c7b59b9e'),
partition P_ENTITY_SITE_ID2 values ('4424f5578311433088d644b15a7948da'),
partition P_ENTITY_SITE_ID3 values ('4e32ef1450be42e689f433902d3fe7b3'),
partition P_ENTITY_SITE_ID4 values ('376598b59bdf4e7cb8d0fdaa761cd0dc'),
partition P_ENTITY_SITE_ID5 values ('0112505aca0542cdada1b621d4d20763'),
partition P_ENTITY_SITE_ID6 values ('451b98e0f0d04582ad4764b3e6722c2f'),
partition P_ENTITY_SITE_ID7 values ('64dd8b9145224d2094262e5fc3ebc124'),
partition P_ENTITY_SITE_ID8 values ('ed9f99c1f9654dbe9ce8504b09cdc8fe'),
partition P_ENTITY_SITE_ID9 values ('81d10f96373a4a4cb202e4446c07557b'),
partition P_ENTITY_SITE_ID10 values ('0ee331dadc10462a97757622488ef727'),
partition P_ENTITY_SITE_ID11 values ('e439d04963c34b85a5d451c12573c221'),
partition P_ENTITY_SITE_ID12 values ('80b36335e4964afeba70a1da87e9c1a5'),
partition P_ENTITY_SITE_ID13 values ('9ae909b1001e45af83f2b91b07311808'),
partition P_ENTITY_SITE_ID14 values ('682a8ebc9fb049a6b7c9a9fe21491096'),
partition P_ENTITY_SITE_ID15 values ('f505973a873b4a02aee431bb3b3593d4'),
partition P_ENTITY_SITE_ID16 values ('8777ff382f424a8d8903c08d3fd4a17d'),
partition P_ENTITY_SITE_ID17 values ('d3e0d78b858f4e619911adebd6083059'),
partition P_ENTITY_SITE_ID18 values ('a72131c16a9f49308edee0b382e6a244'),
partition P_ENTITY_SITE_ID19 values ('208fc0f3664746d0b6b7f35c5db876c3'),
partition P_ENTITY_SITE_ID20 values ('2d6d65a033964a5ead39787affbbad79'),
partition P_ENTITY_SITE_ID21 values ('1fd128618ec94bfbbcfa4372a7c05db7'),
partition P_ENTITY_SITE_IDDEFAULT values (default)
);
-- 第二步、将原表的数据加入到临时表分区
insert into easysite8.EPS_ENTITY_TEMP select * from easysite8.EPS_ENTITY;
-- 统计两张表数据总数
-- 17650
select count(*) from EPS_ENTITY;
-- 17650
select count(*) from EPS_ENTITY_TEMP;
--第三步、将原表(EPS_ENTITY)改为EPS_ENTITY_BAK
--在修改前查询原表总数
--17650
select count(*) from EPS_ENTITY
-- 重命名表
rename EPS_ENTITY to PS_ENTITY_BAK
--第四步、将临时表分区(EPS_ENTITY_TEMP)改为原表的名称(EPS_ENTITY)
-- 重命名表
rename EPS_ENTITY_TEMP to EPS_ENTITY
-- 第五步、在表EPS_ENTITY上重建索引,主键,首先修改EPS_ENTITY_BAK索引为_BAK
-- Create/Recreate indexes
create index ENTITYARTICLEKEY_BAK on easysite8.EPS_ENTITY (ARTICLE_KEY)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 17M
next 1M
minextents 1
maxextents unlimited
);
create index ENTITYPAGEID_BAK on easysite8.EPS_ENTITY (PAGE_ID)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 19M
next 1M
minextents 1
maxextents unlimited
);
create index ENTITYREFID_BAK on easysite8.EPS_ENTITY (REF_ID)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
create index ENTITYSITEID_BAK on easysite8.EPS_ENTITY (SITE_ID)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 19M
next 1M
minextents 1
maxextents unlimited
);
create index ENTITYSTATICID_BAK on easysite8.EPS_ENTITY (STATIC_ID)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 16M
next 1M
minextents 1
maxextents unlimited
);
create index ENTITYTITLE_BAK on easysite8.EPS_ENTITY (TITLE)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 167
storage
(
initial 10M
next 1M
minextents 1
maxextents unlimited
);
create unique index SYS_C005632 on easysite8.EPS_ENTITY (ID)
tablespace EPSSITE
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 17M
next 1M
minextents 1
maxextents unlimited
);
--第六步、创建分区索引
-- 删除站点site_id 索引
drop index ENTITYSITEID_BAK;
-- 表分区EPS_ENTITY_EXT类型list表分区创建local索引
create index IDX_PARTI_ENTITY_LOCAL_ID on EPS_ENTITY(SITE_ID) local;
-- 查看索引 表名一定要大写IDX_PARTI_LIST_ID
select index_name, partitioning_type, partition_count From user_part_indexes where index_name = 'IDX_PARTI_ENTITY_LOCAL_ID';
select * from user_part_indexes;
-- 查看索引表,可以知道哪些是分区设置索引index
select partition_name, high_value, tablespace_name from user_ind_partitions where index_name = 'IDX_PARTI_ENTITY_LOCAL_ID' order by partition_position;
-- 第七步、删除EPS_ENTIYT_BAK表
drop table EPS_ENTIYT_BAK