exchange partition global index

EXCHANGE PARTITION with a Table having a UNIQUE INDEX and PK Constraint. (Doc ID 1620636.1)​编辑To Bottom


In this Document

Symptoms
Changes
Cause
Solution
References

APPLIES TO:

Oracle Database - Enterprise Edition - Version 11.2.0.3 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Information in this document applies to any platform.

SYMPTOMS

NOTE: In the images and/or the document content below, the user information and environment data used represents fictitious data from the Oracle sample or bulit-in schema(s), Public Documentation delivered with an Oracle database product or other training material.  Any similarity to actual environments, actual persons, living or dead, is purely coincidental and not intended in any manner.

Running the following EXCHANGE PARTITION results in an ora-14098:


alter table gps exchange partition GPS_DATA_2013_11_24
with table gps_partition_temp
INCLUDING  INDEXES WITHOUT VALIDATION; SQL>   2    3
with table gps_partition_temp
          *
ERROR at line 2:
ORA-14098: index mismatch for tables in ALTER TABLE EXCHANGE PARTITION


 

CHANGES

CAUSE

Below is the Failing testcase :

The test Environment was Oracle RDBMS Database 11.2.0.3

ALTER TABLE GPS
DROP PRIMARY KEY CASCADE;

DROP TABLE GPS CASCADE CONSTRAINTS;

CREATE TABLE GPS
(
 GPS_GUID            RAW(16)                   DEFAULT (sys_guid())          NOT NULL,
 DVC_ID              NUMBER(12)                NOT NULL,
 USR_ID              NUMBER(12)                NOT NULL,
 ENTRY_UTC           TIMESTAMP(6)              DEFAULT (SYS_EXTRACT_UTC(SYSTIMESTAMP)) NOT NULL,
 COVERAGE_STAT_ID    NUMBER(12)                NOT NULL,
 SPEED               FLOAT(126)                DEFAULT (0),
 DIRECTION           FLOAT(126)                DEFAULT (0),
 ESTIMATED_ACCURACY  NUMBER(12),
 UPDATE_UTC          TIMESTAMP(6)              DEFAULT (SYS_EXTRACT_UTC(SYSTIMESTAMP)) NOT NULL,
 LATITUDE            FLOAT(126),
 LONGITUDE           FLOAT(126),
 TS_GUID             RAW(16),
 CLUSTER_ID          VARCHAR2(50 BYTE),
 GEOCODE_UTC         TIMESTAMP(6),
 STREET              NVARCHAR2(100),
 SUITE               VARCHAR2(50 BYTE),
 CITY                NVARCHAR2(100),
 STATE_PROVINCE      NVARCHAR2(100),
 POSTAL_CODE         NVARCHAR2(20),
 COUNTRY             NVARCHAR2(100)
)
TABLESPACE USERS
PARTITION BY RANGE (ENTRY_UTC)
(  PARTITION GPS_DATA_2013_11_10 VALUES LESS THAN (TIMESTAMP' 2013-11-10 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,  
 PARTITION GPS_DATA_2013_11_17 VALUES LESS THAN (TIMESTAMP' 2013-11-17 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,  
 PARTITION GPS_DATA_2013_11_24 VALUES LESS THAN (TIMESTAMP' 2013-11-24 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS
)
ENABLE ROW MOVEMENT;

CREATE UNIQUE INDEX CX_GPS ON GPS
(USR_ID, ENTRY_UTC)
 TABLESPACE USERS
LOCAL (  
 PARTITION GPS_DATA_2013_11_10
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,
 PARTITION GPS_DATA_2013_11_17
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,
 PARTITION GPS_DATA_2013_11_24
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS)
NOPARALLEL;



CREATE UNIQUE INDEX PK_GPS ON GPS
(GPS_GUID)
LOGGING
TABLESPACE USERS
NOPARALLEL;

ALTER TABLE GPS ADD (
 CONSTRAINT PK_GPS
 PRIMARY KEY
 (GPS_GUID)
 USING INDEX PK_GPS);




Testcase to reproduce the issue, with 1 row.

insert 1 row


Insert into GPS
  (GPS_GUID, DVC_ID, USR_ID, ENTRY_UTC, COVERAGE_STAT_ID, DIRECTION, ESTIMATED_ACCURACY, UPDATE_UTC, LATITUDE, LONGITUDE)
Values
  ('8A1694614246012B0142635BDB1576E0', 8087975, 8321547, TO_TIMESTAMP('11/17/2013 12:00:25.471000 AM','fmMMfm/fmDDfm/YYYY fmHH12fm:MI:SS.FF AM'), 1,
   -1, 0, TO_TIMESTAMP('11/17/2013 12:00:33.557980 AM','fmMMfm/fmDDfm/YYYY fmHH12fm:MI:SS.FF AM'), 0, 0);
COMMIT;

DROP TABLE gps_partition_temp;

CREATE TABLE gps_partition_temp TABLESPACE users PCTFREE 0
INITRANS 10 MAXTRANS 255 STORAGE( INITIAL 1 m Next 1 m MINEXTENTS 1
MAXEXTENTS UNLIMITED ) AS SELECT * FROM gps WHERE 1=2;
 

INSERT /*+ APPEND */ INTO gps_partition_temp
select a.* from gps partition(GPS_DATA_2013_11_24) a where rownum < 100;

COMMIT;

CREATE UNIQUE INDEX gps_partemp_gpsguid ON gps_partition_temp (gps_guid) COMPUTE STATISTICS;

ALTER TABLE gps_partition_temp ADD CONSTRAINT pk_gps_partition_temp PRIMARY KEY
(gps_guid) DISABLE VALIDATE;


alter table gps exchange partition GPS_DATA_2013_11_24
with table gps_partition_temp
INCLUDING  INDEXES WITHOUT VALIDATION;


Result:
========

alter table gps exchange partition GPS_DATA_2013_11_24
with table gps_partition_temp
INCLUDING  INDEXES WITHOUT VALIDATION; SQL>   2    3
with table gps_partition_temp
          *
ERROR at line 2:
ORA-14098: index mismatch for tables in ALTER TABLE EXCHANGE PARTITION




CONCLUSION
-----------
This issue arises due to the UNIQUE INDEX defined for the PK CONSTRAINT.

The issue is documented in the DataWarehousing Guide.

Chapter 16 Maintaining the Data Warehouse
"
If the partitioned table has a primary or unique key that is enforced with a global index structure,
ensure that the constraint on sales_pk_jan01 is validated without the creation of an index structure, as in
the following:

ALTER TABLE sales_01_2001 ADD CONSTRAINT sales_pk_jan01
PRIMARY KEY (sales_transaction_id) DISABLE VALIDATE;

The creation of the constraint with ENABLE clause would cause the creation of a unique index, which does not
match a local index structure of the partitioned table. You must not have any index structure built on the
nonpartitioned table to be exchanged for existing global indexes of the partitioned table. The exchange command
would fail.
"
 

SOLUTION

ALTER TABLE GPS
DROP PRIMARY KEY CASCADE;

DROP TABLE GPS CASCADE CONSTRAINTS;

CREATE TABLE GPS
(
 GPS_GUID            RAW(16)                   DEFAULT (sys_guid())          NOT NULL,
 DVC_ID              NUMBER(12)                NOT NULL,
 USR_ID              NUMBER(12)                NOT NULL,
 ENTRY_UTC           TIMESTAMP(6)              DEFAULT (SYS_EXTRACT_UTC(SYSTIMESTAMP)) NOT NULL,
 COVERAGE_STAT_ID    NUMBER(12)                NOT NULL,
 SPEED               FLOAT(126)                DEFAULT (0),
 DIRECTION           FLOAT(126)                DEFAULT (0),
 ESTIMATED_ACCURACY  NUMBER(12),
 UPDATE_UTC          TIMESTAMP(6)              DEFAULT (SYS_EXTRACT_UTC(SYSTIMESTAMP)) NOT NULL,
 LATITUDE            FLOAT(126),
 LONGITUDE           FLOAT(126),
 TS_GUID             RAW(16),
 CLUSTER_ID          VARCHAR2(50 BYTE),
 GEOCODE_UTC         TIMESTAMP(6),
 STREET              NVARCHAR2(100),
 SUITE               VARCHAR2(50 BYTE),
 CITY                NVARCHAR2(100),
 STATE_PROVINCE      NVARCHAR2(100),
 POSTAL_CODE         NVARCHAR2(20),
 COUNTRY             NVARCHAR2(100)
)
TABLESPACE USERS
PARTITION BY RANGE (ENTRY_UTC)
(  PARTITION GPS_DATA_2013_11_10 VALUES LESS THAN (TIMESTAMP' 2013-11-10 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,  
 PARTITION GPS_DATA_2013_11_17 VALUES LESS THAN (TIMESTAMP' 2013-11-17 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,  
 PARTITION GPS_DATA_2013_11_24 VALUES LESS THAN (TIMESTAMP' 2013-11-24 00:00:00')
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS
)
ENABLE ROW MOVEMENT;

CREATE  INDEX PK_GPS ON GPS                      --   The UNIQUE option can be removed here.
(GPS_GUID)                                       --   The PK defined below will provide the uniqueness
LOGGING
TABLESPACE USERS
NOPARALLEL;

ALTER TABLE GPS ADD (
 CONSTRAINT PK_GPS
 PRIMARY KEY
 (GPS_GUID)
 USING INDEX PK_GPS);


CREATE UNIQUE INDEX CX_GPS ON GPS
(USR_ID, ENTRY_UTC)
 TABLESPACE USERS
LOCAL (  
 PARTITION GPS_DATA_2013_11_10
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,
 PARTITION GPS_DATA_2013_11_17
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS,
 PARTITION GPS_DATA_2013_11_24
   LOGGING
   NOCOMPRESS
   TABLESPACE USERS)
NOPARALLEL;


Testcase to resolve the issue, with 1 row.

DROP TABLE gps_partition_temp;

CREATE TABLE gps_partition_temp TABLESPACE users AS SELECT * FROM gps WHERE 1=2;
 

INSERT /*+ APPEND */ INTO gps_partition_temp
select a.* from gps partition(GPS_DATA_2013_11_24) a where rownum < 100;

COMMIT;

ALTER TABLE gps_partition_temp ADD CONSTRAINT pk_gps_partition_temp PRIMARY KEY
(gps_guid) DISABLE VALIDATE;

CREATE UNIQUE INDEX CX_GPS_partition_temp ON GPS_partition_temp
(USR_ID, ENTRY_UTC)
TABLESPACE USERS NOPARALLEL;

alter table gps exchange partition GPS_DATA_2013_11_24
with table gps_partition_temp
INCLUDING  INDEXES WITHOUT VALIDATION;

( note DISABLE VALIDATE  and WITHOUT VALIDATION; are required)


THIS WORKS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/68155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring整合MyBatis(详细步骤)

Spring与Mybatis的整合&#xff0c;大体需要做两件事&#xff0c; 第一件事是:Spring要管理MyBatis中的SqlSessionFactory 第二件事是:Spring要管理Mapper接口的扫描 具体的步骤为: 步骤1:项目中导入整合需要的jar包 <dependency><!--Spring操作数据库需要该jar包…

gazebo 导入从blender导出的dae等文件

背景&#xff1a; gazebo 模型库里的模型在我需要完成的任务中不够用&#xff0c;还是得从 solidworks、3DMax, blender这种建模软件里面在手动画一些&#xff0c;或者去他们的库里面在挖一挖。 目录 1 blender 1-1 blender 相关links 1-2 install 2 gazebo导入模型 2-1 g…

湘大 XTU OJ 1308 比赛 题解:循环结束的临界点+朴素模拟

一、链接 比赛 二、题目 题目描述 有n个人要进行比赛&#xff0c;比赛规则如下&#xff1a; 假设每轮比赛的人是m&#xff0c;取最大的k&#xff0c;k2^t且k≤m。这k个人每2人举行一场比赛&#xff0c;胜利者进入一下轮&#xff0c;失败者被淘汰。余下的m-k个人&#xff0…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理&#xff08;包括BeanPostProcessor的处理、初始化方法的处理&#xff09;叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…

mysql基础之触发器的简单使用

1.建立学生信息表 -- 触发器 -- 建立学生信息表 create table s1(id int unsigned auto_increment,name varchar(30),score tinyint unsigned,dept varchar(50),primary key(id) );2.建立学生补考信息表 -- 建立学生补考信息表 create table s2 like s1;3.建立触发器&#xf…

Grafana技术文档-概念-《十分钟扫盲》

Grafana官网链接 Grafana: The open observability platform | Grafana Labs 基本概念 Grafana是一个开源的度量分析和可视化套件&#xff0c;常用于对大量数据进行实时分析和可视化。以下是Grafana的基本概念&#xff1a; 数据源&#xff08;Data Source&#xff09;&#…

【大数据】Flink 详解(一):基础篇

Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇 1、什么是 Flink &#xff1f; Flink 是一个以 流 为核心的高可用、高性能的分布式计算引擎。具备 流批一体&#xff0c;高吞吐、低延迟&#xff0c;容错能力&#xff0c;大规模复杂计算等特点&#xff0c;在数据流上提…

模板的进阶

目录 1.非类型模板参数 2.模板特化 2.1概念 2.2函数模板特化 2.3类模板特化 2.3.1全特化 2.3.2偏特化 3.模板分离编译 3.1什么是分离编译 3.2 模板的分离编译 3.3解决方法 4. 模板总结 1.非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a…

Python(七十五--总结)列表、字典、元组、集合总结

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

关于Object 0 = new Object() 的追魂九连问

文章目录 对象的创建过程对象的组成解析普通对象**结果分析&#xff1a;**给对象添加属性注意事项 补充jvm压缩指针栗子&#xff1a; 对象头包含什么对象怎么定位&#xff1f;**句柄方式和直接引用的优缺点&#xff1a;** 对象怎么分配&#xff1f;为什么hotspot不使用c对象来代…

QT的信号槽的四种写法和五种链接方式

目录 四种信号槽写法&#xff1a; 五种连接方式&#xff1a; 实例&#xff1a; 常见错误及改正&#xff1a; 错误1: 未连接信号与槽 错误2: 信号和槽参数不匹配 错误3: 未使用Q_OBJECT宏 错误4: 跨线程连接未处理 在Qt中&#xff0c;信号&#xff08;Signal&#xff09…

Stephen Wolfram:让 ChatGPT 真正起作用的是什么?

What Really Lets ChatGPT Work? 让 ChatGPT 真正起作用的是什么&#xff1f; Human language—and the processes of thinking involved in generating it—have always seemed to represent a kind of pinnacle of complexity. And indeed it’s seemed somewhat remarkabl…

go-admin 使用开发

在项目中使用redis 作为数据缓存&#xff1a;首先引入该包 “github.com/go-redis/redis/v8” client : redis.NewClient(&redis.Options{Addr: config.QueueConfig.Redis.Addr, // Redis 服务器地址Password: config.QueueConfig.Redis.Password, // Redis 密码&…

Vue自定义指令使用

本篇文章讲述使用Vue自定义指令&#xff0c;并在项目中完成相应功能。 在平常Vue脚手架项目中&#xff0c;使用到 自定义指令较少&#xff0c;一般都是使用的自带指令&#xff0c;比如 v-show 、v-if 、 v-for 、 v-bind 之类的。这些已经能够满足大多数项目使用。更多的可能也…

springboot+mybatis实现简单的增、删、查、改

这篇文章主要针对java初学者&#xff0c;详细介绍怎么创建一个基本的springboot项目来对数据库进行crud操作。 目录 第一步&#xff1a;准备数据库 第二步&#xff1a;创建springboot项目 方法1&#xff1a;通过spring官网的spring initilizer创建springboot项目 方法2&am…

UG NX二次开发(C#)-CAM自定义铣加工的出口环境

文章目录 1、前言2、自定义铣削加工操作3、出错原因4、解决方案4.1 MILL_USER的用户参数4.2 采用自定义铣削的方式生成自定义的dll4.2 配置加工的出口环境4.3 调用dll5、结论1、前言 作为一款大型的CAD/CAM软件, UG NX为我们提供了丰富的加工模板,通过加工模板能直接用于生成…

day7 8-牛客67道剑指offer-JZ74、57、58、73、61、62、64、65、把字符串转换成整数、数组中重复的数字

文章目录 1. JZ74 和为S的连续正数序列暴力解法滑动窗口&#xff08;双指针&#xff09; 2. JZ57 和为S的两个数字3. JZ58 左旋转字符串4. JZ73 翻转单词序列5. JZ61 扑克牌顺子6. JZ62 孩子们的游戏(圆圈中最后剩下的数)迭代 模拟递归 约瑟夫环问题 找规律 7. JZ64 求123...n8…

0基础学C#笔记08:插入排序法

文章目录 前言一、过程简单描述&#xff1a;二、代码总结 前言 我们在玩打牌的时候&#xff0c;你是怎么整理那些牌的呢&#xff1f;一种简单的方法就是一张一张的来&#xff0c;将每一张牌插入到其他已经有序的牌中的适当位置。当我们给无序数组做排序的时候&#xff0c;为了…

SpringBoot 该如何预防 XSS 攻击

XSS 漏洞到底是什么&#xff0c;说实话我讲不太清楚。但是可以通过遇到的现象了解一下。在前端Form表单的输入框中&#xff0c;用户没有正常输入&#xff0c;而是输入了一段代码&#xff1a;</input><img src1 onerroralert1> 这个正常保存没有问题。问题出在了列表…

竞赛项目 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…