知识大全 详细讲解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移动数据文件到新分区的过程

讲解Oracle移动数据文件到新分区的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!此过程用s

知识大全 Oracle数据库实例及其相关概念

Oracle数据库实例及其相关概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  完整的Orac

知识大全 详细讲解Oracle服务器的常用命令行

详细讲解Oracle服务器的常用命令行  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库管理相关

知识大全 oracle存储过程创建表分区实例

  用存储过程创建数据表:创建时注意必须添加authidcurrent_user如果创建的表已存在存储过程继续执行但如不不加此关键语句存储过程将出现异常这个语句相当于赋权限例创建语句如下  复制代码代

知识大全 oracle分区表全分区扫描问题

  分区表将一个大表根据某种规则分成多个小表从而提高检索效率  查询分区表sql  Sql代码  selectuser_tablestable_name  fromuser_tables  where

知识大全 详细讲解Oracle数据库的“周数计算”

详细讲解Oracle数据库的“周数计算”  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ——日期

知识大全 oracle建立的分区表数据问题

  建立一个用户使用默认表空间tablespace  建立一个分区表数据存放在不同的表空间tablespacetablespacetablespace  如果把此用户的数据导出来为dmp格式  在另外

知识大全 详细讲解Oracle数据库运行错误的解决方法

详细讲解Oracle数据库运行错误的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Or

湿疹的常见类别及其症状表现有哪些

湿疹是一种皮肤病,不管是男女老少,都有可能患上这种病,可能是外部环境引起的,也可能是身体内部原因引起的,甚至可能是从娘胎里就带来的,那么,湿疹常见的类别及症状表现有哪些呢?还是要给大家做一个详细的讲解

知识大全 详细讲解如何将数据模型转换成数据库设计

  将数据模型转换成数据库设计的相关问题:  创建表的联系  强实体联系  把一个表的主键作为另一张表的外键为了强调最大粒度是应该把外键设置成候选键  N强实体联系  把的那一段的表(父表)的键设置成