`
WindyQin
  • 浏览: 32438 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Oracle分区的一些问题,关于子分区~~

 
阅读更多

1分区表的一些操作
1.1创建分区带有子分区的分区表 2种方法

一种是模板式的,只要增加分区,就会自动增加相应的子分区,创建方法如下:

我们开始做啦~~

–创建分区带有子分区的分区表 1

create table tb_test11

(

STATIS_DATE DATE,

SERV_NUMBER VARCHAR2(100),

CUST_TYPE INTEGER

)

tablespace TBS_NG_USER_01

partition by list (STATIS_DATE)

subpartition by list(CUST_TYPE)

subpartition template

(

subpartition spart_1 values(1)tablespace TBS_NG_USER_01 compress,

subpartition spart_2 values(2)tablespace TBS_NG_USER_01 compress,

subpartition spart_3 values(3)tablespace TBS_NG_USER_01 compress,

subpartition spart_4 values(4)tablespace TBS_NG_USER_01 compress,

subpartition spart_5 values(5)tablespace TBS_NG_USER_01 compress

)

(

partition part_20150101 values (date’2015-1-1’) tablespace TBS_NG_USER_01 compress,

partition part_20150102 values (date’2015-1-2’) tablespace TBS_NG_USER_01 compress,

partition part_20150103 values (date’2015-1-3’) tablespace TBS_NG_USER_01 compress,

partition part_20150104 values (date’2015-1-4’) tablespace TBS_NG_USER_01 compress,

partition part_20150105 values (date’2015-1-5’) tablespace TBS_NG_USER_01 compress,

partition part_20150106 values (date’2015-1-6’) tablespace TBS_NG_USER_01 compress,

partition part_20150107 values (date’2015-1-7’) tablespace TBS_NG_USER_01 compress,

partition part_20150108 values (date’2015-1-8’) tablespace TBS_NG_USER_01 compress,

partition part_20150109 values (date’2015-1-9’) tablespace TBS_NG_USER_01 compress,

partition part_20150110 values (date’2015-1-10’) tablespace TBS_NG_USER_01 compress);

创建完成~~

在实际工作中发现,刚开始建模时,建立该表,但是后期业务发生变化,需要增加子分区,这时候你会发现增加的子分区不会随增加分区而相应的增加,咨询了一个前辈,说是可以设置为自动,但是说比较复杂,鉴于知识有限,我就手动管理了新增加的子分区。。。如果哪位朋友,有好的出力方法,欢迎留言~~

那么让我们来看第二种方法吧~~

–创建分区表带有子分区的分区表 2

create table tb_test111

(

STATIS_DATE DATE,

SERV_NUMBER VARCHAR2(100),

CUST_TYPE INTEGER

)

tablespace TBS_NG_USER_01

partition by list(STATIS_DATE)

subpartition by list(CUST_TYPE)

(

partition part_20150101 values (date’2015-1-1’) tablespace TBS_NG_USER_01 compress

(

subpartition spart_1 values(1)tablespace TBS_NG_USER_01 compress,

subpartition spart_2 values(2)tablespace TBS_NG_USER_01 compress,

subpartition spart_3 values(3)tablespace TBS_NG_USER_01 compress,

subpartition spart_4 values(4)tablespace TBS_NG_USER_01 compress,

subpartition spart_5 values(5)tablespace TBS_NG_USER_01 compress

));

好啦,以上两种方法都可以,自由选择~~
1.2清空子分区

alter table tb_test11 truncate subpartition part_20150101_spart_1; –清空子分区

删除子分区

alter table tb_test11 drop subpartition part_20150101_spart_1; –删除子分区
1.3在已有的分区上增加子分区

–在已有的分区上增加子分区

alter tabletb_test11

modify partition part_20150101

add subpartition part_20150101_spart_6 values(6) tablespace TBS_NG_USER_01 compress;
1.4新增分区以及子分区

–新增分区以及子分区

alter table tb_test11

add partition part_20150111 values(date’2015-9-1’) tablespace TBS_NG_USER_01 compress

(subpartition part_20150111_spart_6 values(6)tablespace TBS_NG_USER_01 compress);
1.5查看分区明细

select/+parallel(a,8)/* from all_tab_partitions a where a.table_name=’TB_TEST11’;–查看分区明细
1.6查看分区表

select/+parallel(a,8)/* from all_part_tables a where a.table_name=’TB_TEST11’; –查看分区表

select* from all_tab_subpartitions a where a.table_name=’TB_MK_SC_USER_MON’;–查看子分区名称

select* from all_part_key_columns a where a.name=’TB_MK_SC_USER_MON’; –查看分区列名

select* from all_subpart_key_columns a where a.name=’TB_MK_SC_USER_MON’; –查看子分区列名
1.7创建分区,有数据插入时自动增加分区

Oracle11g 提供了插入数据,自动增加分区的功能,很方便哦赶快去试一试吧

create tabletb_interval_test (v_date date,feenumber(10,2))

partition by range(v_date)

interval(numtods interval(1,’day’))

(partition part_201508 values less than(to_date(20140831,’yyyymmdd’)),

partition part_201509 values less than(to_date(20140930,’yyyymmdd’)));

下面是重要部分,我的多说几句~~
1.8组合分区表空间移动方法

关于分区移动表空间的问题,正常的移动表空间我就不介绍了,此处说一下组合分区表空间的移动问题!!

其实很简单,知道思路就行了~~

分为以下两步:

–1先移动子分区的表空间

–2修改Father表空间的属性

–创建测试用表

create table tb_test111

(

STATIS_DATE DATE,

SERV_NUMBER VARCHAR2(100),

CUST_TYPE INTEGER

)

tablespace TBS_NG_USER_01

partition by range(STATIS_DATE)

subpartition by list(CUST_TYPE)

(

partition part_20150101 values less than(date’2015-1-1’) tablespace TBS_NG_USER_01 compress

(

subpartition spart_1 values(1)tablespaceTBS_NG_USER_01 compress,

subpartition spart_2 values(2)tablespaceTBS_NG_USER_01 compress,

subpartition spart_3 values(3)tablespaceTBS_NG_USER_01 compress,

subpartition spart_4 values(4)tablespaceTBS_NG_USER_01 compress,

subpartition spart_5 values(5)tablespaceTBS_NG_USER_01 compress

));

–1先移动子分区的表空间

alter tabletb_test111 movesubpartitionspart_1 tablespaceTBS_USER_01;

alter tabletb_test111 movesubpartitionspart_2 tablespaceTBS_USER_01;

alter tabletb_test111 movesubpartitionspart_3 tablespaceTBS_USER_01;

alter tabletb_test111 movesubpartitionspart_4 tablespaceTBS_USER_01;

alter tabletb_test111 movesubpartitionspart_5 tablespaceTBS_USER_01;

–2修改Father表空间的属性

alter tabletb_test111 modifydefaultattributesforpartition part_20150101 tablespaceTBS_USER_01;

–检验表空间移动是否成功

selecta.tablespace_name,a.* fromuser_tab_partitions a wherea.table_name=’TB_TEST111’;

selecta.tablespace_name,a.* fromuser_tab_subpartitions a wherea.table_name=’TB_TEST111’;

好啦~通过以上两个步骤移动就不会出现问题了,搞定~~

下面还有一个问题比较重要~~请重点看!!
1.9带有max分区的添加分区的方法

如果你建立分区表是有max分区,那么你以后再添加分区时,如果按照正常的添加分区add的话,是会报错的亲~~【【ORA-14080】无法在指定的上限来分隔分区】

那么怎么搞呢?

请看下面的测试用例~~

–常见测试用例

createtabletb_test

(

STATIS_DATE DATE,

SERV_NUMBER VARCHAR2(100),

CUST_TYPE INTEGER

)

tablespace TBS_NG_USER_01

partition by range(STATIS_DATE)

(partition part_20150101 values less than(date’2015-1-1’),

partition part_max values less than(maxvalue));

–正常添加报错–【ORA-14080】无法在指定的上限来分隔分区

alter table tb_test split partition part_max at(date’2015-1-2’)into(partition,partition part_max);

–运用split添加分区

alter table tb_test splitpartition part_max at(date’2015-1-3’)into(partition part_20150103,partition part_max);

–检查处理结果

select* from user_tab_partitions a wherea.table_name=’TB_TEST’;

看,是不是很简单,是不是这样就可以搞定MAX啦

关于分区的问题,今天就谈到这,这是今天一天碰见的问题总结的一些东西,温习一下吧~~~

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

分享到:
评论

相关推荐

    Oracle分区表详解

    ### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能...

    oracle分区表之hash分区表的使用及扩展

    Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...

    Oracle分区技术介绍

    Oracle分区技术是一种数据库管理系统(DBMS)特性,用于将大型表和索引分割成更小、更易管理和处理的部分,从而提升查询性能和数据管理效率。这种技术特别适用于数据仓库和决策支持系统(DSS),因为这些系统通常...

    ORACLE分区ORACLE分区ORACLE分区

    ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区

    Oracle 分区表 分区索引

    #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并简化表和索引的管理。 #### 二、何时...

    Oracle分区表用法

    【Oracle分区表用法】 Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表...

    Oracle分区表培训

    Oracle分区表是数据库管理系统Oracle中的一个高级特性,用于将大表分成较小、更易管理的部分,从而提高查询性能,优化存储管理和数据维护。在大型企业级应用中,尤其是在处理大量数据时,分区表是不可或缺的技术手段...

    oracle表分区详解

    ### Oracle表分区详解 #### 一、概述 Oracle数据库中的表分区是一种高级组织技术,它通过将表的大数据集划分为较小的、更易于管理的部分(即分区),从而提高查询性能和可管理性。表分区可以按照不同的策略进行...

    Oracle分区表及分区索引

    Oracle 分区表及分区索引 Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) ...

    Oracle表分区详解(优缺点)

    管理方面,分区提供了更高的灵活性,例如,如果某个分区出现问题,可以独立修复,而不会影响到整个表。此外,分区还能实现I/O均衡,通过将不同分区映射到不同的磁盘,减少单一磁盘的负载。 然而,表分区也有其不足...

    oracle分区资料·

    oracle分区资料· oracle分区资料· oracle分区资料·

    ORACLE分区与索引

    Oracle 分区与索引是数据库管理系统中用于优化大数据查询的关键技术。Oracle 分区是一种将大表和索引分成可管理的小部分,以提高查询效率、维护性和可用性。这种技术适用于处理海量数据,通过将数据分散到不同的存储...

    oracle分区表分区索引.docx

    Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...

    深入学习分区表及分区索引(详解oracle分区).docx

    Oracle分区技术是数据库管理系统中用于优化大规模数据存储和查询性能的一种高级特性。它允许将大表和索引分成较小、更易管理和操作的部分,每个部分称为一个分区。分区的主要目标是提高查询性能、简化管理任务并增强...

    oracle分区表总结

    #### 一、Oracle分区表概述 在Oracle数据库中,分区是一种对大型表进行物理分割的方法,它可以显著提高查询性能并简化数据管理任务。通过将一个大表分成多个较小的部分(即分区),可以更快地执行查询操作,尤其是...

    oracle 分区表管理

    要查看Oracle分区表的相关信息,可以使用以下视图: 1. `DBA_PART_TABLES`:显示数据库中所有分区表的信息,包括表名、分区类型、分区键等。 2. `ALL_PART_TABLES`:显示当前用户可以访问的所有分区表信息,权限...

    Oracle分区表和分区索引在VLDB中的研究.pdf

    "Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...

Global site tag (gtag.js) - Google Analytics