ddl_lock_timeout允许DDL等待DML操作结束。ddl_lock_timeout可以手工设置等待的时间。
不过这个操作的风险对于存在大并发DML操作的表是有很大风险的。
DDL操作基本都在表级别获得类型为6的TM表锁,这个锁的级别为最高级别。
因为ORACEL里查询是不需要对表增加TM锁的,所以不会导致查询HANG起,但是其他的操作,如DML操作,DDL操作,都会HANG起。
ORACLE起初设计的如果表上存在DML操作,那么DDL的时候立马返回一个错误“资源正忙”,最大的原因可能也是考虑到如果不立即返回错误,任由DDL的会话等待高级锁,那么可能会引发灾难,因为锁的排队性,会导致其他会话被DDL的会话HANG住,如果又是大并发,那么瞬间可能撑爆你应用的连接池。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-714222/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-714222/