生产环境有套oracle10.2.0.4的库迁移到12.2.0.1版本,采用expdp/impdp方式,这样的操作这几年其实做了挺多次的。
早上开发跟我说有张表不能dml操作,报错ora-12081:update operation not allowed on table xx.xxx
oracle在11g版本支持了将表改为只读状态即alter table table_name read only;
但生产环境倒是头一次遇到,而且是expdp/impdp的情况下。
先将表改为读写:alter table table_name read write;
然后排查原因。查看原库,该表正常,可读写。然后拿之前的备份的dump重新导入该表,分别导入到oracle11.2.0.4, oracle12.1.0.2, oracle19.7以及当前使用的oracle12.2.0.1版本,发现只有在12.2.0.1这个版本,该表导入后变成了只读状态,其他版本皆正常。
在MOS上找了一圈,没有相关bug文档,只看到一个讨论,也是从10g迁移至oracle12.2.0.1的,出现了ora-12081,但也没有结论。
个人推测,大概率是一个小众的bug了,而且遇到的概率也比较低。一方面以前也迁移过不少10g的库到oracle12.2.0.1,没有遇到该问题。另一方面,此次迁移有700多张表,只有一张表出现这个情况。
以后再做相关迁移的时候,记得检查下表的读写情况:
select owner,table_name,read_only from dba_tables where read_only=’YES’;
—————————————————————————————–
世间事,真是奇奇怪怪
版权声明:本文为killvoon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。