obdumper导出clob字段报错

【 使用环境 】测试环境
【 使用版本 】OceanBase 4.2.1.8 obdumper 4.3.5
【问题描述】 obdumper时遇到的问题。现象是导出过程遇到一张表导出失败,经过排查由该表中的clob类型的字段"C_CONTENT"引起(该字段中包含了富文本内容,小于100kb),导出时排除这个字段即可正常导出。
导出命令:
./obdumper -hxx.xx.xx.xx -P2883 -uOB@ob#testob -pXXXX -DOB --csv --table ‘*’ -f/data/export/20260226/obdcwebcsv --thread 1 --skip-check-dir
【日志】
[ERROR] Dump failed. SQL: SELECT “C_CONTENT_ID”,“D_ACTIVATION_DATE”,“D_EXPIRATION_DATE”,“D_PUBLISH_DATE”,“C_STATE”,“C_LEVEL”,“C_SOURCE”,“C_SUMMARY”,“C_CONTENT” FROM “WN_CONTENT”. Range: [–]. java.sql.SQLNonTransientConnectionException: (conn=539754) Connection timed out.

Suppressed: java.sql.SQLTransientConnectionException: ORA-00600: internal error code, arguments: -4012, Timeout, query has reached the maximum query timeout: 300000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again.
【尝试方案】
尝试调大 sesssion.conf.json 中的 ob_query_timeout, ob_trx_timeout, socketTimeout, connectTimeout 均无效。

2 个赞

看着报错的信息不是社区版呀
你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

1 个赞

推荐解决方案:使用 --exclude-columns 明确排除 CLOB 字段
您当前的导出命令使用了 --table ‘*’ 导出全部表,但未对字段做筛选。‌最直接、最安全的解决方式是显式排除问题字段‌,避免影响其他表的正常导出。

:white_check_mark: 修正后的导出命令:
./obdumper -hxx.xx.xx.xx -P2883 -uOB@ob#testob -pXXXX -DOB --csv --table ‘*’ -f/data/export/20260226/obdcwebcsv --thread 1 --skip-check-dir --exclude-columns C_CONTENT
:warning: 注意:–exclude-columns 参数作用于‌所有表‌,若仅需排除特定表中的 C_CONTENT 字段,请使用更精确的 --table 指定表名,例如:
–table ‘your_schema.your_table’ --exclude-columns C_CONTENT

进阶方案:按表粒度控制导出(推荐生产环境使用)
若仅少数表含 CLOB 字段,建议‌分表导出‌,避免全局排除影响其他表结构完整性:

  1. 先导出不含 CLOB 的表:
    ./obdumper -hxx.xx.xx.xx -P2883 -uOB@ob#testob -pXXXX -DOB --csv --table ‘table1,table2,table3’ -f/data/export/20260226/obdcwebcsv --thread 1 --skip-check-dir

  2. 单独导出含 CLOB 的表,改用 --format json 或 --format sql:
    ./obdumper -hxx.xx.xx.xx -P2883 -uOB@ob#testob -pXXXX -DOB --table ‘your_table_with_clob’ -f/data/export/20260226/obdcwebcsv --format json --thread 1 --skip-check-dir
    JSON 格式能完整保留 CLOB 内容的结构与编码,避免 CSV 的字段分隔符冲突问题。后续可通过脚本转换为结构化数据。

:mag: 补充建议:检查并优化 CLOB 内容
虽然您确认内容小于100KB,但仍建议对 C_CONTENT 字段做一次内容抽样分析:
SELECT LENGTH(C_CONTENT), SUBSTR(C_CONTENT, 1, 200) AS sample
FROM your_table_with_clob
WHERE LENGTH(C_CONTENT) > 0

1 个赞

6666

您好,感谢您的耐心解答。

  1. 已将不含 CLOB 的表成功导出。
  2. 我尝试了您的建议“在单独导出含 CLOB 的表,改用 --format json 或 --format sql”,报错显示obdumper v4.3.5 版本中没有 “–format” 这个参数。
  3. 已尝试将导出格式改为 .par 也产生同样的报错信息。
  4. CLOB内容为富文本格式,会包含例如:
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 218.95pt; TEXT-INDENT: -195pt; LINE-HEIGHT: 150%; TEXT-ALIGN: center; mso-para-margin-left: 2.28gd; mso-char-indent-count: -19.5" align=center><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT color=#000000>&nbsp;<IMG src="http://www.xxx.com/data/20090928094052DSC03601.jpg">
</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 218.95pt; TEXT-INDENT: -195pt; LINE-HEIGHT: 150%; TEXT-ALIGN: right; mso-para-margin-left: 2.28gd; mso-char-indent-count: -19.5" align=right><FONT color=#000000><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">——玛格丽特·米德<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></FONT></P>

请问是否可能因为富文本中含有某些特殊字符使其导出失败?