本文为您介绍如何处理 OceanBase 迁移服务(OceanBase Migration Service,OMS)全量数据迁移时,报错为 ORA-01555 的问题。
适用版本
适用于 OMS V1.4.x,以及 Oracle 数据库 11g 版本。
问题描述
通过 OMS 从 Oracle 11g 全量迁移数据至 OceanBase 数据库的 Oracle 模式时报错,错误码为 ORA-01555,执行的 SQL 语句及错误信息如下:
SQL 语句
SELECT DATA_OBJECT_ID, RELATIVE_FNO, BLOCK_NUMBER, ROW_NUMBER FROM ( SELECT DATA_OBJECT_ID, RELATIVE_FNO, BLOCK_NUMBER, ROW_NUMBER, BLOCKS FROM ( SELECT OBJ.DATA_OBJECT_ID AS DATA_OBJECT_ID, EXT.RELATIVE_FNO AS RELATIVE_FNO, EXT.BLOCK_ID AS BLOCK_NUMBER, 0 AS ROW_NUMBER, EXT.BLOCKS AS BLOCKS FROM DBA_EXTENTS EXT, DBA_OBJECTS OBJ WHERE (EXT.OWNER = 'XXX' AND EXT.OWNER = OBJ.OWNER AND EXT.SEGMENT_NAME = 'XXX' AND EXT.SEGMENT_NAME = OBJ.OBJECT_NAME AND EXT.PARTITION_NAME = OBJ.SUBOBJECT_NAME) ) ORDER BY DATA_OBJECT_ID, RELATIVE_FNO, BLOCK_NUMBER ) WHERE ROWNUM <= 1错误信息
ORA-01555:snapshot too old。
问题原因
报错为 ORA-01555 表示读取器读取所需的回滚记录时,被其它编辑器覆盖。
解决方法
在源 Oracle 数据库执行下述命令,修改 Oracle 源端的参数
_FIX_CONTROL。oracle> ALTER SYSTEM SET "_FIX_CONTROL" = "11814428:0" scope=both sid='*';修改参数后,重启 Oracle 实例即可生效。
重新运行数据迁移任务。