【问题场景】

在执行数据库操作时,若遇到如下错误提示:

YAS-02024 lock wait timeout, wait time 0 milliseconds

说明当前操作因锁等待时间超出限制而失败。

【原因解析】

YashanDB 默认锁等待时间设置为 0 秒,意味着若资源被占用,数据库不会等待直接报错。因此,在并发较高或操作依赖资源未及时释放的场景下,极易触发此类错误。

【处理方法】

延长锁等待时间

可通过以下语句手动调整等待时间(单位为秒):

alter system set DDL_LOCK_TIMEOUT = 300;
修改后请确保变更已同步至 config/yasdb.ini 配置文件中。

排查并终止占用锁资源的会话

查询当前锁信息:

select * from v$lock;
获取锁会话的 SID 和 SERIAL:


select * from dv$session where sid = xxx;

手动杀掉问题会话:
`
alter system kill session 'SID,SERIAL';`
如需批量终止锁定会话:

select 'ALTER SYSTEM kill SESSION '''||SID||','||SERIAL# || ''';'
from v$session t1. v$locked_object t2
where t1.sid = t2.SESSION_ID;

【适用版本】

所有版本均适用此处理方法。


数据库砖家
1 声望0 粉丝