0
点赞
收藏
分享

微信扫一扫

oracle实现离线表分区

寒羽鹿 2022-03-30 阅读 102

什么是离线表分区?
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



















举报

相关推荐

0 条评论