ORA-14402: updating partition key column would cause a partition change

【说明】:提示此类错误说明表进行了分区,修改分区字段所引起的错误。

【解决】:1、查询系统字典表

      SELECT * FROM DBA_TABLES T WHERE T.TABLE_NAME = ‘表名称‘;

      如果出现ORA-00942则需要判断当前是否有权限。

      此时可以改为SELECT * FROM USER_TABLES T WHERE T.TABLE_NAME = ‘表名称‘;

     2、修改ROW_MOVEMENT字段值

       ROW_MOVEMENT关闭时的策略值为DISABLE,开启时为ENABLE。

      执行    ALTER TABLE 表名称 ENABLE ROW MOVEMENT;

      修改数据

      然后关闭,ALTER TABLE 表名称 DISABLE ROW MOVEMENT;

通常来说分区表的分区字段是不允许修改的,因为每次修改数据,都对表进行了一次删除和插入两种操作。

ENABLE ROW MOVEMENT还会改变ROWID 影响LOGMNR分析日志中的SQL UNDO。

附:DBA_TABLES各字段含义

Column Datatype NULL Description
OWNER VARCHAR2(30) NOT NULL 属主
TABLE_NAME VARCHAR2(30) NOT NULL 表名
TABLESPACE_NAME VARCHAR2(30)   表空间,分区、临时和索引组织表的值为空
CLUSTER_NAME VARCHAR2(30)   集群
IOT_NAME VARCHAR2(30)   索引组织表的名称(如果有的话),属于溢出或映射表项。如果 iot_type 列不为空,则此列包含基表名称
STATUS VARCHAR2(8)   如果先前的删除表操作失败,则指示表是否不能使用(无效)或有效(有效)。
PCT_FREE NUMBER   块中空闲空间的最小百分比;分区表值为空
PCT_USED NUMBER   块中使用空间的最小百分比;分区表值为空
INI_TRANS NUMBER   初始事务数;分区表值为空
MAX_TRANS NUMBER   事务的最大数量;分区表值为空
INITIAL_EXTENT NUMBER   初始区域的大小(以字节为单位);分区表值为空
NEXT_EXTENT NUMBER   二级范围的大小(以字节为单位);分区表值为空
MIN_EXTENTS NUMBER   段中允许的最小区段数;分区表值为空
MAX_EXTENTS NUMBER   区段中允许的最大区段数;分区表值为空
PCT_INCREASE NUMBER   范围大小的百分比增加;分区表值为空
FREELISTS NUMBER   用于insert操作的数据块的列表,分区表值为空
FREELIST_GROUPS NUMBER   用于insert操作的数据块的列表组,分区表值为空
LOGGING VARCHAR2(3)   日志表属性,分区表值为空
BACKED_UP VARCHAR2(1)   上次更改后表是否已备份
NUM_ROWS* NUMBER   表中的行数
BLOCKS* NUMBER   表中使用的数据块的个数
EMPTY_BLOCKS* NUMBER   表中空闲的数据块的个数
AVG_SPACE* NUMBER   分配给表的数据块中的平均空闲空间(以字节为单位)
CHAIN_CNT* NUMBER   在被从一个数据块到另一个表中的行数,或迁移到一个新块,需要保留一部分旧的rowid
AVG_ROW_LEN* NUMBER   表中一行的平均长度(以字节为单位)
AVG_SPACE_FREELIST _BLOCKS NUMBER   freelist的所有块的平均空间
NUM_FREELIST_BLOCKS NUMBER   freelist 的块的个数
DEGREE VARCHAR2(10)   扫描表的每个实例的线程数
INSTANCES VARCHAR2(10)   要扫描该表的实例数。
CACHE VARCHAR2(5)   指示表是否要缓存在缓冲区缓存(y)或不(n)中。
TABLE_LOCK VARCHAR2(8)   指示是否已启用表锁(启用)或禁用(禁用)。
SAMPLE_SIZE NUMBER   用于分析此表的样本大小
LAST_ANALYZED DATE   最近分析这张表的日期
PARTITIONED VARCHAR2(3)   指示此表是否分区。设置 是 如果是分区。
IOT_TYPE VARCHAR2(12)   如果这是一个索引组织表,值为 IOT, IOT_OVERFLOW, 或者 IOT_MAPPING,否则为NULL
TEMPORARY VARCHAR2(1)   当前会话只能看到它放在这个对象本身中的数据吗?
SECONDARY VARCHAR2(1)   是否被ODCIIndexCreate 触发创建
NESTED VARCHAR2(3)   指示表是否是嵌套表(yes)或否(NO)。
BUFFER_POOL VARCHAR2(7)   该对象的默认缓冲池。 分区表为空
ROW_MOVEMENT VARCHAR2(8)   是否已启用或禁用分区行移动
GLOBAL_STATS VARCHAR2(3)   对于分区表,指示数据收集表作为一个整体(是)或来自潜在的分区和子分区统计估计(否)
USER_STATS VARCHAR2(3)   指示用户是否直接输入统计数据(是)(否)
DURATION VARCHAR2(15)   指示临时表的持续时间。
 
  SYS$SESSION: 在会话持续期间保存行。
  SYS$TRANSACTION: 行后 提交删除
 
  分区表为空
SKIP_CORRUPT VARCHAR2(8)  
Oracle数据库是否忽略表和索引扫描中标记为已损坏的块(启用)或引发错误(禁用)。

要启用此功能,运行 dbms_repair.skip_corrupt_blocksprocedure。

MONITORING VARCHAR2(3)   表是否有 监测 属性设置
CLUSTER_OWNER VARCHAR2(30)   表所属的群集的所有者,如果有的话
DEPENDENCIES VARCHAR2(8)   指示是否启用了行级依赖跟踪(启用)或禁用(禁用)。
COMPRESSION VARCHAR2(8)   指示是否启用表压缩(启用)或禁用(已禁用);分区表为空值。
DROPPED VARCHAR2(3)   指示表是否已被删除并处于回收站(是)或否(否)中;分区表为空值。

原文地址:https://www.cnblogs.com/hanhc/p/9397180.html

时间: 2024-10-13 23:19:30

ORA-14402: updating partition key column would cause a partition change的相关文章

cassandra的primary key, partition key, cluster key,

https://stackoverflow.com/questions/24949676/difference-between-partition-key-composite-key-and-clustering-key-in-cassandra primary key是一个宏观概念,用于从表中取出数据,primary key由多个column组合而成. create table stackoverflow ( key text PRIMARY KEY, data text ); 如上面的语句所

hive报错( Non-Partition column appears in the partition specification)

在写及测的过程中发现的,有一些可能需要进一步验证.有时候hive报错位置不一定正确需要多确认 1 FAILED: NullPointerException null 不能用视图作为left outer join的右表 2 FAILED: UDFArgumentTypeException Only numeric or string type arguments are accepted but decimal is passed. 在cdh hive0.10中,avg的列不能是decimal类型

mysql update 报 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

UPDATE i18nresource SET languageId = 'en-us' Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect. 

mysql错误:you are using update mode and you tried to update a table without a where that uses a key column to disable safe mode

you are using update mode and you tried to update a table without a where that uses a key column to disable safe mode 您使用的是更新模式,并且您尝试更新一个没有在使用一个键列的表禁用安全模式 是因为 MySQL Workbench中 安全设置,执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误. 解决方法: 打开菜单[Edit] -> Preferences... 对勾

Mysql Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

今天用mysql workbench在更新数据的时候,出现了下面错误:15:52:39    update wp_posts set post_content = replace(post_content, '/water', '')    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disabl

mysql更新字段值提示You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

1 引言 当更新字段缺少where语句时,mysql会提示一下错误代码: Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect. 0.000 se

ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN DESC)函数的使用

ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN DESC)函数的作用是指定COLUMN(列)进行分区,在分区内指定COLUMN(列)进行排序,其中PARTITION BY COLUMN 为分区函数.代码具体实现如下 不进行分区的排序方式--对商品价格的升序排序 SELECT A.*, ROW_NUMBER() OVERORDER BY PRICE ASC) AS ROW_FLG FROM COMMODITY A 进分区的排序方式--对商

mysqlworkbench 执行update语句报错:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect 解决办法1: 其实错误提示中已经给出了解决办法了 关闭安全模式: Edit --> Preferences --> SQ

What is a partition key?

DynamoDB supports two types of primary keys: Partition key: A simple primary key, composed of one attribute known as the partition key. Attributes in DynamoDB are similar in many ways to fields or columns in other database systems. Partition key and