oracle表分区四种方式的含义,Oracle表分区详细说明
Oracle表分区
自从oracle8i 开始可以把一个表分割为多个小的部分,这样可以对oracle的性能优化带来很大的好处~
例如:改善表的查询性能,更加容易管理表数据,备份和恢复操作更方便
在oracle 中分区表 分为好几种的(范围分区,散列分区,子分区,列表分区,索引分区)下面我们来慢慢介绍
现在我们来建立一个[范围分区]
create table RangeTable(
id int primary key,
name varchar(20),
grade int
)
partition by rang(grade)
(
partition part1 values less then(50) tablespace Part1_tb,
partition part2 values less then(MAXVALUE) tablespace Part2_tb
);
如果grade的值小于50的话 就把记录放到名为part1的分区当中,part1分区将被存储在Part1_tb表空间中
其他的就放在part2中 MAXVALUE是oracle的关键字 表示最大值
[散列分区]
create table HashTable(
id int primary key,
name varchar(20),
grade int
)
/*有两种方式,1就是指定分区数目和所使用的表空间,2指定以命名的分区*/
partition by hash(grade)
partitions 10 -- 指定分区的数目
store in(Part1_tb,Part2_tb,Part3_tb) --如果指定的分区数目比表空间多,分区会以循环方式分配到表空间
/*------------------------------------*/
partition by rang(grade)--这种方式就是 指定以命名的分区
(
partition part1 tablespace Part1_tb,
partition part2 tablespace Part2_tb
);
[子分区]即是分区的分区
create table ChildTable(
id int primary key,
name varchar(20),
grade int
)
partition by rang(grade)
subpartition by hash(grade)
partitions 5
(
partition part1 values less then(30) tablespace Part1_tb,
partition part2 values less then(60) tablespace Part2_tb,
partition part3 values less then(MAXVALUE) tablespace Part3_tb
);
[列表分区]告诉oracle所有可能的值
create table ListTable(
id int primary key,
name varchar(20),
area varchar(10)
)
partition by list(area)
(
partition part1 values('guangdong','beijing') tablespace Part1_tb,
partition part2 values('shanghai','nanjing') tablespace Part2_tb
);
[索引分区]索引也可以按照和表进行分区时使用的相同的值范围来分区
create index IndexTable_index
on IndexTable(name)
local
(
partition part1 tablespace Part1_tb,
partition part2 tablespace Part2_tb
)
--local 告诉oracle表 IndexTable的每一个分区建立一个独立的索引
create index IndexTable_index
on IndexTable(name)
global;
--global为全局索引 全局索引可以包含多个分区的值 局部索引比全局索引容易管理,而全局索引比较快
注意:不能为散列分区 或者 子分区创建全局索引
查询某一个表分区
select * from table partition(part1);
oracle表分区主要是为了容易管理和性能方面考虑,有四种分区方法:
1.区间分区:
create table range_example
(
range_column number,
sj date
)
PARTITION BY RANGE(range_column)
(
PARTITION part_1 VALUE LESS THAN(18),
PARTITION part_2 VALUE LESS THAN(40),
PARTITION part_3 VALUE LESS THAN(120)
)
;
2.散列分区
create table range_example
(
range_column number,
sj date
)
PARTITION BY HASH(range_column)
(
PARTITION part_1,
PARTITION part_2
);
使用散列分区你无法控制一行放在哪个分区中,如果改变散列分区的个数,所有的数据都将在分区中重新分布.
3.列表分区
create table range_example
(
range_column number,
sj date
)
PARTITION BY LIST(range_column)
(
PARTITION part_1 VALUES(1,2,3),
PARTITION part_2 VALUES(4,5,6),
PARTITION part_2 VALUES(default)
);
4.组合分区
组合分区是区间分区和散列分区的组合或区间分区和列表分区的组合,
顶层分区总是区间分区,第二层分区可能是列表分区或散列分区
create table range_example
(
range_column number,
id varchar2(2),
sj date
)
PARTITION BY RANGE(range_column)
SUBPARTITION BY LIST(id)
(
PARTITION part_1 VALUES LESS THAN(18)
(
SUBPARTITOIN part_sub_1 VALUES('A','B','C'),
SUBPARTITOIN part_sub_2 VALUES('D','E','F')
)
PARTIRION part_2 VALUES LESS THAN(40)
(
SUBPARTITION part_sub_3 VALUES('AA','BB','CC'),
SUBPARTITION part_sub_4 VALUES('DD','EE','FF')
)
PARTITION part_3 VALUES LESS THAN(120)
(
SUBPARTITION part_sub_5 VALUES(default)
)
)
分区维护 移动分区 alter table goods move partition p1 tablespace system;
删除分区 alter table goods drop partition p1;
添加分区 alter table goods add partition p1 values
less than(to_date('1999-08=01','YYYY-MM-DD'));
结合分区(只能用于散列方法分区)
alter table goods coalesce partition;
截断分区 alter table goods truncate partition p3;
拆分分区 alter table goods split partiiton p2
at(to_date('1999-12-12','yyyy-mm-dd'))
into(partiiton p4,partiiton p5);
合并分区 alter table goods merge partitions p4,p5 into parititon p6
交换表中的数据
alter table tab2 exchange partiiton p1
with table tab1
二,-------------------------------------------------------------
-- Create table(创建分区表)
create table BILL_MONTHFEE_ZERO
(
SERV_ID NUMBER(20) not null,
BILLING_CYCLE_MONTH NUMBER(6) not null,
DATE_TYPE NUMBER(1),
ACC_NBR VARCHAR2(80)
)
partition by range (BILLING_CYCLE_MONTH)
(partition p_200407 values less than (200407)
tablespace TS_ZIKEN
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0),
partition p_200408 values less than (200408)
tablespace TS_ZIKEN
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0))
;
create index idx_bill_monthfee_zero_idx01 on bill_monthfee_zero(billing_cycle_month)
tablespace TS_ZIKEN_idx
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0) nologging;
grant all on bill_monthfee_zero to dxsq_dev;
--增加分区表
alter table BILL_MONTHFEE_ZERO add Partition p_200409
values less than (200409) tablespace ts_ziken;
--删除一分区
alter table part_tbl drop Partition part_tbl_08;
--将一个分区分为两个分区
alter table bill_monthfee_zero split Partition p_200409 at (200409)
into (Partition p_200409_1 tablespace ts_ziken,
Partition p_200409_2 tablespace ts_ziken_idx);
--合并分区
ALTER TABLE bill_monthfee_zero
MERGE PARTITIONS p_200408, p_200409 INTO PARTITION p_all
--将分区改名
alter table bill_monthfee_zero rename Partition p_200408 to p_fee_200408
--将分区改表空间
alter table bill_monthfee_zero move Partition p_200409
tablespace ts_ziken_01 nologging
--查询特定分区
select count(*) from BILL_MONTHFEE_ZERO partition (p_200407);
--添加数据
insert into bill_monthfee_zero select * from bill_monthfee_zero partition (p_200407)
--分区表的导出
userid=dxsq/teledoone@jndxsq154
buffer=102400
tables=bill_monthfee:P_200401,
file=E:\exp_para\exp_dxsq_tables.dmp
log=E:\exp_para\exp_dxsq_tables.log
--exchange partition:
交换分区是将一个分区的数据和一个非分区的表数据进行数据交换。条件是两者逻辑结构相同,而且表数据的数据不能超出分区主键的范围,否则:
SQL> alter table baisadmin.t_name exchange partition p5 with table baisadmin.t_n
ame_check_reg;
alter table baisadmin.t_name exchange partition p5 with table baisadmin.t_name_bak
技巧:
删除表中一个字段:
alter table bill_monthfee_zero set unused column date_type;
添加一个字段:alter table bill_monthfee_zero add date_type number(1);
oracle表分区四种方式的含义,Oracle表分区详细说明相关推荐
- css样式引入形式php,引入css样式表的四种方式介绍
一.使用STYLE属性: 将STYLE属性直接加在个别的元件标签里. 这种用法的优点 是可灵巧应用样式於各标签中,但是缺点则是没有整篇文件的『统一性』. 二.使用STYLE标签: 将样式规则写在标签之 ...
- 如何在html添加css样式表,网页中添加CSS样式表的四种方式
本文向大家描述一下网页中添加CSS样式表的四种方式,首先让我们来看一下CSS样式表文件的优势,主要体现在两个方面,请看下文详细介绍. CSS样式表文件的优势表现在两个方面: ***,简化了网页的格式代 ...
- python四种方式打印九九乘法表
最近学习python中刷的一道练习题,使用方法一:for内外层循环要简单些. 拆解了一下思路:a*b= ab 1找到变化的a与b,a变化范围是1-9,所以采取for循环,使用range函数 2看似b的 ...
- oracle中删除表的四种基本操作 2021-11-03
oracle中删除表的四种基本操作: drop table 表名 delete from 表名 truncate table 表名 在PL/SQL中,选中要删除的表,右键,选drop
- mysql+表复制+效率_MySQL数据库复制表的几种方式讲解
一.MySQL复制表的几种方式 我们首先创建表stuents_score,利用SQL语句查看创建表的结构与列名字段. 之后查看students_score表数据,便于之后观察对比. 1.CREATE ...
- Oracle数据库的四种启动方式
Oracle数据库的四种启动方式 1.startup nomount 非安装启动:这种方式启动下可执行:重建控制文件.重建数据库 启动instance,即启动SGA和后台进程,这种启动只需要init. ...
- Activiti6自学之路(五)—— 部署流程资源的四种方式及数据库表更新情况
创建了流程图资源后, 一般我们需要对创建的资源如(leave.bpmn.leave.png)进行部署,部署方式我这里列出四种方式,前三种为单个流程资源的部署,第四种方式可以同时部署多个流程资源. 一. ...
- 算法补天系列之有序表的四种实现方式——AVL树,SB树,红黑树,跳表(重点)介绍说明
有序表(MAP):除了支持哈希表所有操作之外,是有序组织的,可以知道排序的. 其实红黑树,AVL,SB数,跳表这四种结构都可以实现有序表.时间复杂度是一个级别的.一般SB树常用一些,因为结合题目修改成 ...
- jdbc Template 介绍和 spring 链接数据源的四种方式
为什么具体讲template介绍和spring jdbc链接数据源的几种方式放在一起介绍,在于你在使用template的时候,具体配置数据源,或者在链接配置数据源的时候要是使用template,就在在 ...
最新文章
- linux下git的简单使用
- 用云函数快速实现图片爬虫
- Oracle杀死Java EE:名正言顺转到.NET Core
- 构建可靠系统的原则与实践
- 用__asm写c函数[秋镇菜]
- python练习题1
- 结合Composer 新版本PHP的开发方式
- 【ElasticSearch】Es 源码之 NodeClient 源码解读
- xshell 无法定位输入点_linux基础知识个人总结
- 再探Linux内核write系统调用操作的原子性
- 计算机windows8黑屏怎么办,详解笔记本电脑出现电源拔出就黑屏的win8处理教程
- 与FPGA相关的独热码
- HTML 网页制作 盒子设计 CSS
- coreldraw2019天气滤镜_CorelDRAW2019快捷键大全
- Seaborn 绘图中设置字体及大小
- 计算机组装教程 ppt,电脑组装教程完整.ppt
- 【转】北京大学ACM题目算法分析推荐 acm解决方法
- ABAP 7.4 CORRESPONDING()语法
- 计算机与电气工程sci期刊,电气工程专业什么SCI期刊比较好
- 微信小程序 基础 - 19 (登录后用户头像的更新)