java程序写的是merge语句。在生产环境执行良好估计半年时间没有问题。
最近发生问题:发现有的语句可以插入,有的无法插入,程序一直卡在那里然后超时600秒退出。
为了查明原因,做了如下操作
一、将该merge语句耗下来放到plsql里面执行,也是一致卡死在那里。将merge转成insert语句,依旧无法执行。
二、查看该表格是否被死锁,没有发现该表格被锁。
三、查看表空间是否满,发现表空间剩余很多。
四、发现有该表格数据被行锁,会话一直处于等待状态。
五、kill该会话,继续执行语句。依旧卡死会话处于等待状态。上网查了下原因。有的说是表空间碎片导致。由于不知道具体操作。所以为该表格从新划分了表空间。
当时这条merge语句才可以执行。
但是新问题是又有新的merge不能插入。注明:该表格主键为联合主键。进行merge的时候on条件是根据两个主键执行。以前没有发生过这种事情,还是第一次遇到。表格没被锁,表空间有剩余。问题就是某些语句无法执行,但有些语句就可以执行。求解。
主键的类型忘了。