码迷,mobileinhere.cn
首页 > 其他好文 > 详细

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

时间:2018-07-31 19:35:43      阅读:12      评论:0      收藏:0      [点我收藏+]

标签:oracle数据库   roce   pool   输入   from   不为   next   出现   cluster   

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

【解决】: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)   指示表是否已被删除并处于回收站(是)或否(否)中;分区表为空值。


       

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

标签:oracle数据库   roce   pool   输入   from   不为   next   出现   cluster   

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

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
2014 mobileinhere.cn 版权所有 京icp备13008772号-2
华人娱乐注册