常见错误解决
本节整理了数据迁移工具的常见错误和解决方法.
增量同步排错常用命令
info extract extz,detail
查看提取进程详细信息info extract extz,showch
查看提取进程读写位置信息
send extract extz,status
获取提取进程详细状态
Current status 有以下状态:
- In recovery[1] 提取正在恢复到其事务日志中的检查点.通常在读取redo失败时为此状态
- In recovery[2] 提取是恢复从其检查点到trail文件结束.通常在写入tail文件异常时为此状态
- Recovery complete 恢复完成,将恢复正常处理.正常的状态
send extract extz,forcestop
强制结束提取进程,如仍然不能结束,可以使用 kill -9 PID
杀死进程send extract extz,showtrans
查看提取进程正在处理的事务信息,如没有正在处理的事务则输出 No transactions found.
stop extract extz
停止提取进程delete extract extz
删除提取进程
错误信息
ERROR OGG-00770 Failed to connect to MySQL database engine for HOST 192.168.4.11, DATABASE root, USER root, PORT 3309.
原因
未找到和账号同名的数据库,连接检查失败.
解决
创建和账号同名的数据库.
错误信息
ERROR OGG-06551 Could not translate host name x86-11 into an Internet address.
原因
不能解析主机名
解决
echo '127.0.0.1 主机名' >> /etc/hosts
添加主机名解析错误信息
FATAL: _extract_data() ORA-01466: unable to read data - table definition has changed (DBD ERROR: error possibly near <*> indicator at char 157 in 'SELECT ...... AS OF SCN 15959730 a')
原因
表结构发生了变更
解决
清除目标库中的checkpointtab_lox和checkpointtab表,然后从头开始执行程序错误信息
Error: cannot fork: Cannot allocate memorytotal rows (1.6%) - (492 sec., avg: 11 recs/sec), EDC_REPORTSHEETDS in progress.
原因
内存不足解决
减少 JOBS 和 DATA_LIMIT 参数值或增加内存错误信息
ogg抽取状态正常,但获取不到新数据。ditdat 目录下的trail文件也没有增长
执行
send EXTRACT extz,status
SCN始终是0.0GGSCI (x86-13) 2> info extz,showch Read Checkpoint #1 Oracle Redo Log Startup Checkpoint (starting position in the data source): Timestamp: 2023-08-06 14:06:18.000000 SCN: 0.0 (0) Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Timestamp: 2023-08-06 14:06:18.000000 SCN: 0.0 (0) Current Checkpoint (position of last record read in the data source): Timestamp: 2023-08-06 14:06:18.000000 SCN: 0.0 (0)
执行
send EXTRACT extz,status
状态始终是Current status: In recovery[1]: At EOF
GGSCI (x86-13) 1> send extz,status Sending STATUS request to EXTRACT EXTZ ... EXTRACT EXTZ (PID 115) Current status: In recovery[1]: At EOF Current read position: Redo thread #: 1 Sequence #: 0 RBA: 0 Timestamp: 2023-08-06 14:06:18.000000 SCN: 0.0 (0) Current write position: Sequence #: 1 RBA: 1462 Timestamp: 2023-08-06 14:20:54.880333 Extract Trail: ./dirdat/ea
原因
SCN: 0.0 (0) 说明SCN获取不正常In recovery[1]: At EOF
说明接收redo日志结束
可能是ogg端和源端系统时间不一致,导致获取不到SCN信息和新的redo日志解决
检查客户端和服务端时间是否一致错误信息
ERROR OGG-00685 begin time Aug 6, 2023 5:46:44 PM prior to oldest log in log history. Last SQL executed <SELECT MAX(sequence#) FROM (select sequ ence# FROM v$log_history WHERE first_time < TO_DATE(:begin_time,'YYYY-MM-DD HH24:MI:SS') AND RESETLOGS_CHANGE# LIKE :resetlogs_change_number AND thread# = :ora_thread ORDER BY first_change# DESC)>.
原因
其中某些初始日志位置在初始化时未解析,仅当在创建数据库之后且在启动提取之前未发生第一次日志切换时才会发生这种情况
解决
有oracle端执行ALTER SYSTEM SWITCH LOGFILE;
日志切换
然后start extz11
重新启动提取进程其他原因及解决方法: 如果 RAC 中的某些节点不活动,OGG 在尝试查找这些非活动节点的重做日志时将遇到此错误。
这种情况下的解决方案是从 GG 中排除那些不活跃的节点,例如THREADOPTIONS PROCESSTHREADS SELECT 1
在extract 抽取文件中添加THREADOPTIONS PROCESSTHREADS SELECT 1
这一行参数以后错误信息
ERROR OGG-00423 Could not find definition for TEST.t1
原因
没找到表的定义
解决
在目标端应用进程repz添加ASSUMETARGETDEFS
告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS
参数指定表定义文件。错误信息
ERROR OGG-05310 Oracle GoldenGate does not support [Unknown]. Supported versions are SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019.
原因
版本不兼容
解决
目前只支持 SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019