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啦

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

时间: 2024-10-15 02:51:43

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

mysql数据库子分区教程

mysql数据库子分区教程 子分区是分区表中每个分区的再次分割.例如,考虑下面的CREATE TABLE 语句: CREATE TABLE ts (id INT, purchased DATE) PARTITION BY RANGE(YEAR(purchased)) SUBPARTITION BY HASH(TO_DAYS(purchased)) SUBPARTITIONS 2 ( PARTITION p0 VALUES LESS THAN (1990), PARTITION p1 VALUES

oracle 12c R1 在线迁移数据文件、在线迁移表分区或者子分区例子

在线重定义数据文件: 在oracle 12c R1之前的版本中,如果在线移动数据文件需要将表空间或者数据文件离线,然后操作系统mv,recover后online数据文件或者表空间,在oracle 12c R1后可以直接在线重定义数据文件,这个过程用户可以进行查询.DML以及DDL的任务,另外数据文件也可以直接在存储设备间迁移,比如ASM到文件系统的相互迁移. SQL> select name from v$datafile; NAME ------------------------------

【动手实践】Oracle 12.2 新特性:只读分区的使用和维护

12.2的分区新特性中引入了只读分区的特性,可以帮助我们将某些分区的数据进行静态化保护. 这一特性通过将表或者分区设置为READ ONLY或者READ WRITE来进行控制,以下是一个测试Demo(可以在 https://livesql.oracle.com )网站验证体验. 以下测试首先将数据表置为READ ONLY模式,对部分分区设置为READ WRITE的读写模式: drop table YHEM_ODS; CREATE TABLE YHEM_ODS (oid  number, odate

分区信息-oracle如何获得一个范围分区表每个分区的信息

问题描述 oracle如何获得一个范围分区表每个分区的信息 已知:一个 范围分区表 ,表名为sale_range,分区字段sales_date. 怎样获得这个表每个分区的 分区名 / 分区字段上限 ? 解决方案 SELECT * FROM USER_PART_TABLES SELECT * FROM USER_TAB_PARTITIONS FYI:http://docs.oracle.com/cd/E18283_01/server.112/e16541/part_admin005.htm

windows-安装ubuntu时D盘(NTFS分区)被识别为swap分区,如何解决?

问题描述 安装ubuntu时D盘(NTFS分区)被识别为swap分区,如何解决? 安装ubuntu时D盘被识别为swap分区,ubuntu安装完成后进入windows发现D盘无法识别.还原的分区表,D盘可识别,但ubuntu无法启动了.再次重装ubuntu,D盘再次被识别为swap分区,如何解决? 解决方案 在windows下查看磁盘管理能看到D盘吗? 你的ubuntu装好过没? 没有的话可以将D盘弄成空闲分区再装.

Oracle索引或这类索引的分区处于不可用状态 查询

ORA-01502: 索引或这类索引的分区处于不可用状态 原因: 出现这个问题,可能有人move过表,或者disable 过索引. 1. alter table xxxxxx move tablespace xxxxxxx 命令后,索引就会失效. 2. alter index index_name  unusable,命令使索引失效. 解决办法: 1. 重建索引才是解决这类问题的完全的方法.      alter index index_name rebuild (online);      或

硬盘分区误删怎么办,怎么恢复硬盘分区

不小心把磁盘管理中的扩展磁盘删了怎么办,有办法恢复吗?本文就为大家介绍恢复方法,希望对大家有帮助. 答:磁盘分区的恢复方法有很多,介绍一个比较常用的.你需要准备一个可装有WinPE的U盘,以及DiskGenius 这款数据恢复软件.然后按以下步骤进行: 1.在WinPE中打开DiskGenius软件,然后选择"搜索分区",搜索范围选择"整个硬盘",搜索方式选择"自动"即可. 2.接下来软件就会开始自动搜索分区,经过一段时间后,即可将硬盘中所有的分

Win7旗舰版怎么给硬盘分区让它分成更多的分区

  1鼠标右击"计算机" 2选择"管理"标签 3打开"计算机管理"窗口 4选择"磁盘">>"存储管理",打开"磁盘管理"页面 如图: 5右键单击选择要压缩的磁盘(本例选择D盘),快捷方式选择"压缩卷" 6在输入压缩空间量(MB)里填写要压缩出的空间量,如果要压缩出50G,就填写50G*1024MB 7选择"压缩"按钮 8压缩后会发现多出

固态硬盘要分区吗?固态硬盘是分区好还是不分区好?

  固态硬盘要分区吗?有人说固态硬盘最好不要分区,会影响使用性能与寿命,请问是这样吗?关于固态硬盘是分区好还是不分区好,是一个比较有意思的问题,里面会涉及到不少SSD相关知识,下面小编就来详细介绍下. 固态硬盘要分区吗? 首先,分区对固态硬盘的寿命没有任何负面影响,简单来说,固态硬盘与机械硬盘一样,是可以分区的,不用担心寿命.如果说某SSD分区影响寿命或者性能,仅可能是SSD厂商的设计有问题. 因此,固态硬盘的使用原则是,想分区就分区,不关乎寿命与性能.比如SSD容量比较大,则多分几个区,如果S