网站首页 > 文章中心 > 其它

oracle怎么建表分区

作者:小编 更新时间:2023-10-21 13:08:08 浏览量:56人看过

oracle根据多字段创建分区表

最近有业务场景需要用多个字段做分区表,数据量比较大,保存时间也较长,经过学习与实践,算是基本完成,以下内容为实践样例:

---建表语句

create table t_table

(

appdate date,

text varchar(10)

)

partition by range(appdate)--根据字段 appdate 创建主分区

interval(numtoyminterval(1,'MONTH')) --主分区按 月 自动创建分区

subpartition by list(areacode) --再按 地区 创建子分区

subpartition template( --指定明确的子分区信息

subpartition sub1 values('101'),

---模拟写入测试数据

--查询数据

select * from t_table;

--查询主分区数据

select *from t_table partition (mainpartition1);

--查询子分区数据

select *from t_table subpartition (mainpartition1_sub1);

--查看自动创建的主分区

select * from user_tab_partitions where table_name='T_TABLE'

Oracle分区表怎么建唯

①.、一般分区表都会很大,所以可以先创建表空间,为了让分区表存放到单独的表空间,否则默认会存放到USERS表空间

ID NUMBER(10) NOT NULL,

CREATE_TIME DATE,

TABLESPACE TS1

PARTITION BY LIST (ID)

(PARTITION PT_1001 VALUES (1001) TABLESPACE TS1);

select TABLE_NAME,PARTITION_COUNT,DEF_TABLESPACE_NAME from USER_PART_TABLES order by DEF_TABLESPACE_NAME;

ORACLE表分区

一.表分区策略

①识别大表

采用ANALYZE TABLE语句进行分析,然后查询数据字典获得相应的数据量.

可根据月份,季度以及年份等进行分区;

要对每个表空间的大小进行估计

二.创建表分区

a.创建范围分区的关键字是'RANGE'

①范围分区

create table ware_retail_part --创建一个描述商品零售的数据表

id integer primary key,--销售编号

retail_date date,--销售日期

partition by range(retail_date)

);

三.创建索引分区

索引分区分为本地索引分区和全局索引分区,全局索引不反应基础表的结构,要分区只能进行范围分区.

创建索引分区要参照表分区

四.分区技术简介

优点:

①减少维护工作量

五,管理表分区

①添加表分区

ALTER TABLE...ALTER PARATITION

ALTER TABLE...DROP PARTITION

删除分区时,里面的数据也会被删除.

-创建表和分区

create table sales--创建一个销售记录表

id number primary key,--记录编号

saledate date--销售日期

partition by range(saledate)--按照日期分区

--第一季度数据

--第二季度数据

--第三季度数据

--第四季度数据

--创建局部索引

local(

partition part_seal tablespace tbsp_1,

--并入分区

--重建局部索引

六.管理索引分区

删除索引:DROP PARTITION

重建分区:REBUILT PARTITION

更名索引分区:RENAME PARTITION

分割索引分区:SPLIT PARTITION

oracle11g自动分区

在Oracle10g中,没有定义间隔分区,只能通过范围分区实现间隔分区功能,如果要实现自动创建分区,只能通过创建JOB或者scheduler来实现;而在11g中,Oracle直接提供了间隔分区功能,大大简化了间隔分区的实现.

----注:oracle11g虽然可以自动分区,但是分区的名字不能自定义,对于需要定时删除分区时没法处理,不如通过时间范围来手工分区.详见

create table HIP_LOG_NODE_Part

RECORD_TIME?? DATE

)tablespace TB_HIP_LOG_NODE

PARTITION BY RANGE (RECORD_TIME) interval (numtoyminterval(1, 'month'))

STORE IN (TB_HIP_LOG_NODE)

①.、Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区.

numtodsinterval、numtodsinterval函数,将数字转成年月,时分秒

详见:

非分区字段创建主键,则创建主键local索引时必须加上分区字段

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (主键字段,分区字段) USING INDEX LOCAL;

①不保留,直接删除:

alter table table_name drop/truncate partition partition_name;

具体用drop还是truncate,得你自己衡量,drop的话原来的分区和数据直接就没有了,truncate的话,只是数据没有了,分区还在.

oracle如何按照mod建分区

根据数据表字段值的范围进行分区.

以上就是土嘎嘎小编为大家整理的oracle怎么建表分区相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章