oracle分区的exchange操作非常快,那原理是什么呢?下面我们来做个实验:

SQL> create table test (id number(3));
表已创建。

SQL> insert into test values (1);
已创建 1 行。

SQL> commit;
提交完成。

SQL> select object_id,data_object_id from user_objects s where s.object_name='TEST';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
    180148         180148

SQL> create table test_part(id number(3)) partition by range(id)
  2      (partition p1 values less than (10),
  3       partition p2 values less than (20));
表已创建。

SQL> col object_name format a20
SQL> col subobject_name format a20
SQL> select object_name,s.subobject_name,object_id, data_object_id
  2    from user_objects s
  3   where s.object_name = 'TEST_PART';
 
OBJECT_NAME          SUBOBJECT_NAME        OBJECT_ID DATA_OBJECT_ID
-------------------- -------------------- ---------- --------------
TEST_PART            P1                       180150         180150
TEST_PART            P2                       180151         180151
TEST_PART                                     180149

SQL> select * from test;
        ID
----------
         1
SQL> select * from test_part;
未选定行

SQL> alter table test_part exchange partition p1 with table test;
表已更改。

SQL> select * from test;
未选定行

SQL> select * from test_part;
        ID
----------
         1
SQL> select * from test_part partition (p1);

ID
----------
         1

SQL> select object_id,data_object_id from user_objects s where s.object_name='TEST';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
    180148         180150

SQL> select object_name,s.subobject_name,object_id, data_object_id
  2    from user_objects s
  3   where s.object_name = 'TEST_PART';
OBJECT_NAME          SUBOBJECT_NAME    OBJECT_ID   DATA_OBJECT_ID
-------------------- ---------------- ----------   --------------
TEST_PART            P1                 180150         180148
TEST_PART            P2                 180151         180151
TEST_PART                               180149

exchange只是在oracle的数据字典中修改了分区和表的结构。数据并未发生任何修改,因此速度很快。更详细一点就是只是把不同object_id 对应的data_object_id交换了一下,而segment本身并没有改变,和物理存储位置无关,但必须是分区表和非分区表 之间才可以交换。

oracle 分区表exchange原理的更多相关文章

  1. 深入学习Oracle分区表及分区索引

    关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Has ...

  2. oracle 分区表和分区索引

    很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...

  3. ORACLE分区表、分区索引详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...

  4. 【三思笔记】 全面学习Oracle分区表及分区索引

    [三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...

  5. Oracle分区表管理的一些笔记

    [转自] http://www.linuxidc.com/Linux/2011-07/38381.htm Oracle分区表的管理笔记(仅限于对普通表,即堆表的分区管理,IOT跟CLUSTER TAB ...

  6. 性能-发挥ORACLE分区表

    ORACLE分区表发挥性能 http://www.cnblogs.com/zwl715/p/3962837.html 1.1 分区表PARTITION table 在ORACLE里如果遇到特别大的表, ...

  7. Oracle 分区表管理之组合分区(分区索引失效与性能比较)

    整体结构如下: Oracle  分区表管理之组合分区(分区索引失效与性能比较) 虽然老早就使用了分区表,终于有时间写有关分区表的内容:不是所有的场景数据量变大需要用到分区表,一般单表数据超过2g可以考 ...

  8. 谈一下如何设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,所有数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  9. mysql分区表的原理和优缺点

    1.分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分 ...

随机推荐

  1. C++一些注意点之异常处理

    几篇文章:(1)http://blog.csdn.net/daheiantian/article/details/6530318 (2)http://blog.chinaunix.net/uid-21 ...

  2. AFNetworking 进行网络监测

    AFNetworking 进行网络监测 引入头文件,创建检测判断BOOL值 // 网络请求的头文件 #import <AFNetworking.h> @interface ViewCont ...

  3. android应用如何启动另外一个apk应用

    在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点在于我们要拿到第三方apk的package名称跟class名称, 如:package名称是com.funcity.tax ...

  4. if语句之求一元二次方程

    思路:1.首先明白什么叫做一元二次方程,当a不等于0的时候,此方程是一元二次方程 2.根据公式derta=b*b-4*a*c来判断根的情况 ①derta>0时,方程有两个不相等的实根 ②dert ...

  5. if语句之有房么?有钱么?有能力么?

    思路:1.如果有房,可以谈谈 2.如果没有房,问第二个条件有钱么,如果有,可以谈谈 3.如果没有房没有钱,则问第三个条件有能力么,如果有,可以谈谈 4.如果以上三个条件都没有,则拜拜 Console. ...

  6. ThinkPHP - 连贯操作

    /** * 连贯操作 * @return 无返回值 */ public function coherentOperation(){ //实例化模型 $user = M('User'); // +--- ...

  7. Spark源码阅读@ListenerBus 的实现

  8. [POJ 1521]--Entropy(哈夫曼树)

    题目链接:http://poj.org/problem?id=1521 Entropy Time Limit: 1000MS    Memory Limit: 10000K Description A ...

  9. goahead cgi 及出现的问题解决

    1. route.txt    配置cgi路径 route uri=/cgi-bin dir=/web handler=cgi 2.交叉编译生成cgi goahead  源码路径下  ./test/c ...

  10. HDU 3923 Invoker 【裸Polya 定理】

    参考了http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove 的模板 对于每一种染色,都有一个等价群,例如旋转, ...