zoukankan      html  css  js  c++  java
  • oracle exchange partition 測试



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





  • 相关阅读:
    html 父容器和子容器通信
    5.7.13mysql 无法登陆
    c# foreach枚举器
    WPF bitmap转bitmapimage 使用 CreateBitmapSourceFromHBitmap内存泄漏
    c# 另存为excel
    CRC循环校验码
    一般处理程序
    DSS->数仓->数据集市->数据湖->数据中台->商业智能
    常见的消息中间件对比
    Dockerfile详解
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6798536.html
Copyright © 2011-2022 走看看