ORA-14402: 更新分区关键字列将导致分区的更改

OGG早上停了,看了log报错:

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

ORA-14402: 更新分区关键字列将导致分区的更改

 

网上搜索,总结一下:

1、默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,

如果有对分区字段行进update,就会报错ORA-14402。

2、解决办法:开启表的行转移功能


alter table XX enable row movement

alter table XX disable row movement(修改回来的语句)


这样在update以后,会在老分区删除数据,新分区插入数据。

 

3、enable row movement会改变rowid。

 

扩展rowid

  扩展rowid是oracle8i之后的版本中引入的,其结构如下:

  数据对象号+相对文件号+块号+行号

存储(32bit) (10bit)(22bit)(16bit)=10B

显示   6              3             6            3

一个扩展rowid需要10B的空间存储用18个字符显示其组成如下

 1、数据对象号:唯一标识数据库对象的数据对象号,被赋予每一个对象
    2、相对文件号:对同一个表空间中每一个文件都是唯一的,标识同一个表空间中的不同数据文件
    3、块号:为相对文件中包含数据行的数据块的位置
    4、行号:标识了块头中行目录的位置

扩展rowid的显示是用一种64位的编码,使用的显示字符为A~Z a~z 0~9和+、/总共64个字符

oracle使用rowid定位数据行的机制:

 1、使用数据对象号找到表空间
    2、使用相对文件号找到存储的数据文件
    3、使用块号找到存储数据行的数据块
    4、使用行号找到行目录项,然后使用行目录项就可以定位数据行的起始地址

 

 

 

 

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值