知识大全 详细讲解Oracle表分区的相关概念及其优点
Posted 索引
篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 详细讲解Oracle表分区的相关概念及其优点相关的知识,希望对你有一定的参考价值。
详细讲解Oracle表分区的相关概念及其优点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle i以后推出了分区选项 分区将表分离在若于不同的表空间上 用分而治之的方法来支撑元限膨胀的大表 组大表在物理一级的可管理性 将大表分割成较小的分区可以改善表的维护 备份 恢复 事务及查询性能
分区的具体优点
增强可用性 如果表的一个分区由于系统故障而不能使用 表的其余好的分区仍可以使用
减少关闭时间 如果系统故障只影响表的一部份分区 那么只有这部份分区需要修复 可能比整个大表修复花的时间更少
维护轻松 如果需要得建表 独产管理每个公区比管理单个大表要轻松得多
均衡I/O 可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能
改善性能 对大表的查询 增加 修改等操作可以分解到表的不同分区来并行执行 可使运行速度更快 在数据仓库的TP查询特别有用
分区对用户透明 最终用户感觉不到分区的存在
列表分区表create table BS_CDR_WLAN_LOC_
(
DAY_NUMBER NUMBER( ) not null
……
TPREMARK VARCHAR ( )
)
partition by list (DAY_NUMBER)
(
partition P_BS_CDR_OTH_LOC_ values ( )
partition P_BS_CDR_OTH_LOC_ values ( )
……
partition P_BS_CDR_OTH_LOC_ values ( )
)
按范围分区
注 就是按一定range来分区
SQL> create table niegc_part
(
part_id integer primary key
part_date date
part_dec varchar ( )
)
partition by range(part_date)
(
partition part_ values less than(to_date( yyyy mm dd ))
partition part_ values less than(to_date( yyyy mm dd ))
partition part_ values less than(maxvalue)
)
Hash分区(散列分区)
散列分区通过指定分区编号来均匀分布数据的一种分区类型 因为通过在I/O设备上进行散列分区 使行这些分区大小一致
如将part_id的数据根据自身的情况散列地存放在指定的三个表空间中
create table niegc_part
(
part_id integer primary key
part_date date
part_dec varchar ( )
)
partition by hash(part_id)
(
partition part_ tablespace dw
partition part_ tablespace dw
)
复合分区
create table tab_students
(c_id number
c_name varchar ( )
c_age number
c_birthday date
c_nation varchar ( )
)
partition by range(c_id)
subpartition by list(c_nation)
SUBPARTITION TEMPLATE
(SUBPARTITION part_hanzu VALUES ( 汉族 )
SUBPARTITION part_others VALUES (DEFAULT)
)
(
PARTITION part_id VALUES LESS THAN ( )
PARTITION part_id VALUES LESS THAN ( )
PARTITION part_id VALUES LESS THAN (MAXVALUE)
)
索引分区
注意 对某个字段已做了分区了 是不允许再建立索引分区的 这一点要非常注意
全局索引建立时global子句允许指定索引的范围值 这个范围值为索引字段的范围值
create index idx_part_id on niegc_part(part_dec)
global partition by range(part_dec)
(
partition idx_ values less than( ) tablespace dw
partition idx_ values less than(maxvalue) tablespace dw
)
局部索引分区的建立
(注 表必须存在分区 此分区的个数必须和分区表的分区个数一样 不然是建立不起来的)
create index idx_part_id on niegc_part(part_dec)
local
(
partition idx_ tablespace dw
partition idx_ tablespace dw
)
分区维护 (只对范围分区)
( ) 增加一个分区 分区范围只能往上增 不能增加一个少于原有的分区
alter table tablename add partition new_partitionname values less than(maxvalue)
( ) 合并/拆分分区 (合并后的分区必须指下最后一个大value的分区)
alter table tablename merge partitions partitionname partitionname into partition partitionname
alter table tablename split partition partitionname at (xx) into (
partition newpartition partition newpartition )
注意 xx为分割点
( ) 删除一个分区
alter table niegc_part drop partition partitionname
( )将分区改名
alter table table_name rename Partition partition_name to partition_name
( )将分区改表空间
alter table table_name move partition_name
tablespace tablespace_name nologging
( )查询特定分区
select count(*) from table_name partition (partition_name)
( )添加数据
insert into table_name select * from table_name partition (partition_name)
( )分区表的导出
userid=USER/PWD
buffer=
tables=table_name partition_name
file=E exp_paraxxx dmp
log=E exp_paraxxx log
( )技巧 删除表中一个字段
alter table table_name set unused column column_name
( )加一个字段
alter table table_name add column_name number( )
六 总结
分区表是将大表的数据分成称为分区的许多小的子集 i提供四种分区方法 列表分区 范围分区 哈希分区和混合分区
范围分区是根椐分区键的不同取值范围来划分子集的 关键字RANGE VALUES LESS THAN
列表分区是根椐分区键的一些离散的取值来划分子集的 关键字LIST VALUES
哈希分区是应用哈希算法将分区键对应到某个子集中去 关键字HASH PARTITIONS
混合分区只能有两层 第一层是范围分区 第二层可以是列表分区或者哈希分区
范围分区和列表分区中 如果插入记录的分区键没有对应的容纳分区 会产生ORA
update操作如果会使记录从一个分区迁移到另一个分区 且分区表的ROW MOVEMENT属性是DISABLE 会产ORA
分区表上的索引有两大类 普通的二叉树索引 分区索引 下面讲到的都是分区索引
按索引分区和表分区间的对应关系可以分为局部索引和全局索引
局部索引的索引分区和表分区间是一一对应的 全局索引则相反
局部索引的分区方法可以用上面提到四种的任何一种 全局索引的分区方法只有范围分区(而且最高的分区必须用MAXVALUE来定义)
ORACLE自动维护局部索引的分区 当表分区被合并 分裂或删除时 关联的索引分区也会被合并 分裂或删除 对分区表执行管理操作时会使其上的全局索引失效
建在分区表的位图索引必须是局部分区索引
ORACLE推荐尽可能地使用局部索引
按索引栏位和分区键间的关系分为前缀索引和非前缀索引
前缀索引最前面的栏位是分区键栏位 非前缀索引相反
在这两种分类方法的四种组合中 只有三种有效(局部前缀索引 局部非前缀索引 全局前缀索引) 不存在全局非前缀索引
cha138/Article/program/Oracle/201311/18966相关参考
讲解Oracle移动数据文件到新分区的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!此过程用s
Oracle数据库实例及其相关概念 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 完整的Orac
详细讲解Oracle服务器的常用命令行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库管理相关
用存储过程创建数据表:创建时注意必须添加authidcurrent_user如果创建的表已存在存储过程继续执行但如不不加此关键语句存储过程将出现异常这个语句相当于赋权限例创建语句如下 复制代码代
分区表将一个大表根据某种规则分成多个小表从而提高检索效率 查询分区表sql Sql代码 selectuser_tablestable_name fromuser_tables where
详细讲解Oracle数据库的“周数计算” 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ——日期
建立一个用户使用默认表空间tablespace 建立一个分区表数据存放在不同的表空间tablespacetablespacetablespace 如果把此用户的数据导出来为dmp格式 在另外
详细讲解Oracle数据库运行错误的解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Or
湿疹是一种皮肤病,不管是男女老少,都有可能患上这种病,可能是外部环境引起的,也可能是身体内部原因引起的,甚至可能是从娘胎里就带来的,那么,湿疹常见的类别及症状表现有哪些呢?还是要给大家做一个详细的讲解
将数据模型转换成数据库设计的相关问题: 创建表的联系 强实体联系 把一个表的主键作为另一张表的外键为了强调最大粒度是应该把外键设置成候选键 N强实体联系 把的那一段的表(父表)的键设置成