日期:2014-05-17  浏览次数:21031 次

oracle 中 lock table的问题
我在Oracle10.2.0.4版本中使用以下语句锁表:
lock table tbl_lock in exclusive mode nowait 正常

加个时间
lock table tbl_lock in exclusive mode wait 5
就会报错 ORA-00933:SqlCommand not properly ended;

但是在Oracle11G中以上2个语句都可以顺利运行,这是什么道理?

难道oracle10g只允许nowait的写法?我查了lock的语法,从来没有提到过还有版本限制。

------解决方案--------------------
提示SQL没正确结束,如果语句和执行工具都一样,那应该是版本的问题了。。。
------解决方案--------------------
沿用别人的话:
在Oracle 11前的版本中,当发出一个LOCK TABLE命令时,如果正好有其他session对这个表持有了锁,这时会无限期的等待或是直接不等待(NOWAIT clause )返回一个错误。在11g中,新增的wait option允许一个lock table操作等待一段时间去获取需要的lock直到timeout返回错误,如果在wait的时间段内获得了需要的lock,命令将成功执行。

可参考博文
http://blog.itpub.net/post/11835/474251/