Exchange partition提供了一种方式,让你在表与表或分区与分区之间迁移数据。注意不是将表转换成分区或非分区的形式,而仅仅仅是迁移表中数

 据(互相迁移),因为其号称是採用了更改数据字典的方式,因此效率最高( 差点儿不涉及io操作)。

Exchange partition适用于全部分区格式,你能够将数据从分区表迁移到非分区表。也能够从非分区表迁移至分区表。

     这就给批量更新分区表的数据提供了一个非常不错的思路,这里我便做一次普通表与分区表数据交换的实验。





注意:分区表不能直接与分区表交换所以

假设对换分区表。用普通表过渡

假设对换普通表,用分区表过渡

索引必须是LOCAL INDEX,不能是GLOBAL INDEX 





1.创建測试表空间

create tablespace tbs1 datafile '/oracle_data/szdb/tbs1_01.dbf' size 10m autoextend on;

create tablespace tbs2 datafile  '/oracle_data/szdb/tbs2_01.dbf' size 10m autoextend on;





2.创建測试表

drop table t_temp purge;

drop table t_part_list purge;

create table t_temp as select 1 id, t.owner,t.OBJECT_NAME,t.OBJECT_ID,t.OBJECT_TYPE from dba_objects t;

create table t_part_list (id number,owner varchar2(20),object_name varchar2(40),object_id number,object_type varchar2(20))

partition by list (id)

(partition p1 values(1) tablespace tbs1,

 partition p2 values(2) tablespace tbs2

);

 3.查看表数据

SQL> select count(*) from t_part_list;

 

COUNT(*)

---------

          0

SQL> select count(*) from t_temp;

 

  COUNT(*)

----------

    80905

4.交换数据

alter table t_part_list exchange partition p1 with table  t_temp;



alter table t_part_list exchange partition p1 with table  t_temp without validation;--不再验证数据有效性





  

5.查看表数据

        SQL> select count(*) from t_part_list;

 

COUNT(*)

----------       

80905

SQL> select count(*) from t_part_list partition(p1);

 

  COUNT(*)

----------

    80905

SQL> select count(*) from t_temp;

 

  COUNT(*)

----------

     0

6.注意

在将未分区表的数据迁移到分区表中时。可能出现ora-14099的错误。尽管能够用without validation去解决,可是此时进入分区表的数据可能不符合分区规则。

所以without validation一定要慎用。

   涉及交换的两表之间表结构必须一致,除非附加with validation子句;

   假设是从非分区表向分区表做交换。非分区表中的数据必须符合分区表中指定分区的规则,除非附加without validation子句;

   假设从分区表向分区表做交换,被交换的分区的数据必须符合分区规则,除非附加without validation子句;

      Global索引或涉及到数据修改了的global索引分区会被置为unusable,除非附加update indexes子句。

  提示:一旦附加了without validation子句。则表示不再验证数据有效性,因此指定该子句时务必谨慎。

最新文章

  1. RabbitMQ的安装
  2. iOS8中使用CoreLocation定位[转]
  3. Ahjesus获取自定义属性Attribute或属性的名称
  4. js 事件监听 冒泡事件
  5. ROC曲线及AUC评价指标
  6. JQuery增删改查
  7. spring aop编程
  8. _appstart.cshtml,_pagestart.cshtml,_viewstart.cshtml
  9. android重写view和viewgroup的区别
  10. 我和小美的撸码日记--基于MVC+Jqgrid的.Net快速开发框架
  11. Next-Key Locks
  12. iOS基础 - UIWebView
  13. python构造一个freebuf新闻发送脚本
  14. 阿里云API网关(10)服务网关业务流程
  15. spark MLlib实现的基于朴素贝叶斯(NaiveBayes)的中文文本自动分类
  16. WPF 自定义控件缩放
  17. mysql 数据可视化操作---Navicat安装及简单使用
  18. Spring MVC基础知识整理➣View与Controller数据交互
  19. 关于JSONObject和JSONArray所需要的jar
  20. android -------- Eclipse选择NDK路径时 “Not a valid NDK directory”

热门文章

  1. PDO 连接与连接管理
  2. [python][django学习篇][12]继续设计博客首页,点击博客标题能显示文章的详情
  3. 基数排序(java实现)
  4. 第五篇:python基础_5
  5. EPEL 安装源
  6. CMake 使用笔记
  7. Uva 10590 Boxes of Chocolates Again
  8. MFC 禁用输入法
  9. php处理ajax
  10. 【11】 Express安装入门与模版引擎ejs