oracle 11.2.0.4 使用ogg迁移数据到 tidb 4.0.2,出现OGG-00868 Query to retrieve Octect Length Failed

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.2
  • 【问题描述】:oracle 11.2.0.4 使用ogg迁移数据到 tidb 4.0.2,ogg for oracle version 12.3.0.1.4
    ogg for MySQL-compatible DBs version 12.3.0.1.5
    使用初始化加载方式,oracle表无主键,tidb 建表时无显式主键
    ./replicat paramfile ./dirprm/init_mysql.prm reportfile ./dirrpt/init_mysql.rpt -p initialdataload
    数据队列已经接收在本地目录了,init_mysql.prm 内容如下
    SPECIALRUN
    END RUNTIME
    targetdb TEST@10.9.31.107:4000 userid ogg password ggs
    EXTFILE ./dirdat/il
    REPORTCOUNT EVERY 1 MINUTES, RATE
    SQLEXEC “set tidb_constraint_check_in_place=1”
    handlecollisions
    MAXTRANSOPS 10000
    MAP TIDB.HAI_APRNOT_INFO, TARGET TEST.hai_aprnot_info,keycols(ID);
    MAP TIDB.HAI_DIAREC_INFO, TARGET TEST.hai_diarec_info,keycols(ID);
    MAP TIDB.HAI_OPEREC_INFO, TARGET TEST.hai_operec_info,keycols(ID);

报错,检查init_mysql.rpt ,出错内容如下
2020-07-22 20:14:22 INFO OGG-02243 Opened trail file /home/ggs_mysql/dirdat/il000000 at 2020-07-22 20:14:22.864437.

2020-07-22 20:14:22 INFO OGG-06505 MAP resolved (entry TIDB.HAI_APRNOT_INFO): MAP “TIDB”.“HAI_APRNOT_INFO”, TARGET “TEST”.“hai_aprnot_info”,keycols(ID).

Source Context :
SourceModule : [ggdb.mysql.db]
SourceID : [/scratch/aime/adestore/views/aime_adc4150325/oggcore/OpenSys/src/gglib/ggdbmysql/dbmysql.c]
SourceMethod : [get_target_col_specs]
SourceLine : [2187]
ThreadBacktrace : [20] elements
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
: [/lib64/libc.so.6(__libc_start_main)]
: [/lib64/libc.so.6(__libc_start_main)]
: [ : [/lib64/libc.so.6(_libc_stac_stac)]
]
: []
: [::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggmetad<91>^A]
: [::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggmetad<91>^A]
: [::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggmetad<91>^A]
: [::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggmetad<91>^A]
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0x140) [0x7ea460]]
: [/lib64/libc.so.6(__libc_start_main)]
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
: [_ZN3ggs5gglib14MultiThreading10MainThread3RunEiPa]
: [./replicat()]
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0x140) [0x7ea460]]
: [./replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
: [./replicat(main)]
: [/lib64/libc.so.6(__libc_start_main)]
: [./replicat()]

2020-07-22 20:14:22 ERROR OGG-00868 Query to retrieve Octect Length Failed for database=‘TEST’ AND table=‘hai_aprnot_info’ AND column=0.


  •               ** Run Time Statistics **                         *
    

Reading /home/ggs_mysql/dirdat/il000000, current RBA 15246, 0 records, m_file_seqno = 0, m_file_rba = 15246

Report at 2020-07-22 20:14:22 (activity since 2020-07-22 20:14:22)

No records were replicated.

Last log location read:
FILE: /home/ggs_mysql/dirdat/il000000
SEQNO: 0
RBA: 15246
TIMESTAMP: 2020-07-22 14:35:58.702732
EOF: NO
READERR: 0

2020-07-22 20:14:22 ERROR OGG-01668 PROCESS ABENDING.

~

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

看下 tidb.log 中对应时间点是否有详细的报错

您好,可以参考下此贴 oracle to tidb OGG 配置lower-case-table-names = 1 参数后无法区分大小写 ,是否也是需要把表名都换为大写才行,如果也是这个问题,可以按照帖子的回答,添加 lower-case-table-names = 1 参数试试,多谢。

已经设置了 lower-case-table-names = 1 ,否则没到这步就出错了。
目前高度怀疑是因为没设置主键导致!

你可以拿该表结构到 tidb 中执行下,看看是否有报错,

上面 tidb log 可否提供下

1:这个参数其实是无法区分大小写的,只是为了解决启动ogg的时候的一个错误。
2:tidb下的表必须要有primary key(),要不然也会报错。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。