没有合适的资源?快使用搜索试试~ 我知道了~
Oracle+分区表++总结 一. 分区表理论知识 二. 普通表转分区表方法 三. 分区表的其他操作
资源详情
资源评论
资源推荐
Tianlesoftware 学习 Oracle Blog: http://blog.csdn.net/tianlesoftware
一分区表理论知识
提供了分区技术以支持 。分区表通过对
分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透
明。
的 分 区 表 可 以 包 括 多 个 分 区 , 每 个 分 区 都 是 一 个 独 立 的 段
(),可以存放到不同的表空间中 。查询时可以通过查询表来访问
各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。
什么时候需要分区表,官网的 个建议如下:
(!) "#$##%&
( )#'$$####$
&(&)*&$"*+#
"&##!!*#
在 !, 中最多支持:!, -./! 个分区:
Tables can be partitioned into up to 1024K-1 separate partitions
联机文档上有关分区表和索引的说明:
Partitioned Tables and Indexes
&011#$#*1#1#1!23,45,!16!, 1!- ,1&*7
% 4,-
分区提供以下优点:
(!)由于将数据分散到各个分区中,减少了数据损坏的可能性;
( )可以对单独的分区进行备份和恢复;
(3)可以将分区映射到不同的物理磁盘上,来分散 8;
(-)提高可管理性、可用性和性能。
!, 提供了以下几种分区类型:
(!)范围分区();
( )哈希分区();
(3)列表分区();
(-)范围-哈希复合分区(/);
(9)范围-列表复合分区(/)。
: 分区:
: 分区是应用范围比较广的表分区方式,它是以列的值的范围来做为
分区的划分条件,将记录存放到列值所在的 分区中。
如按照时间划分, ,!, 年 ! 月的数据放到 分区, 月的数据放到 分区,
DBA1 群:62697716(满); DBA2 群:62697977(满); DBA3 群:62697850; DBA 超级群:
63306533
Tianlesoftware 学习 Oracle Blog: http://blog.csdn.net/tianlesoftware
在创建的时候,需要指定基于的列,以及分区的范围值。
在按时间分区时,如果某些记录暂无法预测范围,可以创建 *)6" 分区,
所有不在指定范围内的记录都会被存储到 *)6" 所在分区中。
如:
&##"*'*#&*
&&!6"5#+ ,!,/!,/!+'+/**/##+'
&& 6"5#+ ,!,/!!/!+'+/**/##+'
&&36"5#+ ,!,/! /!+'+/**/##+'
&&-6"*)6"
; 分区:
对于那些无法有效划分范围的表,可以使用 分区,这样对于提高性能
还是会有一定的帮助。 分区会将表中的数据平均分配到你指定的几个分区
中,列所在分区是依据分区列的 值自动分配,因此你并不能控制也不知道
哪条记录会被放到哪个分区中, 分区也可以支持多个依赖列。
如:
5#"*&*.'
*5#"*<"
&5#
&&5,!&&,!'
&&5, &&, '
&&5,3&&,3
=
在这里,我们指定了每个分区的表空间。
分区:
分区也需要指定列的值,其分区值必须明确指定,该分区列只能有一
个,不能像 或者 分区那样同时指定多个列做为分区依赖列,但它的
单个分区对应值可以是多个。
在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,
则插入1更新就会失败,因此通常建议使用 分区时,要创建一个 #%" 分区
存储那些不在指定范围内的记录,类似 分区中的 *)6" 分区。
在根据某字段,如城市代码分区时,可以指定 #%",把非分区规则的数据,
DBA1 群:62697716(满); DBA2 群:62697977(满); DBA3 群:62697850; DBA 超级群:
63306533
Tianlesoftware 学习 Oracle Blog: http://blog.csdn.net/tianlesoftware
全部放到这个 #%" 分区。
如:
"##
>#>>>>>>> 6 !9>"'
>#>6 -
>
&#
>&5, 96"+, 9+'>
>&53? 6"+3? +'>
>&59!,6"+9!,+'>
&&56"#%"
组合分区:
如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以
通过分区内再建子分区的方式将分区再分区,即组合分区的方式。
组合分区呢在 !, 中有两种:/,/。注意顺序,根分区只
能是 分区,子分区可以是 分区或 分区。
如:
5#"*&*.'
5##
&5#"&5#
"&3&,!'&, '&,3
&&5,!6"5#@ ,,2/,!/,!@'@/**/##@'
&&5, 6"5#@ ,!,/,!/,!@'@/**/##@'
&&5,36"*)6"
=
*&5"5*& #& "*' *&* 63 ' #
"*
&#&"&*&*
"&*&
"&&!'
"&& '
"&&3'
"&#&-
DBA1 群:62697716(满); DBA2 群:62697977(满); DBA3 群:62697850; DBA 超级群:
63306533
Tianlesoftware 学习 Oracle Blog: http://blog.csdn.net/tianlesoftware
&&!6"!,,,'
&& 6" ,,,'
&&36"*)6"
=
A"55
#&"*'*56 ,'
)5##')5*""*'6
&-
&)5#
"&
&A!5!2226"5#+!/&/!222+'+##/*/+
"&A!5!2225$6"++'+$+'
"&A!5!2225"$6"+B+'+"+'+*+'
"&A!5!22256"++'+6*+'+C+'
"&A!5!2225"6"+%+'++'
"&A!5!22256"+#+'+$+'
"&A!5!2225"6"+.+'+)+
'
&A 5!2226"5#+!/C"/!222+'+##/*/+
"&A 5!2225$6"++'+$+'
"&A 5!2225"$6"+B+'+"+'+*+'
"&A 5!22256"++'+6*+'+C+'
"&A 5!2225"6"+%+'++'
"&A 5!22256"+#+'+$+'
"&A 5!2225"6"+.+'+)+
'
&A35!2226"5#+!//!222+'+##/*/+
"&A35!2225$6"++'+$+'
"&A35!2225"$6"+B+'+"+'+*+'
"&A35!22256"++'+6*+'+C+'
"&A35!2225"6"+%+'++'
"&A35!22256"+#+'+$+'
"&A35!2225"6"+.+'+)+
'
&A-5!2226"5#+!/C/ ,,,+'+##/*/+
"&A-5!2225$6"++'+$+'
"&A-5!2225"$6"+B+'+"+'+*+'
"&A-5!22256"++'+6*+'+C+'
"&A-5!2225"6"+%+'++'
"&A-5!22256"+#+'+$+'
"&A-5!2225"6"+.+'+)+
DBA1 群:62697716(满); DBA2 群:62697977(满); DBA3 群:62697850; DBA 超级群:
63306533
Tianlesoftware 学习 Oracle Blog: http://blog.csdn.net/tianlesoftware
=
在 !! 中,组合分区功能这块有所增强,又增加了 /'/
'
/'/,并且 11g 里面还支持 Interval 分区和虚拟列分区。
这块可以参考 Blog:
!!新特性简介
&011#1%$161 ,!,1,!1,419!3-<!2&)
分区表之86 分区和虚拟列按星期分区表
&011#1%$161 ,!,1,41!,1944 33?&)
二普通表转分区表方法
将普通表转换成分区表有 - 种方法:
!)&1*&*#
8$"A"*#
3)*#
-5:D888
具体参考:
;$/&#E8!,?,4234F
&011#1%$161 ,!!1,31, 14 !<?,-&)
逻辑导出导入这里就不做说明,我们看看其他三种方法。
!插入:8$"A"*#
这种方法就是使用 insert 来实现。 当然在创建分区表的时候可以一起插入
数据,也可以创建好后在 insert 进去。 这种方法采用 DDL 语句,不产生
UNDO,只产生少量 REDO,建表完成后数据已经在分布到各个分区中。
GH"I%*#=
JKI
//////////
?!3 39
GH5#5%*L+/**/## -0*0+=
会话已更改。
DBA1 群:62697716(满); DBA2 群:62697977(满); DBA3 群:62697850; DBA 超级群:
63306533
剩余25页未读,继续阅读
lysmysmbknd
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0