ODC导出存储过程失败。

【 使用环境 】生产环境
【 OB or 其他组件 】OceanBase Developer Center
【 使用版本 】版本号:windows版本 4.0.0 Release Date: 2022-11-01
【问题描述】导出存储过程失败
【复现路径】导出结构》存储过程》失败
【问题现象及影响】存储过程都是用户租户创建的,导出的时候必须让我填系统租户,失败是因为是系统租户看不到用户租户的存储过程吗。

【附件】
2023-02-03 10:42:14 [INFO]
12 Finished Tasks: 1 Running Tasks: 0 Progress: 100.00%
13 2023-02-03 10:42:14 [INFO]
14
15 All Dump Tasks Finished:
16
17 ----------------------------------------------------------------------------------------------------------------------------
18 No.# | Type | Name | Count | Status
19 ----------------------------------------------------------------------------------------------------------------------------
20
21
22 Nothing was done!
23
24 ----------------------------------------------------------------------------------------------------------------------------
25
26 Total Count: 0 End Time: 2023-02-03 10:42:14
27
28
29 2023-02-03 10:42:14 [WARN] Failed to execute data transfer task
30 java.lang.IllegalStateException: data_bi.null: tenant is marked non-null but is null
31 at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.syncWaitFinished(BaseDataTransferTask.java:160) ~[classes!/:?]
32 at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.call(BaseDataTransferTask.java:112) ~[classes!/:?]
33 at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.call(BaseDataTransferTask.java:33) ~[classes!/:?]
34 at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_292]
35 at com.oceanbase.odc.common.trace.TraceDecorator.lambda$decorate$0(TraceDecorator.java:25) ~[odc-common-4.0.0-test_20221101.jar!/:?]
36 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
37 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
38 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]

请问其他的环境更详细的信息么? 比如server的版本,observer对应的日志栈?


另外这个tenant你最终配的是什么租户,信息应该是提示说你有选择租户,但这个租户应该是无效的。
你可以尝试下在sys租户下弄个存储过程导出试试,能减少排查的方向

我是用用户租户建立的连接.然后导出的填写了系统租户加速导出,但是导出是失败的,这些存储过程都是用户建立的,系统租户是不是因为看不到用户租户建立的存储过程,所以报错了? 这个地方是流程有问题吗?



数据库 , 存储过程是用户租户创建的 系统租户是看不到数据库,包括这些存储过程的 所以页面上都不能选择 所以不能导出

把ODC的程序日志也发一下

2023-02-03 11:04:50 [INFO] Load jdbc driver class: “com.oceanbase.jdbc.Driver” finished
2023-02-03 11:04:50 [INFO] The manifest file: “C:\Users\Administrator\AppData\Roaming\odc\data\data_transfer\165\data\MANIFEST.bin” has been saved
2023-02-03 11:04:56 [INFO] Begin transferring schema
2023-02-03 11:04:56 [INFO] Generate 1 dump tasks finished. Total Elapsed: 52.40 μs
2023-02-03 11:04:56 [INFO] Start 1 schema dump threads finished
2023-02-03 11:04:56 [INFO] Build direct com.alibaba.druid.pool.DruidDataSource finished
2023-02-03 11:04:56 [INFO] Build proxyro com.alibaba.druid.pool.DruidDataSource finished
2023-02-03 11:04:56 [INFO] Close connection count: 1 of the DataSource. Key: 18_228_19_203_11532_1168972951_data_bi
2023-02-03 11:04:56 [INFO] Close connection count: 0 of the DataSource. Key: 18_228_19_203_11532_167438737_oceanbase
2023-02-03 11:04:56 [INFO] shutdown task context finished
2023-02-03 11:04:56 [INFO]
Finished Tasks: 1 Running Tasks: 0 Progress: 100.00%
2023-02-03 11:04:56 [INFO]

All Dump Tasks Finished:


    No.#        |        Type        |             Name             |            Count             |       Status       

                                            Nothing was done!

Total Count: 0 End Time: 2023-02-03 11:04:56

2023-02-03 11:04:56 [WARN] Failed to execute data transfer task
java.lang.IllegalStateException: data_bi.null: tenant is marked non-null but is null
at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.syncWaitFinished(BaseDataTransferTask.java:160) ~[classes!/:?]
at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.call(BaseDataTransferTask.java:112) ~[classes!/:?]
at com.oceanbase.odc.service.datatransfer.task.BaseDataTransferTask.call(BaseDataTransferTask.java:33) ~[classes!/:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_292]
at com.oceanbase.odc.common.trace.TraceDecorator.lambda$decorate$0(TraceDecorator.java:25) ~[odc-common-4.0.0-test_20221101.jar!/:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]

server 5.7.25-OceanBase_CE-v4.0.0.0

麻烦提供下 ODC 程序日志,右上角的帮助 - 意见反馈 - Generate information package

另外 存储过程 的 SQL 方便提供下吗?

建立的空的存储过程.

CREATE DEFINER = root@% PROCEDURE data_bi.test
()
BEGIN
#Routine body goes here…

END

odc_feedback_1675404516753.zip (2.9 MB)

ODC 4.0 不支持导出 OB 4.0,ODC 4.1支持

可以先暂时使用obdumper 4.0导出