今天遇见一怪事:发现我(使用一个带dba权限的用户)在做一个简单的update的时候(语句:updata tab1 set tab1.col1=4 where tab1.id='32412341')出现长时间等待.
发现警告日志有600错误:"ORA-00600: internal error code, arguments: [kjusuc:!lhandle], [0x70000019B2D0E28], [], [], [], [], [], []",然后就开始检查锁(语句1:select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))
;语句2:select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object);
)结果语句1没有结果,语句2显示一条记录(SQL> /
USERNAME LOCKWAIT STATUS
------------------------------ ---------------- --------
MACHINE
----------------------------------------------------------------
PROGRAM
------------------------------------------------
CHENMING INACTIVE
WORKGROUP\D8BGBX1X
plsqldev.exe
)
经过确认用户"CHENMING"对该数据库的数据只有select权限.该用户确实有一条针对tab1的查询语句,但该语句已经执行结束.
问题就出来了:为什么我一个带dba权限的用户在对表数据进行修改时,会被另一个用户的select语句给锁死(共享锁),并造成系统600错误?实在不明白.
保险起见,重新启动数据库吧,等待下一次600.热烈欢迎600~~~~~~~~~~~
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/38006/viewspace-663096/
,如需转载,请注明出处,否则将追究法律责任。