博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 分区表exchange原理
阅读量:6162 次
发布时间:2019-06-21

本文共 1724 字,大约阅读时间需要 5 分钟。

     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本身并没有改变,和物理存储位置无关,但必须是分区表和非分区表 之间才可以交换。

 

转载地址:http://aqefa.baihongyu.com/

你可能感兴趣的文章
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>