exchange partition global index

news2024/12/24 22:10:14
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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day16:static、final、常量、抽象类

一、static 静态变量能否继承&#xff1f; 静态变量属于类&#xff0c;是共享的资源&#xff0c;不认为是被继承的 静态变量不可以定义在静态方法中&#xff0c; 静态方法中先于对象存在&#xff0c; 不能使用 this super 静态方法中可以直接调用静态方法。 静态方法不能直…

MySQL中基础查询语句

用户表user数据如下&#xff1a; iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543famale20北京大学Deijing42315female 23 浙江大学ZheJiang55432male25山东大学Shandong 1&#xff0c;写出ddl语句创建如上表&#xff0c;…

idea更改背景-给idea设置个性化背景

一&#xff0c;具体操作 按两次键盘Shift,打开快速查找/搜索功能 输入setb 选择Set Backgrounf Image 选择本地图片 二&#xff0c;推荐图片网站 Awesome Wallpapers - wallhaven.cc 该网站拥有大量免费高清图片可以白嫖

国内10大云服务器厂商,你用过几个?

国内排名前10的云服务器厂商如下&#xff1a; 1、阿里云。阿里云是国内最大的云计算服务商之一&#xff0c;其云服务器产品具有高可用性、高扩展性和高安全性等优势&#xff0c;深受广大用户的青睐。 2、腾讯云。腾讯云是国内领先的云计算服务商之一&#xff0c;其云服务器产品…

腾讯云轻量应用服务器端口打开方法

腾讯云轻量应用服务器端口放行在哪设置&#xff1f;在防火墙中可以开启端口号&#xff0c;腾讯云轻量应用服务器端口怎么开通&#xff1f;在轻量服务器管理控制台的防火墙中开启端口&#xff0c;如果是CVM云服务器在安全组中开通&#xff0c;腾讯云服务器网以轻量应用服务器开通…

C++——命名空间、输入、输出

在我们接触C之前&#xff0c;C语言中有时候会有使用全局变量&#xff0c;全局变量在使用过程中可能会发生冲突&#xff0c;这个冲突有时会是我们与库之间的冲突&#xff0c;有时又会是我们自己定义的之间的冲突&#xff0c;那么这时候命名空间的出现将很好的解决这个问题&#…

美国访问学者签证怎么样申请成功率高?

近年来&#xff0c;越来越多的人选择申请美国访问学者签证&#xff0c;以便在美国深造、交流学术知识以及拓展国际视野。那么&#xff0c;如何提高申请美国访问学者签证的成功率呢&#xff1f;以下是知识人网小编整理的一些成功申请的建议供您参考。 1.提前准备&#xff1a;提交…

Vue--》打造个性化医疗服务的医院预约系统(五)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Javascript进阶[面向对象编程]

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

【MySQL】MySQL 数据类型

目录 1. tinyint 类型 2. bit 类型 3. 小数类型 1、float 类型 2、decimal 类型 3. 字符串类型 1、char 类型 2、varchar 类型 4. 日期类型 5. enum和set 1、枚举和集合类型语法 2、枚举和集合类型的查找 6、find_in_set 函数 写在最后&#xff1a; 1. tinyint …

关于Java反射

JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解…

MyBatis Plus-个人笔记

前言 学习视频 尚硅谷-Mybatis-Plus教程学习主要内容 本文章记录尚硅谷-Mybatis-Plus教程内容&#xff0c;只是作为自己学习笔记&#xff0c;如有侵扰请联系删除 一、MyBatis-Plus简介 1、简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#…

BGP基础实验建邻+宣告实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】除R5的5.5.5.0环回外&#xff0c;其他所有的环回均可互相访问 实验思路如下&#xff1a; &#xff08;1&#xff09;合理的IP配置 &#xff08;2&#xff09;合理的BGP配置 &#xff08;…

监控Kubernetes Node组件的关键指标

所有的 Kubernetes 组件&#xff0c;都提供了 /metrics 接口用来暴露监控数据&#xff0c;Kube-Proxy 也不例外。通过 ss 或者 netstat 命令可以看到 Kube-Proxy 监听的端口&#xff0c;一个是 10249&#xff0c;用来暴露监控指标&#xff0c;一个是 10256 &#xff0c;作为…

【IC萌新虚拟项目】代码覆盖率收集与反馈

关于整个虚拟项目&#xff0c;请参考&#xff1a; 【IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 实际参与过项目的同学一定对质量活动这四个字深恶痛绝&#xff0c;项目进入质量活动阶段时&#xff0c;意味着RTL的时序和面积功耗等主…

【算法训练营】队列 合集(1)

&#x1f4cd;前言 本篇将学习queue的OJ题并学习queue的基础知识。 &#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&a…

Linux Day07

一、僵死进程 1.1僵死进程产生的原因 子进程先于父进程结束, 而父进程没有获取子进程退出码&#xff0c;释放子进程占用的资源&#xff0c;此时子进程将成为一个僵死进程。 在第一个框这里时父进程子进程都没有结束&#xff0c;显示其pid 父进程是2349&#xff0c;子进程是235…

nnU-Net 终极指南

一、说明 了解最先进的nnU-Net以及如何将其应用于您自己的数据集所需的一切。使用nnU-Net&#xff0c;这是语义图像分割中非常强大的基线。在本指南中&#xff0c;您将&#xff1a; 对nnU-Net的主要贡献进行简要概述。了解如何将 nnU-Net 应用于您自己的数据集。 但是&#xff…

【C++】set 和 map 简单了解使用

文章目录 关联式容器set 和 multisetmap 和 multimap 关联式容器 set 和 multiset map 和 multimap

【福建事业单位-资料分析】04 倍数、特殊增长率

【福建事业单位-资料分析】04 倍数、特殊增长率 一、倍数1.1现期倍数1.2 基期倍数总结 二、特殊增长率2.1 间隔增长率间隔倍数和间隔基期&#xff08;都要先求得间隔增长率r&#xff09; 2.2 年均增长率年均增长率的比较年均增长率计算-居中代入 2.3 混合增长率总结 三、总结 一…