OCEANBASE存在过程执行未结束原因如何查看

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.3
【问题描述】存储过程执行未结束,查看没有正在执行的SQL,如何查看存储过程是否被中断及原因

先用诊断工具obdiag分析一下日志看看:https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491175

可以查一下information_schema.events里面有没有。或者给存储过程自定义一下日志输出记录:如创建个日志表。

步骤 1: 创建日志表

首先,我们需要创建一个表来存储日志信息。例如,可以创建一个名为 LogTable 的表:

CREATE TABLE LogTable (
    LogID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    LogDate DATETIME NOT NULL DEFAULT GETDATE(),
    LogLevel VARCHAR(50) NOT NULL,
    LogMessage NVARCHAR(MAX) NOT NULL
);

步骤 2: 创建存储过程

然后,创建一个存储过程,用于将日志信息插入到 LogTable 表中:

CREATE PROCEDURE InsertLog
    @LogLevel VARCHAR(50),
    @LogMessage NVARCHAR(MAX)
AS
BEGIN
    INSERT INTO LogTable (LogLevel, LogMessage)
    VALUES (@LogLevel, @LogMessage);
END;

步骤 3: 调用存储过程记录日志

现在,你可以在其他存储过程中或应用程序中调用 InsertLog 存储过程来记录日志。

示例:记录错误日志

CREATE PROCEDURE ExampleProcedure
AS
BEGIN
    BEGIN TRY
        -- 这里是你的业务逻辑
        -- 例如,可能会发生错误的操作
        DECLARE @x INT = 1 / 0;  -- 故意除以零,触发错误
    END TRY
    BEGIN CATCH
        -- 在这里记录错误日志
        EXEC InsertLog @LogLevel = 'Error', @LogMessage = ERROR_MESSAGE();
    END CATCH;
END;

存储过程有记录日志,没有异常,使用的LINUX定时调起的,执行到一半调用过程的会话就没有了

日志有么 发一份看看

你好,目前问题还存在么 发一份日志看看

问题解决了,原因是千万级别的会话临时表很占内存,OBE-00600 -4013内存不足闪退了,这个报错正常异常不抛出所以之前未发现原因