> 技术文档 > KFS同步服务离线提示ORA-00972: 标识符过长

KFS同步服务离线提示ORA-00972: 标识符过长

问题描述
巡检过程中发现KES V8R6 到Oracle11g 目标端同步服务离线 state=OFFLINE:ERROR,
[kfs@xzsbk ~]$ fsrepctl services
Processing services command…
NAME VALUE


appliedLastSeqno: -1
appliedLatency : -1.0
role : slave
serviceName : target_oracle_3112
serviceType : unknown
started : true
state : OFFLINE:ERROR
Finished services command…
分析过程
查看详细状态
重点看: pendingErrorSeqno : 385598
pendingError
pendingExceptionMessage
state: OFFLINE:ERROR
[kfs@xzsbk ~]$ fsrepctl -service target_oracle_3112 status
Processing status command…
NAME VALUE


appliedLastEventId : NONE
appliedLastSeqno : -1
appliedLatency : -1.0
autoRecoveryEnabled : true
autoRecoveryTotal : 100
channels : -1
clusterName : target_oracle_3112
currentEventId : NONE
currentTimeMillis : 1753422083939
dataServerHost : xzsbk
extensions :
host : xzsbk
latestEpochNumber : -1
masterConnectUri : kufl://kfs:4112/
masterListenUri : kufl://xzsbk:3112/
maximumStoredSeqNo : -1
minimumStoredSeqNo : -1
offlineRequests : NONE
pendingError : Event application failed: seqno=385598 fragno=0 message=com.kingbase.flysync.replicator.applier.ApplierException: java.sql.BatchUpdateException: 批处理出现错误: ORA-00972: 标识符过长
pendingErrorCode : NONE
pendingErrorEventId : kb:1804442737704:1804547877560
pendingErrorSeqno : 385598
pendingExceptionMessage: com.kingbase.flysync.replicator.applier.ApplierException: java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长
pipelineSource : UNKNOWN
relativeLatency : -1.0
resourcePrecedence : 99
rmiPort : 11000
role : slave
seqnoType : java.lang.Long
serviceName : target_oracle_3112
serviceType : unknown
simpleServiceName : target_oracle_3112
siteName : default
sourceId : xzsbk
state : OFFLINE:ERROR
timeInStateSeconds : 65376.814
timezone : GMT+08:00
transitioningTo :
uptimeSeconds : 5626972.117
useSSLConnection : false
version : Kingbase FlySync V002R002C004PS002
Finished status command…
查看日志
重点看 Event application failed: seqno=385598 fragno=0 message= 部分信息,定位到报错的序号
2025-07-24 19:31:47 | | [target_oracle_3112 - pool-2-thread-1-q-to-dbms-0] ERROR pipeline.SingleThreadStageTask Event application failed: seqno=385598 fragno=0 message=com.kingbase.flysync.replicator.applier.ApplierException: java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长

com.kingbase.flysync.replicator.applier.ApplierException: com.kingbase.flysync.replicator.applier.ApplierException: java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长

at com.kingbase.flysync.replicator.applier.JdbcApplier.apply(JdbcApplier.java:2847)at com.kingbase.flysync.replicator.applier.ApplierWrapper.apply(ApplierWrapper.java:99)at com.kingbase.flysync.replicator.pipeline.SingleThreadStageTask.apply(SingleThreadStageTask.java:963)at com.kingbase.flysync.replicator.pipeline.SingleThreadStageTask.runTask(SingleThreadStageTask.java:646)at com.kingbase.flysync.replicator.pipeline.SingleThreadStageTask.run(SingleThreadStageTask.java:206)at java.lang.Thread.run(Thread.java:750)

Caused by: com.kingbase.flysync.replicator.applier.ApplierException: java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长

at com.kingbase.flysync.replicator.applier.JdbcApplier.applyStatementData(JdbcApplier.java:982)at com.kingbase.flysync.replicator.applier.OracleApplier.applyStatementData(OracleApplier.java:1319)at com.kingbase.flysync.replicator.applier.JdbcApplier.apply(JdbcApplier.java:2604)... 5 more

Caused by: java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长

at oracle.jdbc.driver.OracleStatement.executeLargeBatch(OracleStatement.java:4659)at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:4527)at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:237)at com.kingbase.flysync.replicator.applier.JdbcApplier.applyStatementData(JdbcApplier.java:908)... 7 more

查看序号为385598对应的SQL文件

[kfs@xzsbk ~]$ kufl list -seqno 385598
SEQ# = 385598 / FRAG# = 0 (last frag)

  • TIME = 2025-07-24 18:48:01.413
  • EPOCH# = 324138
  • EVENTID = kb:1804442737704:1804547877560
  • SOURCEID = kesbzk
  • METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=#UNKNOWN;bidi_unsafe=true;service=source_kesv8r6_3112;shard=#UNKNOWN]
  • TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent
  • OPTIONS = []
  • OPTIONS = [TG_TAG = CREATE INDEX, TABLE = NULL]
  • SQL(0) =
  • SCHEMA = SJTBK
  • DDL = CREATE UNIQUE INDEX idx_unique_e_lic_ncertificate_xs1_licid
    ON e_lic_ncertificate_xs1(licid);
    数据库中查索引名称长度:
    bzk=# select length(‘idx_unique_e_lic_ncertificate_xs1_licid’);
    length

 39

(1 row)
解决办法
由于e_lic_ncertificate_xs1 表不在该链路同步列表中,所以准备跳过该SQL对应的序号进行同步
–停止同步服务
fsrepctl -service target_oracle_3112 offline

–状态ONLINE前跳过指定的seqno
fsrepctl -service target_oracle_3112 online -skip-seqno 385598
必须先将同步服务offline不然启动同步服务报以下错误:
[kfs@xzsbk ~]$ fsrepctl -service target_oracle_3112 online -skip-seqno 385598

Operation failed: Online operation failed (Operation irrelevant in current state)
KFS同步服务离线提示ORA-00972: 标识符过长

南宁招聘求职信息