转载内容

摘录部分我的笔记的中doc,和大家一起感受Oracle 11g在分区方面的增强--System Partitioning

系统分区的特点

●系统分区与其他分区相比,一个最根本的区别就是不需要指定分区KEY值

●数据会进入哪个分区由应用程序决定,实际上也就是由SQL来决定,在Insert语句中可以指定插入哪个分区

●因为System Partitioning分区表没有分区字段,所以一般分区表的performance benefits对System Partitioning分区表不再适用(包括分区表智能裁剪和智能联接)

●对于按“系统”方法进行分区的表, 必须对 DML 使用分区扩展名或绑定变量

●记录放在哪个分区与记录没有任何关系,同样的记录可以存放到不同的分区中 ●The following operations are supported for system partitioned tables:  Partition maintenance operations and other DDLs (See exceptions below)  Creation of local indexes.  Creation of local bitmapped indexes.  Creation of global indexes.  All DML operations.  ●insert 操作支持三种写法

INSERT with partition extended syntax:  insert into <base_table> partition (<partition_name|dataobj_to_partition(table_name,:data_object_id)>)

其中data_object_id通过dba_objects视图中获取

 

参考文档:<Oracle Database Data Cartridge Developer's Guide> 11g Realses 1(11.1) Part Number B28425-01
●Because of the peculiar requirements of system partitioning, the following operations are not supported for system partitioning:  Unique local indexes are not supported because they require a partitioning key.  CREATE TABLE AS SELECT(不能通过CTAS创建System Partitioning表)  Since there is no partitioning method, it is not possible to distribute rows to partitions.  Instead the user should first create the table and then insert rows into each partition.  INSERT INTO <tabname> AS <subquery>  SPLIT PARTITION operations

 

说明

或许我们对Oracle提供的这个新特性的实际用途使用很少,但不难看出这确实是一个非常人性化的变革,所以我们也不得不认真、仔细的认识并研究他。或许将来我们有一个这样的需求:

假设有一个无法使用任何逻辑方法进行分区的表,结果将是一个巨大的、单一的表。不难想象这将导致需要扩展的索引维护和其他操作问题的出现。于是,开发那边可以提出一个这样的要求:他们可以通过某种智能算法写入分区,通过应用来控制特定的记录写入到某个分区,而对DBA来说,就只需要定义一个system partitiion table即可。

示例一:System Partitioning初体验

Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
Connected as study SQL> create table sys_part_test
2 (
3 region number(4),
4 recdate date
5 )
6 partition by system
7 (
8 partition p1,
9 partition p2,
10 partition p3,
11 partition p4
12 ); Table created SQL> insert into sys_part_test partition (p1) values(531,sysdate);
1 row inserted SQL> insert into sys_part_test partition (p2) values(532,sysdate);
1 row inserted SQL> insert into sys_part_test partition (p3) values(533,sysdate);
1 row inserted SQL> insert into sys_part_test partition (p4) values(534,sysdate);
1 row inserted SQL> commit;
Commit complete SQL> select * from sys_part_test; REGION RECDATE
------ -----------
531 2007-12-14
532 2007-12-14
533 2007-12-14
534 2007-12-14 SQL> insert into sys_part_test partition (p1) select * from sys_part_test partition (p4);
1 row inserted SQL> commit;
Commit complete SQL> select * from sys_part_test partition (p1);
REGION RECDATE
------ -----------
531 2007-12-14
534 2007-12-14 SQL> select * from sys_part_test partition (p2);
REGION RECDATE
------ -----------
532 2007-12-14 SQL> select * from sys_part_test partition (p3);
REGION RECDATE
------ -----------
533 2007-12-14 SQL> select * from sys_part_test partition (p4);
REGION RECDATE
------ -----------
534 2007-12-14 SQL> select *from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-14 17:21:13
534 2007-12-14 17:21:32
532 2007-12-14 17:21:20
533 2007-12-14 17:21:26
534 2007-12-14 17:21:32 SQL> update sys_part_test set recdate=sysdate where region=533;
已更新 1 行。 SQL> select *from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-14 17:21:13
534 2007-12-14 17:21:32
532 2007-12-14 17:21:20
533 2007-12-14 17:27:19
534 2007-12-14 17:21:32 SQL> delete from sys_part_test partition(p4);
已删除 1 行。 SQL> select *from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-14 17:21:13
534 2007-12-14 17:21:32
532 2007-12-14 17:21:20
533 2007-12-14 17:27:19
SQL>

示例二:System Partitioning Insert三种方法体验

D:>sqlplus study/study@ora11g

SQL*Plus: Release 11.1.0.6.0 - Production on 星期六 12月 15 10:41:13 2007

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create table sys_part_test
2 (
3 region number(4),
4 recdate date
5 )
6 partition by system
7 (
8 partition p1,
9 partition p2,
10 partition p3,
11 partition p4
12 ); 表已创建。 SQL> insert into sys_part_test partition (p1) values (531,sysdate); --方法一,指定partition_name
已创建 1 行。 SQL> commit;
提交完成。 SQL> select * from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-15 10:41:43 SQL> select object_name,subobject_name,object_id,data_object_id,object_type
2 from user_objects
3 where object_name='SYS_PART_TEST'; OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
-------------- ----------------- ----------- -------------- ---------------
SYS_PART_TEST 69632 TABLE
SYS_PART_TEST P1 69633 69633 TABLE PARTITION
SYS_PART_TEST P2 69634 69634 TABLE PARTITION
SYS_PART_TEST P3 69635 69635 TABLE PARTITION
SYS_PART_TEST P4 69636 69636 TABLE PARTITION SQL> insert into sys_part_test partition(dataobj_to_partition(sys_part_test,)) values (532,sysdate);
已创建 1 行。 --方法二,通过data object id SQL> commit;
提交完成。 SQL> select *from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-15 10:41:43
532 2007-12-15 10:43:44 SQL> select *from sys_part_test partition (p2); REGION RECDATE
---------- -------------------
532 2007-12-15 10:43:44 SQL> var p_obj number;
SQL> exec :p_obj:=69635 PL/SQL 过程已成功完成。 --如下为方法三,通过data object id但使用bind var SQL> insert into sys_part_test partition(dataobj_to_partition(sys_part_test,:p_obj)) values (533,sysdate);
已创建 1 行。 SQL> insert into sys_part_test partition(dataobj_to_partition(sys_part_test,:p_obj)) values (533,sysdate);
已创建 1 行。 SQL> commit;
提交完成。 SQL> select * from sys_part_test; REGION RECDATE
---------- -------------------
531 2007-12-15 10:41:43
532 2007-12-15 10:43:44
533 2007-12-15 10:45:19
533 2007-12-15 10:45:21 SQL> select * from sys_part_test partition (p3); REGION RECDATE
---------- -------------------
533 2007-12-15 10:45:19
533 2007-12-15 10:45:21 SQL> select * from sys_part_test partition (p2); REGION RECDATE
---------- -------------------
532 2007-12-15 10:43:44 SQL> select * from sys_part_test partition (p1); REGION RECDATE
---------- -------------------
531 2007-12-15 10:41:43 SQL>
...

system partition table的更多相关文章

  1. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

    在 mkfs.ext4 /dev/sda2 格式化硬盘空间时,可能出现这种错误. had this situation at office where I was told to re-partiti ...

  2. WARNING: Re-reading the partition table failed with error 22: Invalid argument

    在划分磁盘分区时,遇到错误"WARNING: Re-reading the partition table failed with error 22: Invalid argument&qu ...

  3. 解决linux分区提示doesn't contain a valid partition table

    目前 partition table 大概有叁种: 最传统的 mbr.大容量的 gpt.小设备的 无; 遇上最后那种就会出现 "doesn't contain a valid partiti ...

  4. doesn't contain a valid partition table 解决方法

    输入 fdisk -l 可以看到 输入 fdisk /dev/xvdb 跟着向导一步步做下去(如果不知道该输入什么,就输入“m”并回车,可以打印出菜单): Command (m for help): ...

  5. Mycat+Mysql 插入数据报错 i[Err] 1064 - partition table, insert must provide ColumnList

    使用Navicat连接Mycat 8066 成功插入了分库表和全局表 1.全局表 sql如下: '); '); '); 插入成功! 2.分库表 sql如下: ', null, null, null, ...

  6. oracle partition table 分区表详解

    Oracle partition table 分区表详解 分区表就是通过使用分区技术,将一张大表,拆分成多个表分区(独立的segment),从而提升数据访问的性能,以及日常的可维护性.分区表中,每个分 ...

  7. 计算机启动出现 Invalid Partition Table

    计算机启动出现 Invalid Partition Table 解决办法 使用大白菜启动盘进入临时系统,打开程序DiskGenius 如果系统盘(一般为 C 盘)非活动状态,先激活 如果装系统的硬盘不 ...

  8. 如何移除EFI system partition?

    莫名其妙, 在我的服务器上出现了这样一种分区, 上面写着EFI system, 删也删不掉, 因为删除分区的菜单是灰掉的. 找到了这篇文章, 成功的删掉了这个烦人的分区. 整个过程记录如下:   参考 ...

  9. 小米2s线刷出现remote: partition table doesn't exist

    =================问题============ 小米2s线刷出现remote: partition table doesn't exist =================解决方案= ...

随机推荐

  1. C++学习笔记37:元编程

    元编程 什么是元编程(metaprogramming) 利用模板可以进行编译期计算(数值计算,型式计算和代码计算)的特点进行程序设计 为什么可以进行元编程? C++是两层语言:执行编译期计算的代码称为 ...

  2. ios更改UITabBarController背景以及选中背景图片的方法

    一.背景图片  1.5.0以上版本     UIImage *image = [UIImage imageNamed:@"system_tabbar_bg.png"];     [ ...

  3. C#<热血传奇>服务端源代码再次给力更新

    前段时间一直在忙公司项目,最近抽点空稍微把部分代码重新整理一下(代码太久没碰很多地方都忘记了 囧~~~) 此次还是更新服务端,并修正上一版里面存在的很多指针 异常BUG...  (代码比较烂,还请各位 ...

  4. C#基础|值类型和引用类型以及传参问题

    为了明白什么是值类型和引用类型,先引入你两个概念.堆内存与栈内存   堆内存与栈内存   由于咱的描述能力有限,就不对其下定义了,来看看两者的作用.   共同点: 都是用来存放数据的   不同点: 堆 ...

  5. 【综述】(MIT博士)林达华老师-"概率模型与计算机视觉”

    [综述](MIT博士)林达华老师-"概率模型与计算机视觉” 距上一次邀请中国科学院的樊彬老师为我们撰写图像特征描述符方面的综述(http://www.sigvc.org/bbs/thread ...

  6. Seven Python Tools All Data Scientists Should Know How to Use

    Seven Python Tools All Data Scientists Should Know How to Use If you’re an aspiring data scientist, ...

  7. 【win8技巧】win8一键截图自动保存到文件夹

    以前截图都是按着键盘的PrtSc键,但是这个只是保存到剪贴板,还需要粘贴才行. 现在win8可以直接使用 Win + PrtSc 进行全屏截图,不仅保存到剪贴板,而且自动保存到[库]--[图片]--[ ...

  8. 9个Java性能优化工具汇总

    本文来自blog.idrsolutions.com 1.NetBeans profiler NetBeans Profiler是一个模块化的添加,为NetBeans IDE提供分析功能,它是一个开源的 ...

  9. 为 UWP 应用提供的 .NET 网络 API

    [编者按]本文作者是 Windows networking 团队项目经理 Sidharth Nabar.在微软 Build 2015 大会上,.NET Core 5 作为开发 UWP(Universa ...

  10. PHP 系统常量及自定义常量

    __FILE__ 这个默认常量是 PHP 程序文件名.若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名. __LINE__ 这个默认常量是 P ...