【標題】錯誤碼處理
【問題分類】鎖等待超時
【關鍵字】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#
殺掉對應的會話程序
【影響範圍】所有版本
【修復版本】無