【YashanDB知識庫】YAS-02024 lock wait timeout, wait time 0 milliseconds

YashanDB發表於2024-07-11

【標題】錯誤碼處理

【問題分類】鎖等待超時

【關鍵字】YAS-02024

【問題描述】執行語句時候,因鎖等待超時執行語句失敗

【問題原因分析】資料庫預設鎖等待時間為0秒,如果執行語句存在鎖等待過長會執行失敗

【解決/規避方法】

1、調整鎖等待的時間

SQL
alter system set DDL_LOCK_TIMEOUT = x;
單位是s, 預設是0, 修改為300
確認持久化到config/yasdb.ini檔案

2、找出導致鎖等待的session ,並根據實際情況確認能不能先使其退出

  • .查dv$lock確定sid
SQL
select * from v$lock;
  • 再關聯dv$session確定serial
SQL
alter system kill session '30,918';
  • 再執行alter system kill session 命令kill引起鎖超時的會話
Shell
SQLSTATE[HY000]:General error:202 [YashanDB][ODBC Driver][Yas][YAS-00202]invalid string,reason:invalid indicator value
  • 如果會話比較多,可以使用如下語句批次殺死執行緒
SQL
select 'ALTER SYSTEM kill SESSION '''||SID||','||SERIAL# || '''' || ';' from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID

--查詢哪些表鎖死 記錄下SID和serial#

殺掉對應的會話程序

【影響範圍】所有版本

【修復版本】無

相關文章