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子句。则表示不再验证数据有效性,因此指定该子句时务必谨慎。

oracle exchange partition 測试的更多相关文章

  1. 删除online日志測试及ora-600 [4194]错误的处理

    今天做了一个关于破坏online日志的恢复測试,主要三个场景: 測试1:正常关闭数据库后删除非当前日志 測试2:正常关库后.删除在线日志文件 測试3:非正常关闭数据库.并删除当前在线日志文件 我的測试 ...

  2. Oracle RAC cache fusion原理測试

    Oracle RAC cache fusion是RAC最核心的工作机制.他把全部实例的SGA虚拟成一个大的SGA区,每当不同的实例请求同样的数据块,这个数据块就须要在实例间进行传递. 那究竟什么时候传 ...

  3. Oracle Enterprise Linux 64-bit 下Oracle11g的监听配置改动及測试步骤

    測试环境:Oracle Enterprise Linux 64-bit (5.8版本号) + Oracle 11g 64位 相关说明: Oracle11g64位软件的安装位置为/u01/app/ora ...

  4. 測试oracle 11g cluster 中OLR的重要性

     測试oracle 11g cluster 中OLR的重要性 called an Oracle Local Registry (OLR): each node in a cluster has a ...

  5. oracle capability i/o(压力測试数据库serveri/o性能)

    今天是2014-04-21,今天简单仅仅说明一下怎么影响重做数据的一个因素,那就是i/o吞吐量,oracle的介质恢复依赖于i/o,假设i/o存在瓶颈,那么势必会影响备库的介质恢复. 那么i/o st ...

  6. 从linux telnet到exchange邮件server来測试发送邮件

    我们在Linux下,能够通过telnet邮件server的25port(一般smtp邮件server都是这个),来測试是否能发送邮件. 前提是先得把DNS配好,或者/etc/hosts文件制定好邮件s ...

  7. Oracle 左外连接的一些測试

    为了更加深入左外连接,我们做一些測试,外连接的写法有几种形式,我们能够通过10053跟踪到终于SQL转换的形式. --初始化数据 create table A (   id number,   age ...

  8. Oracle 复制随意表一行的SQL语句(測试Ok)

    測试了非常久,网上说的方法非常多,事实上都是错误的.正确的写法: declare cursor rowAll is select * from tb_news where 1=1; row1 tb_n ...

  9. hibernate 单元測试框架

    hibernate在写数据库配置文件时很的不确定,必须进行必要的測试保证数据库结构的正确性.所以能够应用junit进行測试. 使用junit很easy,eclipse仅仅须要右键项目新建一个junit ...

随机推荐

  1. 初识面向对象-python

    Python 面向对象 一.概念的区分: 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好 ...

  2. AngularJs快速上手掌握

    一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来打造一个单页面程序,后面一篇文章将介绍如何使用AngularJs的开发一个单页面应用 ...

  3. Python-伪私有属性

    原文:http://blog.itpub.net/26250550/viewspace-1411768/ 通常在 Python 中,我们都被告知可以使用双下划线开头的方法名定义方法来达到私有函数的目标 ...

  4. excel模板解析前后设计变化,以及我对此的看法和感受

    前言:近期也在做Excel模板的解析工作,目前来说,应该是第三版了.我最开始做的,就是垒鸡窝,虽然考虑了1.0提出的关于excel解析的一些建议和问题(单个模板),但是真的毫无设计可言.就几个工具类, ...

  5. MessageBox:弹出窗口

    Ext.onReady(function () { Ext.MessageBox.alert("提示信息!","Hello World!"); }); Ext, ...

  6. [LOJ#2326]「清华集训 2017」简单数据结构

    [LOJ#2326]「清华集训 2017」简单数据结构 试题描述 参加完IOI2018之后就是姚班面试.而你,由于讨厌物理.并且想成为乔布斯一样的创业家,被成功踢回贵系. 转眼,时间的指针被指向201 ...

  7. redis学习(二)redis.conf文件配置

    转自: https://www.cnblogs.com/pqchao/p/6558688.html 为了更好的使用redis,我们需要详细的了解redis配置文件及相关参数作用. bind 127.0 ...

  8. MFC 禁用输入法

    #include <Imm.h> HIMC m_hImc; // 全局或者成员变量 // Function for Disabling IME void CMyDialog::Disabl ...

  9. 在vue中使用sass

    首先安装node-sass和sass-loader cnpm install node-sass && sass-loader --save 在webpack.config.js 的m ...

  10. 【SQL Server】修改DB逻辑文件名称

    步骤一:查询当前DB逻辑文件名称(主逻辑文件.日志逻辑文件) ; 步骤二:步骤二改变(还原)DB逻辑文件名称 RESTORE DATABASE AW831 FROM DISK='D:\AW831.DA ...